aboutsummaryrefslogtreecommitdiff
path: root/.config/xkb/symbols
diff options
context:
space:
mode:
Diffstat (limited to '.config/xkb/symbols')
-rw-r--r--.config/xkb/symbols/vim_keys52
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> };
+};