Karabiner is an absolutely amazing app that lets you remap keys at a very low level on macOS.
I have completely remapped my keyboard with it and every key on my keyboard is a custom modifier key that I can program to do what I want.
For example you can make caps lock into an escape key when pressed once but if you hold it, it becomes a hyper key. Hyper key means that a key now serves two purposes, once when pressed alone and once when held down. So for example for remapping caps lock, we can remap it to act as escape when pressed alone once but if we hold down on it it becomes ⌘ + ⌃ modifier key. So
caps lock + F becomes ⌘ + ⌃ + F. And so on.
I take this idea further and define these kind of hyper keys but for every single key on my keyboard. I like to call them sticky keys.
My personal Karabiner setup
I generate my Karabiner config with a ruby script here. It contains all the necessary functions needed to make sticky key and simultaneous key definitions work.
- I can embed simultaneous key mappings inside sticky key definitions.
- KE complex modifications - Has website too.
- My detailed post on Alfred forum mentioning how I use Karabiner
- Interesting setup
- Karabiner Elements documentation (in Japanese)
- Tekezo's launcher mode
- Karabiner.json reference manual
- Karabiner JSON spec
- Write Karabiner config in YAML and then convert to JSON
- shell command JSON
- Karaconv - Converter from Karabiner to Karabiner-Elements text configuration format.
- Cursor keys belong at the center of your keyboard
- Sticky shift key example
- Karabiner KeyCodes and Modifiers
- New Hyper Key