This module provides barebones support for using Doom with non-qwerty keyboard layouts.
- @gagbo (+bepo)
Become a maintainer?
- +azerty
- Remap keybinds to accommodate the Azerty keyboard layout.
- +bepo
- Remap keybinds to accommodate the BÉPO keyboard layout (version 1.1, in particular).
This module doesn’t install any packages.
🔨 This module’s hacks haven’t been documented yet. Document them?
This module does not have a changelog yet.
Enable this module in your doom!
block.
This module has no external requirements.
🔨 This module’s usage documentation is incomplete. Complete it?
Support for the bépo layout includes:
- Setting Avy keys to the correct home row keys
- Changing navigation keys to c, t, s, and r
- old t is mapped to j
- old s is mapped to k (i.e. staging in the magit status buffer is done with k)
- See Configuration to see where old c and r functions are remapped
- Bind <> functions to «» keys when possible
- Bind [[kbd:][[]]] functions to () keys when possible (the “unimpaired-like” bindings)
- Bind é key to w functions when possible
- Bind è key to useful functions when possible
- Bind `~ functions to $# keys when possible
If you use doom-package:evil-easymotion, then all the bindings that were on gs have been moved to gé.
In short : g s j -> g é t (evilem-motion-next-line
). And so on.
Exchanging h/j/k/l to c/t/s/r has the effect of destroying a few mnemonics: the change operator becomes l for example, or the window split becomes SPC é k.
The module tries to limit those changes to the minimum, especially in special buffers. A concrete example is magit.
As the magit: project
buffer (obtained with M-x magit-status
) does not need
left-right navigation, keys c, r, h, and l keep their “expected” bindings, while
t, s, j, and k are flipped:
- checking the log from a magit buffer is still on l
- staging a file/region has been moved to k
A nice addition in the future might be to have all the normal mode bindings that start with g start with , instead to avoid the curl on these common bindings. This is not implemented for the time being.
The same thing could be done to z, potentially using à instead.
Also, implementing all those changes as a minor we could flip on and off would help with adoption
“inside word” and “around word” are iw and aw, which use the very poorly rated w key in the bépo layout. Finding a way to use é or even è more for these would be a welcome change
doom-package:evil-org allows to define evil-org-movement-bindings
to automatically map
movement bindings on non-hjkl keys. It maps automatically keys to C-c and C-r in
normal and insert states though, and it’s not really user friendly in Emacs to
remap those.
Therefore, in org-mode
:
org-shiftright
is bound to C-»org-shiftleft
is bound to C-«
🔨 This module’s configuration documentation is incomplete. Complete it?
+layout-bepo-cr-rotation-style
controls whether:
qwerty-c
functions are mapped onbépo-l
key, andqwerty-r
functions onbépo-h
key ('ergodis
), orqwerty-c
functions are mapped onbépo-h
key, andqwerty-r
functions onbépo-l
key ('strict
)
'strict
would be the logical choice but the c functions are used more often
than the r ones so Ergodis advises to actually put all the c functions on the
key that does not need a curl.
Report an issue?
- In doom-package:eshell, the key c is still bound to
evil-collection-eshell-evil-change
in normal mode.
If a key is misbehaving, use M-x describe-key
(C-h k or SPC h k or F1 k) to
see the command bound to the key, and more importantly in which keymap it is
bound.
You should ignore all evil-collection-*-backup-map
keymaps, as they are
artifacts from evil-collection-translate-key
and those maps are actually not
active.
Most likely the solution is to call one of the “key rotation” functions on the relevant keymaps.
If you are learning a new layout you might want to go back to tho old one to
“get work done”. Sadly the only way is to comment out the module, run $ doom
sync
and restart emacs.
Restoring the session SPC q l by default helps to lower the impact of the restart.
This module has no FAQs yet. Ask one?
🔨 This module has no appendix yet. Write one?