Skip to content

Instantly share code, notes, and snippets.

@nkhil
Created March 6, 2023 12:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nkhil/13830f400ec08c5cea065d9bbce8abf2 to your computer and use it in GitHub Desktop.
Save nkhil/13830f400ec08c5cea065d9bbce8abf2 to your computer and use it in GitHub Desktop.

Custom Karabiner rule to toggle W/A/S/D as arrow keys

The following rule re-maps the capslock key so it toggles on W/A/S/D becoming arrow keys.

{
  "global": {
    "check_for_updates_on_startup": true,
    "show_in_menu_bar": true,
    "show_profile_name_in_menu_bar": false,
    "unsafe_ui": false
  },
  "profiles": [
    {
      "complex_modifications": {
        "parameters": {
          "basic.simultaneous_threshold_milliseconds": 50,
          "basic.to_delayed_action_delay_milliseconds": 500,
          "basic.to_if_alone_timeout_milliseconds": 1000,
          "basic.to_if_held_down_threshold_milliseconds": 500,
          "mouse_motion_to_scroll.speed": 100
        },
        "rules": [
          {
            "description": "CAPS+W Toggles W/A/S/D-As-Arrows Mode",
            "manipulators": [
              {
                "conditions": [
                  {
                    "name": "wasd_mode",
                    "type": "variable_if",
                    "value": 0
                  }
                ],
                "from": {
                  "key_code": "caps_lock",
                  "modifiers": {
                    "optional": [
                      "any"
                    ]
                  }
                },
                "to": [
                  {
                    "set_variable": {
                      "name": "wasd_mode",
                      "value": 1
                    }
                  }
                ],
                "type": "basic"
              },
              {
                "conditions": [
                  {
                    "name": "wasd_mode",
                    "type": "variable_if",
                    "value": 1
                  }
                ],
                "from": {
                  "key_code": "caps_lock",
                  "modifiers": {
                    "optional": [
                      "any"
                    ]
                  }
                },
                "to": [
                  {
                    "set_variable": {
                      "name": "wasd_mode",
                      "value": 0
                    }
                  }
                ],
                "type": "basic"
              },
              {
                "conditions": [
                  {
                    "name": "wasd_mode",
                    "type": "variable_if",
                    "value": 1
                  }
                ],
                "from": {
                  "key_code": "w",
                  "modifiers": {
                    "optional": [
                      "any"
                    ]
                  }
                },
                "to": [
                  {
                    "key_code": "up_arrow"
                  }
                ],
                "type": "basic"
              },
              {
                "conditions": [
                  {
                    "name": "wasd_mode",
                    "type": "variable_if",
                    "value": 1
                  }
                ],
                "from": {
                  "key_code": "a",
                  "modifiers": {
                    "optional": [
                      "any"
                    ]
                  }
                },
                "to": [
                  {
                    "key_code": "left_arrow"
                  }
                ],
                "type": "basic"
              },
              {
                "conditions": [
                  {
                    "name": "wasd_mode",
                    "type": "variable_if",
                    "value": 1
                  }
                ],
                "from": {
                  "key_code": "s",
                  "modifiers": {
                    "optional": [
                      "any"
                    ]
                  }
                },
                "to": [
                  {
                    "key_code": "down_arrow"
                  }
                ],
                "type": "basic"
              },
              {
                "conditions": [
                  {
                    "name": "wasd_mode",
                    "type": "variable_if",
                    "value": 1
                  }
                ],
                "from": {
                  "key_code": "d",
                  "modifiers": {
                    "optional": [
                      "any"
                    ]
                  }
                },
                "to": [
                  {
                    "key_code": "right_arrow"
                  }
                ],
                "type": "basic"
              },
              {
                "conditions": [
                  {
                    "name": "wasd_mode",
                    "type": "variable_if",
                    "value": 1
                  }
                ],
                "from": {
                  "key_code": "q",
                  "modifiers": {
                    "optional": [
                      "any"
                    ]
                  }
                },
                "to": [
                  {
                    "key_code": "home"
                  }
                ],
                "type": "basic"
              },
              {
                "conditions": [
                  {
                    "name": "wasd_mode",
                    "type": "variable_if",
                    "value": 1
                  }
                ],
                "from": {
                  "key_code": "e",
                  "modifiers": {
                    "optional": [
                      "any"
                    ]
                  }
                },
                "to": [
                  {
                    "key_code": "end"
                  }
                ],
                "type": "basic"
              },
              {
                "conditions": [
                  {
                    "name": "wasd_mode",
                    "type": "variable_if",
                    "value": 1
                  }
                ],
                "from": {
                  "key_code": "r",
                  "modifiers": {
                    "optional": [
                      "any"
                    ]
                  }
                },
                "to": [
                  {
                    "key_code": "page_up"
                  }
                ],
                "type": "basic"
              },
              {
                "conditions": [
                  {
                    "name": "wasd_mode",
                    "type": "variable_if",
                    "value": 1
                  }
                ],
                "from": {
                  "key_code": "f",
                  "modifiers": {
                    "optional": [
                      "any"
                    ]
                  }
                },
                "to": [
                  {
                    "key_code": "page_down"
                  }
                ],
                "type": "basic"
              }
            ]
          }
        ]
      },
      "devices": [
        {
          "disable_built_in_keyboard_if_exists": false,
          "fn_function_keys": [],
          "identifiers": {
            "is_keyboard": true,
            "is_pointing_device": false,
            "product_id": 833,
            "vendor_id": 1452
          },
          "ignore": false,
          "manipulate_caps_lock_led": true,
          "simple_modifications": [],
          "treat_as_built_in_keyboard": false
        },
        {
          "disable_built_in_keyboard_if_exists": false,
          "fn_function_keys": [],
          "identifiers": {
            "is_keyboard": false,
            "is_pointing_device": true,
            "product_id": 833,
            "vendor_id": 1452
          },
          "ignore": true,
          "manipulate_caps_lock_led": false,
          "simple_modifications": [],
          "treat_as_built_in_keyboard": false
        },
        {
          "disable_built_in_keyboard_if_exists": false,
          "fn_function_keys": [],
          "identifiers": {
            "is_keyboard": true,
            "is_pointing_device": false,
            "product_id": 615,
            "vendor_id": 76
          },
          "ignore": false,
          "manipulate_caps_lock_led": true,
          "simple_modifications": [],
          "treat_as_built_in_keyboard": false
        },
        {
          "disable_built_in_keyboard_if_exists": false,
          "fn_function_keys": [],
          "identifiers": {
            "is_keyboard": false,
            "is_pointing_device": true,
            "product_id": 613,
            "vendor_id": 76
          },
          "ignore": true,
          "manipulate_caps_lock_led": false,
          "simple_modifications": [],
          "treat_as_built_in_keyboard": false
        },
        {
          "disable_built_in_keyboard_if_exists": false,
          "fn_function_keys": [],
          "identifiers": {
            "is_keyboard": true,
            "is_pointing_device": false,
            "product_id": 34304,
            "vendor_id": 1452
          },
          "ignore": false,
          "manipulate_caps_lock_led": true,
          "simple_modifications": [],
          "treat_as_built_in_keyboard": false
        }
      ],
      "fn_function_keys": [
        {
          "from": {
            "key_code": "f1"
          },
          "to": [
            {
              "consumer_key_code": "display_brightness_decrement"
            }
          ]
        },
        {
          "from": {
            "key_code": "f2"
          },
          "to": [
            {
              "consumer_key_code": "display_brightness_increment"
            }
          ]
        },
        {
          "from": {
            "key_code": "f3"
          },
          "to": [
            {
              "apple_vendor_keyboard_key_code": "mission_control"
            }
          ]
        },
        {
          "from": {
            "key_code": "f4"
          },
          "to": [
            {
              "apple_vendor_keyboard_key_code": "spotlight"
            }
          ]
        },
        {
          "from": {
            "key_code": "f5"
          },
          "to": [
            {
              "consumer_key_code": "dictation"
            }
          ]
        },
        {
          "from": {
            "key_code": "f6"
          },
          "to": [
            {
              "key_code": "f6"
            }
          ]
        },
        {
          "from": {
            "key_code": "f7"
          },
          "to": [
            {
              "consumer_key_code": "rewind"
            }
          ]
        },
        {
          "from": {
            "key_code": "f8"
          },
          "to": [
            {
              "consumer_key_code": "play_or_pause"
            }
          ]
        },
        {
          "from": {
            "key_code": "f9"
          },
          "to": [
            {
              "consumer_key_code": "fast_forward"
            }
          ]
        },
        {
          "from": {
            "key_code": "f10"
          },
          "to": [
            {
              "consumer_key_code": "mute"
            }
          ]
        },
        {
          "from": {
            "key_code": "f11"
          },
          "to": [
            {
              "consumer_key_code": "volume_decrement"
            }
          ]
        },
        {
          "from": {
            "key_code": "f12"
          },
          "to": [
            {
              "consumer_key_code": "volume_increment"
            }
          ]
        }
      ],
      "name": "Default profile",
      "parameters": {
        "delay_milliseconds_before_open_device": 1000
      },
      "selected": true,
      "simple_modifications": [],
      "virtual_hid_keyboard": {
        "country_code": 0,
        "indicate_sticky_modifier_keys_state": true,
        "mouse_key_xy_scale": 100
      }
    }
  ]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment