diff --git a/layers/+intl/keyboard-layout/README.org b/layers/+intl/keyboard-layout/README.org index f3e8b4da2..d9d7f90c5 100644 --- a/layers/+intl/keyboard-layout/README.org +++ b/layers/+intl/keyboard-layout/README.org @@ -14,6 +14,7 @@ - [[#dvorak][Dvorak]] - [[#colemak][Colemak]] - [[#workman][Workman]] + - [[#neo][neo]] - [[#package-configurations][Package Configurations]] - [[#key-bindings][Key bindings]] - [[#image-sources][Image sources]] @@ -228,6 +229,13 @@ substitutes the following keys with these mnemonics: - ~k → e~ - ~l → o~ +** neo +=neo= is a ergonomic keyboard, which is optimized for German. More information can +be found on the [[https://www.neo-layout.org/][website]]. + +The Neo layout has six layers, here is only the first: +[[file:img/neo-layout.png]] + * Package Configurations The available configurations are: diff --git a/layers/+intl/keyboard-layout/config.el b/layers/+intl/keyboard-layout/config.el index 30c52b64b..8bd0c7e3f 100644 --- a/layers/+intl/keyboard-layout/config.el +++ b/layers/+intl/keyboard-layout/config.el @@ -15,7 +15,7 @@ (defvar kl-layout 'dvorak "The keyboard-layout to use. Possible values are `colemak', -`dvorak', `bepo' and `workman'.") +`dvorak', `bepo', `workman', and `neo'.") (defvar kl-enabled-configurations nil "If non nil, `keyboard-layout' will enable configurations only @@ -76,7 +76,16 @@ any case.") ("h" . "y") ("j" . "n") ("k" . "e") - ("l" . "o")))) + ("l" . "o"))) + (neo . (("s" . "h") + ("n" . "j") + ("r" . "k") + ("t" . "l") + ;; + ("l" . "s") + ("j" . "n") + ("h" . "r") + ("k" . "t")))) "The base rebinding map. Dots should be read as `will behave as'. It should be a bidirectional mapping, i.e. all present keys should be once in each column.") diff --git a/layers/+intl/keyboard-layout/img/neo-layout.png b/layers/+intl/keyboard-layout/img/neo-layout.png new file mode 100644 index 000000000..ed354b780 Binary files /dev/null and b/layers/+intl/keyboard-layout/img/neo-layout.png differ diff --git a/layers/+intl/keyboard-layout/packages.el b/layers/+intl/keyboard-layout/packages.el index aea75cafc..2c4ec7c24 100644 --- a/layers/+intl/keyboard-layout/packages.el +++ b/layers/+intl/keyboard-layout/packages.el @@ -45,7 +45,9 @@ :colemak (setq aw-keys '(?a ?r ?s ?t ?n ?e ?i ?o)) :dvorak - (setq aw-keys '(?a ?o ?e ?u ?h ?t ?n ?s)))) + (setq aw-keys '(?a ?o ?e ?u ?h ?t ?n ?s)) + :neo + (setq aw-keys '(?u ?i ?a ?e ?n ?r ?t ?d)))) (defun keyboard-layout/pre-init-avy () (kl|config avy @@ -58,7 +60,9 @@ :colemak (setq-default avy-keys '(?a ?r ?s ?t ?n ?e ?i ?o)) :dvorak - (setq-default avy-keys '(?a ?o ?e ?u ?h ?t ?n ?s)))) + (setq-default avy-keys '(?a ?o ?e ?u ?h ?t ?n ?s)) + :neo + (setq-default avy-keys '(?u ?i ?a ?e ?n ?r ?t ?d)))) (defun keyboard-layout/pre-init-comint () (kl|config comint-mode @@ -263,7 +267,11 @@ (kl/set-in-state helm-find-files-map "C-k" 'helm-ff-run-grep) (kl/set-in-state helm-find-files-map "C-r" 'helm-maybe-exit-minibuffer) (kl/set-in-state helm-read-file-map "C-s" 'helm-previous-line) - (kl/set-in-state helm-read-file-map "C-K" 'helm-previous-line))) + (kl/set-in-state helm-read-file-map "C-K" 'helm-previous-line)) + :neo + (progn + (kl/set-in-state helm-find-files-map "C-r" 'helm-previous-line) + (kl/set-in-state helm-find-files-map "C-s" 'helm-next-line))) (kl|config helm-locate :description @@ -456,7 +464,50 @@ "o" 'evil-forward-char "E" 'org-forward-element "I" 'org-backward-element - "N" 'org-backward-heading-same-level)))))) + "N" 'org-backward-heading-same-level)))) + :neo + (progn + (spacemacs|use-package-add-hook evil-org + :post-config + (progn + (evil-define-key 'normal evil-org-mode-map + "t" 'evil-forward-char + "l" 'org-todo + "gn" 'org-forward-heading-same-level + "gr" 'org-backward-heading-same-level + "gj" nil + "gk" nil) + (dolist (m '(normal insert)) + (eval `(evil-define-key ',m evil-org-mode-map + ;; snrt + (kbd "M-s") 'org-metaleft + (kbd "M-n") 'org-metadown + (kbd "M-r") 'org-metaup + (kbd "M-t") 'org-metaright + (kbd "M-S") 'org-shiftmetaleft + (kbd "M-N") 'org-shiftmetadown + (kbd "M-R") 'org-shiftmetaup + (kbd "M-T") 'org-shiftmetaright + ;; hjkl + (kbd "M-h") 'capitalize-word + (kbd "M-j") 'transpose-chars + (kbd "M-k") 'kill-sentence + (kbd "M-l") 'move-to-window-line-top-bottom + (kbd "M-H") 'capitalize-word + (kbd "M-J") 'transpose-chars + (kbd "M-K") 'kill-sentence + (kbd "M-L") 'move-to-window-line-top-bottom))) + (spacemacs/set-leader-keys-for-major-mode 'org-mode + ;; snrt + "C-S-s" 'org-shiftcontrolleft + "C-S-n" 'org-shiftcontroldown + "C-S-r" 'org-shiftcontrolup + "C-S-t" 'org-shiftcontrolright + ;; hjkl + "C-S-h" nil + "C-S-j" nil + "C-S-k" nil + "C-S-l" nil)))))) (defun keyboard-layout/pre-init-org-agenda () (kl|config org-agenda