commit 686bd96a86b12c06a38bdf4eadca64ea545a01ae
parent a6d0a30e605e61a43b90a5f6be93010f8260d2bc
Author: Damian Myrda <damian@prime8.dev>
Date: Tue, 6 Jan 2026 14:50:37 -0600
Replace colemak-dh with karabiner-elements for keyboard layout
Diffstat:
4 files changed, 2216 insertions(+), 24 deletions(-)
diff --git a/Brewfile b/Brewfile
@@ -70,7 +70,7 @@ cask "orion"
cask "raycast"
# Input
-cask "colemak-dh"
+cask "karabiner-elements"
cask "scroll-reverser"
# Fonts
diff --git a/link.sh b/link.sh
@@ -39,4 +39,7 @@ link_config "$PROGRAMS_DIR/opencode/opencode.json" "$CONFIG_DIR/opencode/opencod
link_config "$PROGRAMS_DIR/opencode/command" "$CONFIG_DIR/opencode/command"
link_config "$PROGRAMS_DIR/opencode/plugin" "$CONFIG_DIR/opencode/plugin"
+# Karabiner
+link_config "$PROGRAMS_DIR/karabiner/karabiner.json" "$CONFIG_DIR/karabiner/karabiner.json"
+
echo "✅ Config symlinks complete!"
diff --git a/programs/karabiner/karabiner.json b/programs/karabiner/karabiner.json
@@ -0,0 +1,2211 @@
+{
+ "profiles": [
+ {
+ "complex_modifications": {
+ "rules": [
+ {
+ "description": "Better Shifting: Shift rolls",
+ "manipulators": [
+ {
+ "from": {
+ "key_code": "left_shift",
+ "modifiers": { "mandatory": ["right_shift"] }
+ },
+ "to": [
+ { "key_code": "left_shift" },
+ { "key_code": "right_shift" }
+ ],
+ "to_if_alone": [
+ {
+ "key_code": "0",
+ "modifiers": ["right_shift", "left_shift"]
+ },
+ {
+ "key_code": "9",
+ "modifiers": ["right_shift", "left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "right_shift",
+ "modifiers": { "mandatory": ["left_shift"] }
+ },
+ "to": [
+ { "key_code": "right_shift" },
+ { "key_code": "left_shift" }
+ ],
+ "to_if_alone": [
+ {
+ "key_code": "9",
+ "modifiers": ["right_shift"]
+ },
+ {
+ "key_code": "0",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ }
+ ]
+ },
+ {
+ "description": "Better Shifting: Parentheses on shift keys",
+ "manipulators": [
+ {
+ "from": { "key_code": "left_shift" },
+ "to": [{ "key_code": "left_shift" }],
+ "to_if_alone": [
+ {
+ "key_code": "9",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": { "key_code": "right_shift" },
+ "to": [{ "key_code": "right_shift" }],
+ "to_if_alone": [
+ {
+ "key_code": "0",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ }
+ ]
+ },
+ {
+ "description": "Caps Lock to Escape on single press, Control on press and hold.",
+ "manipulators": [
+ {
+ "from": {
+ "key_code": "caps_lock",
+ "modifiers": { "optional": ["any"] }
+ },
+ "to": [{ "key_code": "left_control" }],
+ "to_if_alone": [{ "key_code": "escape" }],
+ "type": "basic"
+ }
+ ]
+ },
+ {
+ "description": "CODEmak (Coder's Colemak): re-arrange / unshift number row (rev 6/18)",
+ "manipulators": [
+ {
+ "description": "Left index: shift-4/$ ⇒ 1",
+ "from": {
+ "key_code": "4",
+ "modifiers": {
+ "mandatory": ["shift"],
+ "optional": ["command", "control", "option"]
+ }
+ },
+ "to": [{ "key_code": "1" }],
+ "type": "basic"
+ },
+ {
+ "description": "Left index: 4 ⇒ shift-1/!",
+ "from": {
+ "key_code": "4",
+ "modifiers": { "optional": ["command", "control", "option"] }
+ },
+ "to": [
+ {
+ "key_code": "1",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "description": "Left middle: shift-3/# ⇒ 3",
+ "from": {
+ "key_code": "3",
+ "modifiers": {
+ "mandatory": ["shift"],
+ "optional": ["command", "control", "option"]
+ }
+ },
+ "to": [{ "key_code": "3" }],
+ "type": "basic"
+ },
+ {
+ "description": "Left middle: 3 ⇒ shift-3/#",
+ "from": {
+ "key_code": "3",
+ "modifiers": { "optional": ["command", "control", "option"] }
+ },
+ "to": [
+ {
+ "key_code": "3",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "description": "Left ring: shift-2/@ ⇒ 5",
+ "from": {
+ "key_code": "2",
+ "modifiers": {
+ "mandatory": ["shift"],
+ "optional": ["command", "control", "option"]
+ }
+ },
+ "to": [{ "key_code": "5" }],
+ "type": "basic"
+ },
+ {
+ "description": "Left ring: 2 ⇒ shift-5/%",
+ "from": {
+ "key_code": "2",
+ "modifiers": { "optional": ["command", "control", "option"] }
+ },
+ "to": [
+ {
+ "key_code": "5",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "description": "Left pinkie: shift-1/! ⇒ 7",
+ "from": {
+ "key_code": "1",
+ "modifiers": {
+ "mandatory": ["shift"],
+ "optional": ["command", "control", "option"]
+ }
+ },
+ "to": [{ "key_code": "7" }],
+ "type": "basic"
+ },
+ {
+ "description": "Left pinkie: 1 ⇒ shift-7/&",
+ "from": {
+ "key_code": "1",
+ "modifiers": { "optional": ["command", "control", "option"] }
+ },
+ "to": [
+ {
+ "key_code": "7",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "description": "Left stretch: shift-5/% ⇒ 9",
+ "from": {
+ "key_code": "5",
+ "modifiers": {
+ "mandatory": ["shift"],
+ "optional": ["command", "control", "option"]
+ }
+ },
+ "to": [{ "key_code": "9" }],
+ "type": "basic"
+ },
+ {
+ "description": "Left stretch: 5 ⇒ shift-9/(",
+ "from": {
+ "key_code": "5",
+ "modifiers": { "optional": ["command", "control", "option"] }
+ },
+ "to": [
+ {
+ "key_code": "9",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "description": "Right index: shift-7/& ⇒ 2",
+ "from": {
+ "key_code": "7",
+ "modifiers": {
+ "mandatory": ["shift"],
+ "optional": ["command", "control", "option"]
+ }
+ },
+ "to": [{ "key_code": "2" }],
+ "type": "basic"
+ },
+ {
+ "description": "Right index: 7 ⇒ shift-2/@",
+ "from": {
+ "key_code": "7",
+ "modifiers": { "optional": ["command", "control", "option"] }
+ },
+ "to": [
+ {
+ "key_code": "2",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "description": "Right middle: shift-8/* ⇒ 4",
+ "from": {
+ "key_code": "8",
+ "modifiers": {
+ "mandatory": ["shift"],
+ "optional": ["command", "control", "option"]
+ }
+ },
+ "to": [{ "key_code": "4" }],
+ "type": "basic"
+ },
+ {
+ "description": "Right middle: 8 ⇒ shift-4/$",
+ "from": {
+ "key_code": "8",
+ "modifiers": { "optional": ["command", "control", "option"] }
+ },
+ "to": [
+ {
+ "key_code": "4",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "description": "Right ring: shift-9/( ⇒ 6",
+ "from": {
+ "key_code": "9",
+ "modifiers": {
+ "mandatory": ["shift"],
+ "optional": ["command", "control", "option"]
+ }
+ },
+ "to": [{ "key_code": "6" }],
+ "type": "basic"
+ },
+ {
+ "description": "Right ring: 9 ⇒ shift-6/^",
+ "from": {
+ "key_code": "9",
+ "modifiers": { "optional": ["command", "control", "option"] }
+ },
+ "to": [
+ {
+ "key_code": "6",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "description": "Right pinkie: shift-0/) ⇒ 8",
+ "from": {
+ "key_code": "0",
+ "modifiers": {
+ "mandatory": ["shift"],
+ "optional": ["command", "control", "option"]
+ }
+ },
+ "to": [{ "key_code": "8" }],
+ "type": "basic"
+ },
+ {
+ "description": "Right pinkie: 0 ⇒ shift-8/*",
+ "from": {
+ "key_code": "0",
+ "modifiers": { "optional": ["command", "control", "option"] }
+ },
+ "to": [
+ {
+ "key_code": "8",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "description": "Right stretch: shift-6/^ ⇒ 0",
+ "from": {
+ "key_code": "6",
+ "modifiers": {
+ "mandatory": ["shift"],
+ "optional": ["command", "control", "option"]
+ }
+ },
+ "to": [{ "key_code": "0" }],
+ "type": "basic"
+ },
+ {
+ "description": "Right stretch: 6 ⇒ shift-0/)",
+ "from": {
+ "key_code": "6",
+ "modifiers": { "optional": ["command", "control", "option"] }
+ },
+ "to": [
+ {
+ "key_code": "0",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ }
+ ]
+ },
+ {
+ "description": "Colemak Mod-DH Standard (ANSI)",
+ "manipulators": [
+ {
+ "from": {
+ "key_code": "grave_accent_and_tilde",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "grave_accent_and_tilde" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "1",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "1" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "2",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "2" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "4",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "4" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "5",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "5" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "6",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "6" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "7",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "7" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "8",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "8" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "9",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "9" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "0",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "0" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "hyphen",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "hyphen" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "equal_sign",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "equal_sign" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "q",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "q" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "w",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "w" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "e",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "f" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "r",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "p" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "t",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "b" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "y",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "j" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "u",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "l" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "i",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "u" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "o",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "y" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "p",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "semicolon" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "open_bracket",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "open_bracket" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "close_bracket",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "close_bracket" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "backslash",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "backslash" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "a",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "a" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "s",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "r" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "d",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "s" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "f",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "t" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "g",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "g" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "h",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "m" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "j",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "n" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "k",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "e" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "l",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "i" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "semicolon",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "o" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "quote",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "quote" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "z",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "x" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "x",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "c" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "c",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "d" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "v",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "v" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "b",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "z" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "n",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "k" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "m",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "h" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "comma",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "comma" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "period",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "period" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "slash",
+ "modifiers": { "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"] }
+ },
+ "to": [{ "key_code": "slash" }],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "grave_accent_and_tilde",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "grave_accent_and_tilde",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "1",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "1",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "2",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "2",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "4",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "4",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "5",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "5",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "6",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "6",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "7",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "7",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "8",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "8",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "9",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "9",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "0",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "0",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "hyphen",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "hyphen",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "equal_sign",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "equal_sign",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "q",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "q",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "w",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "w",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "e",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "f",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "r",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "p",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "t",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "b",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "y",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "j",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "u",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "l",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "i",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "u",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "o",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "y",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "p",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "semicolon",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "open_bracket",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "open_bracket",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "close_bracket",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "close_bracket",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "backslash",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "backslash",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "a",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "a",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "s",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "r",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "d",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "s",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "f",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "t",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "g",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "g",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "h",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "m",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "j",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "n",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "k",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "e",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "l",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "i",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "semicolon",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "o",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "quote",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "quote",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "z",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "x",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "x",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "c",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "c",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "d",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "v",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "v",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "b",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "z",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "n",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "k",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "m",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "h",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "comma",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "comma",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "period",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "period",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "slash",
+ "modifiers": {
+ "mandatory": ["left_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "slash",
+ "modifiers": ["left_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "grave_accent_and_tilde",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "grave_accent_and_tilde",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "1",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "1",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "2",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "2",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "4",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "4",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "5",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "5",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "6",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "6",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "7",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "7",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "8",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "8",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "9",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "9",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "0",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "0",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "hyphen",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "hyphen",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "equal_sign",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "equal_sign",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "q",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "q",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "w",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "w",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "e",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "f",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "r",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "p",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "t",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "b",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "y",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "j",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "u",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "l",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "i",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "u",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "o",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "y",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "p",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "semicolon",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "open_bracket",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "open_bracket",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "close_bracket",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "close_bracket",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "backslash",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "backslash",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "a",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "a",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "s",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "r",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "d",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "s",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "f",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "t",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "g",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "g",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "h",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "m",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "j",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "n",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "k",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "e",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "l",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "i",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "semicolon",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "o",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "quote",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "quote",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "z",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "x",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "x",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "c",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "c",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "d",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "v",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "v",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "b",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "z",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "n",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "k",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "m",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "h",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "comma",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "comma",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "period",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "period",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ },
+ {
+ "from": {
+ "key_code": "slash",
+ "modifiers": {
+ "mandatory": ["right_shift"],
+ "optional": ["caps_lock", "left_command", "left_control", "left_alt", "right_command", "right_control", "right_alt"]
+ }
+ },
+ "to": [
+ {
+ "key_code": "slash",
+ "modifiers": ["right_shift"]
+ }
+ ],
+ "type": "basic"
+ }
+ ]
+ }
+ ]
+ },
+ "name": "Default profile",
+ "selected": true,
+ "virtual_hid_keyboard": { "keyboard_type_v2": "ansi" }
+ }
+ ]
+}
+\ No newline at end of file
diff --git a/setup.sh b/setup.sh
@@ -56,27 +56,4 @@ else
echo "✅ Fish is already the default shell"
fi
-# Keyboard layout
-echo "⌨️ Checking for Colemak-DH layout bundle..."
-CASK_BUNDLE="$(find /opt/homebrew/Caskroom/colemak-dh -name "Colemak*.bundle" 2>/dev/null | head -1)"
-LAYOUT_DEST="/Library/Keyboard Layouts"
-
-if [ -n "$CASK_BUNDLE" ] && [ -d "$CASK_BUNDLE/Contents/Resources" ]; then
- echo "→ Found layout bundle at $CASK_BUNDLE"
-
- if sudo cp "$CASK_BUNDLE/Contents/Resources/"*.keylayout "$LAYOUT_DEST" 2>/dev/null; then
- echo "✅ Keylayout copied to $LAYOUT_DEST"
- else
- echo "⚠️ No .keylayout file found or copy failed"
- fi
-
- if sudo cp "$CASK_BUNDLE/Contents/Resources/"*.icns "$LAYOUT_DEST" 2>/dev/null; then
- echo "✅ Icon file copied to $LAYOUT_DEST"
- else
- echo "⚠️ No .icns file found or copy failed (optional)"
- fi
-else
- echo "⚠️ Colemak-DH bundle not found. Install with: brew install --cask colemak-dh"
-fi
-
echo "✅ macOS setup script completed!"