diff options
Diffstat (limited to '.config/xkb')
| -rw-r--r-- | .config/xkb/symbols/vim_keys | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/.config/xkb/symbols/vim_keys b/.config/xkb/symbols/vim_keys new file mode 100644 index 0000000..34f2ca5 --- /dev/null +++ b/.config/xkb/symbols/vim_keys @@ -0,0 +1,52 @@ +// ~/.config/xkb/symbols/vim_keys + +xkb_symbols "basic" { + include "us(basic)" + include "custom(altgr)" + + clear lock; + clear mod5; + clear control; + + // Define a custom modifier (Mode_switch) + modifier_map Mod5 { <MDSW> }; + + // Remap Caps Lock to AltGr (ISO_Level3_Shift) + key <CAPS> { + type[Group1] = "ONE_LEVEL", + symbols[Group1] = [ ISO_Level3_Shift ], + actions[Group1] = [ SetMods(modifiers=Mod5) ] + }; + + // Remap h, j, k, l to arrow keys when Mode_switch is active + key <AC06> { [ Left ] }; + key <AC07> { [ Down ] }; + key <AC08> { [ Up ] }; + key <AC09> { [ Right ] }; + + // Assign keys to the CtrlMod modifier + key <RCTL> { [ Control_R, Control_R ] }; + key <LCTL> { [ Control_L, Control_L ] }; + + // Define Ctrl+Mode_switch+J as PageDown + key <I194> { [ Control_R, ISO_Level3_Shift, Prior ] }; + key <I194> { [ Control_L, ISO_Level3_Shift, Prior ] }; + + // Define Ctrl+Mode_switch+K as PageUp + key <I196> { [ Control_R, ISO_Level3_Shift, Next ] }; + key <I196> { [ Control_L, ISO_Level3_Shift, Next ] }; + + // Define Ctrl+Mode_switch+H as Home + key <AC06> { [ Control_R, ISO_Level3_Shift, Home ] }; + key <AC06> { [ Control_L, ISO_Level3_Shift, Home ] }; + + // Define Ctrl+Mode_switch+L as End + key <AC09> { [ Control_R, ISO_Level3_Shift, End ] }; + key <AC09> { [ Control_L, ISO_Level3_Shift, End ] }; + + // Make 'q' act as Escape when in Mode_switch + key <AD03> { [ q, Q, Escape ] }; + + // Shift+Caps to use normal Caps Lock + modifier_map Mod5 { Shift+CapsLock, <MDSW> }; +}; |
