For best experience, map caps lock to control key, map left control key to esc key.
Not all apps honor the unix-y way of moving the cursor, the Karabiner-Element configuration below will enable it on almost all apps (except Microsoft Office). Microsoft Office apps still interprets Control+B as bold, Control+F as find
I noticed that on online code editors like codepen.io, though they recognize control+F and control+B as right and left arrow respectively, they does not recognize option+control+F as one word to the right, and option+control+B as one word to the left. Worse yet, option+control+F triggers full screen on codesandbox.io, the configuration below solves this problem too.
Up = control+P
Down = control+N
Left = control+B
Right = control+F
option + Right (One word to the right) = option + control+F
option + Left (One word to the left) = option + control+B
delete = control+H
fn+delete = control+D
option + delete (delete one word to the left) = option + control+H
option + fn+delete (delete one word to the right) = option + control+D
{ "description": "Dvorak navigations - no place like home keys", "manipulators": [ { "from": { "key_code": "j", "modifiers": { "mandatory": [ "left_control" ] } }, "to": [ { "key_code": "delete_or_backspace" } ], "type": "basic" }, { "from": { "key_code": "j", "modifiers": { "mandatory": [ "left_control", "left_option" ] } }, "to": [ { "key_code": "delete_or_backspace", "modifiers": [ "left_option" ] } ], "type": "basic" }, { "from": { "key_code": "h", "modifiers": { "mandatory": [ "left_control" ] } }, "to": [ { "key_code": "delete_forward" } ], "type": "basic" }, { "from": { "key_code": "h", "modifiers": { "mandatory": [ "left_control", "left_option" ] } }, "to": [ { "key_code": "delete_forward", "modifiers": [ "left_option" ] } ], "type": "basic" }, { "from": { "key_code": "l", "modifiers": { "mandatory": [ "left_control" ] } }, "to": [ { "key_code": "down_arrow" } ], "type": "basic" }, { "from": { "key_code": "l", "modifiers": { "mandatory": [ "left_control", "left_shift" ] } }, "to": [ { "key_code": "down_arrow", "modifiers": [ "left_shift" ] } ], "type": "basic" }, { "from": { "key_code": "r", "modifiers": { "mandatory": [ "left_control" ] } }, "to": [ { "key_code": "up_arrow" } ], "type": "basic" }, { "from": { "key_code": "r", "modifiers": { "mandatory": [ "left_control", "left_shift" ] } }, "to": [ { "key_code": "up_arrow", "modifiers": [ "left_shift" ] } ], "type": "basic" }, { "from": { "key_code": "y", "modifiers": { "mandatory": [ "left_control", "left_option" ] } }, "to": [ { "key_code": "right_arrow", "modifiers": [ "left_option" ] } ], "type": "basic" }, { "from": { "key_code": "y", "modifiers": { "mandatory": [ "left_control", "left_option", "left_shift" ] } }, "to": [ { "key_code": "right_arrow", "modifiers": [ "left_option", "left_shift" ] } ], "type": "basic" }, { "from": { "key_code": "n", "modifiers": { "mandatory": [ "left_control", "left_option" ] } }, "to": [ { "key_code": "left_arrow", "modifiers": [ "left_option" ] } ], "type": "basic" }, { "from": { "key_code": "n", "modifiers": { "mandatory": [ "left_control", "left_option", "left_shift" ] } }, "to": [ { "key_code": "left_arrow", "modifiers": [ "left_option", "left_shift" ] } ], "type": "basic" } ] }