]> gitweb.michael.orlitzky.com - emacs-keys.git/commitdiff
src/xkb/symbols/emacs-keys: new xkb layout file
authorMichael Orlitzky <michael@orlitzky.com>
Sun, 3 Dec 2023 17:28:06 +0000 (12:28 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Sun, 3 Dec 2023 23:19:53 +0000 (18:19 -0500)
src/xkb/symbols/emacs-keys [new file with mode: 0644]

diff --git a/src/xkb/symbols/emacs-keys b/src/xkb/symbols/emacs-keys
new file mode 100644 (file)
index 0000000..3b9c532
--- /dev/null
@@ -0,0 +1,39 @@
+//
+// The emacs-keys layout is a modified "us" layout:
+//
+//   * CapsLock becomes Left-Alt
+//   * Left-Alt and Left-Ctrl are swapped
+//   * Right-Alt and Right-Ctrl are swapped
+//
+// This could probably be pieced together from various
+// rules that ship with xkeyboard-config, but it's a
+// lot nicer to have everything available as a layout.
+//
+
+default partial alphanumeric_keys
+xkb_symbols "emacs-keys" {
+    include "us(basic)"
+    name[Group1] = "Emacs Keys";
+
+    // Make capslock a left-alt.
+    replace key <CAPS> { [ Alt_L, Meta_L ] };
+    modifier_map Mod1 { <CAPS> };
+
+    // This is a copy of the ctrl(swap_lalt_lctl) rule
+    // that ships with xkeyboard-config.
+    replace key <LALT> { [ Control_L, Control_L ] };
+    replace key <LCTL> { [ Alt_L, Meta_L ] };
+    modifier_map Mod1    { <LCTL> };
+    modifier_map Control { <LALT> };
+    replace key <LALT> { [ Control_L, Control_L ] };
+    replace key <LCTL> { [ Alt_L, Meta_L ] };
+    modifier_map Mod1    { <LCTL> };
+    modifier_map Control { <LALT> };
+
+    // This is a copy of the ctrl(swap_ralt_rctl) rule
+    // that ships with xkeyboard-config.
+    replace key <RALT> { [ Control_R, Control_R ] };
+    replace key <RCTL> { [ Alt_R, Meta_R ] };
+    modifier_map Mod1    { <RCTL> };
+    modifier_map Control { <RALT> };
+};