Both solutions for caps lock mode and caps hold mode:
- p.s. you can easily switch the script down below to "wasd" or "hjkl", etc.
1. Setup Karabiner:
- Download Karabiner
- When opening it requires to enable some stuff in the Settings (just follow the steps it requests from you)
Set up the Script:
Create a JSON file on your desktop:
- cmd + space to open the spotlight
- type in terminal
- type in cd
- type in cd desktop
- touch myscript.json
- copy paste one of the codes down below in the new file
Go back to the terminal
- Type in cd
- Type cd desktop
- Type mv myscript.json ~/.config/karabiner/assets/complex_modifications
Now open Karabiner Elements and go to "Complex modifications"
- Press "add Rule"
- Now there should be your custom rule to enable
- Have fun.
Code 1 for Caps lock "to enter arrow key mode" and press again "to exit arrow key mode":
{
"title": "ijkl arrow Keys toggled by Capslock",
"rules": [
{
"description": "ijkl arrow Keys toggled by Capslock",
"manipulators": [
{
"conditions": [
{
"name": "wasd_arrow_keys_mode",
"type": "variable_unless",
"value": 1
}
],
"from": {
"key_code": "caps_lock",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [
{
"set_variable": {
"name": "wasd_arrow_keys_mode",
"value": 1
}
}
],
"type": "basic"
},
{
"conditions": [
{
"name": "wasd_arrow_keys_mode",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "caps_lock",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [
{
"set_variable": {
"name": "wasd_arrow_keys_mode",
"value": 0
}
}
],
"type": "basic"
},
{
"conditions": [
{
"name": "wasd_arrow_keys_mode",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "j",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [
{
"key_code": "left_arrow"
}
],
"type": "basic"
},
{
"conditions": [
{
"name": "wasd_arrow_keys_mode",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "k",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [
{
"key_code": "down_arrow"
}
],
"type": "basic"
},
{
"conditions": [
{
"name": "wasd_arrow_keys_mode",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "i",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [
{
"key_code": "up_arrow"
}
],
"type": "basic"
},
{
"conditions": [
{
"name": "wasd_arrow_keys_mode",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "l",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [
{
"key_code": "right_arrow"
}
],
"type": "basic"
}
]
}
]
}
Code 2 If you want to hold Caps while using the arrow Keys use this one instead:
{
"title": "ijkl arrow Keys toggled by Capslock",
"rules": [
{
"description": "ijkl arrow Keys toggled by Capslock",
"manipulators": [
{
"conditions": [
{
"name": "wasd_arrow_keys_mode",
"type": "variable_unless",
"value": 1
}
],
"from": {
"key_code": "caps_lock",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [
{
"set_variable": {
"name": "wasd_arrow_keys_mode",
"value": 1
}
}
],
"type": "basic"
},
{
"conditions": [
{
"name": "wasd_arrow_keys_mode",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "caps_lock",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [
{
"set_variable": {
"name": "wasd_arrow_keys_mode",
"value": 0
}
}
],
"type": "basic"
},
{
"conditions": [
{
"name": "wasd_arrow_keys_mode",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "j",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [
{
"key_code": "left_arrow"
}
],
"type": "basic"
},
{
"conditions": [
{
"name": "wasd_arrow_keys_mode",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "k",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [
{
"key_code": "down_arrow"
}
],
"type": "basic"
},
{
"conditions": [
{
"name": "wasd_arrow_keys_mode",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "i",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [
{
"key_code": "up_arrow"
}
],
"type": "basic"
},
{
"conditions": [
{
"name": "wasd_arrow_keys_mode",
"type": "variable_if",
"value": 1
}
],
"from": {
"key_code": "l",
"modifiers": {
"optional": [
"any"
]
}
},
"to": [
{
"key_code": "right_arrow"
}
],
"type": "basic"
}
]
}
]
}