This is a customized configuration for Karabiner to make a keyboard home row to behave like Douglas Engelbart's chord device but only for "difficult to reach but very useful" keys
At least it's started this way... Later I started to use also the row above and below the home row, all keys far more reachable than the ones they replace
NOTE: Unfortunately this only work in OSX. If you are like me who works in Linux virtual machines hosted by OSX then you can have the best of both worlds.
- My development environment is made of Vim, Zsh, Tmux and i3 (a tiled window manager), let's say that I need a lot of key bindings, avoiding clashes with "only" two modifiers (CONTROL and ALT) is not easy
- I'm not getting younger, twisting my hand and my wrist all day long to reach those modifier keys was causing me some pain
- Being able to stay more in the home row is the ultimate keyboard efficiency goal
When you simultaneously press two keys they will be mapped to another (convenient) key. All the mappings are symmetric (this resolves another issue that many keyboards have)
D+F
toCONTROL_L
J+K
toCONTROL_R
S+D
toOPTION_L
(akaMETA_L
in Linux)K+L
toOPTION_R
(akaMETA_R
in Linux)E+F
toESCAPE
J+I
toESCAPE
W+F
toDELETE
J+O
toDELETE
E+R
to Vim'sLEADER
U+I
to Vim'sLEADER
C+V
toCONTROL_L+OPTION_L
M+,
toCONTROL_R+OPTION_R
X+V
toCONTROL_L+SHIFT_L
M+.
toCONTROL_R+SHIFT_R
X+C
toOPTION_L+SHIFT_L
,+.
toOPTION_R+SHIFT_R
Z+V
toCONTROL_L+OPTION_L+SHIFT_L
M+/
toCONTROL_R+OPTION_R+SHIFT_R
Now, this is already something, but I wanted to go beyond, towards the mythical Space Cadet Keyboard, I wanted to have all those modifier keys... Unfortunately Karabiner doesn't support those key codes... Fortunately inside a Linux VM I can (with xmodmap) remap some strange/unused keys into those key codes... There we go
S+F
toKEYPAD_1
and then via xmodmap toHYPER_L
J+L
toKEYPAD_2
and then via xmodmap toHYPER_R
A+F
toKEYPAD_3
and then via xmodmap toSUPER_L
J+;
toKEYPAD_4
and then via xmodmap toSUPER_R
My Vim's LEADER works the same way
C+V
toKEYPAD_5
and the via xmodmap toNO_BREAK_SPACE
M+;
toKEYPAD_6
and the via xmodmap toNO_BREAK_SPACE
I've mapped the Vim's Leader to some strange character that I could never type with a direct key of my keyboard so that I could have leader mappings in insert mode, but that's another story, you could skip this part or you could email me if you wanna know more 😄
- Install Karabiner
- Go to "Preferences" > "Misc & Uninstall" > "Open private.xml"
- Replace the default
private.xml
file withengelbart.xml
- Go to "Change Key"
- Hit "Reload XML"
- A section called "Engelbart" should appear
- Enable the mappings you want to use
- Enjoy :-)
With Seil I've remapped my CapsLock
to Fn
key, so that I can have yet another (sort of) modifier key in my home row! What I do with Fn
? With Karabiner I've remapped Fn+{H,J,K,L} to... I'll let you guess what :-)