Hyper key in macOS
With the ubiquity of window manager applications in macOS, it is surprisingly easy to run out of good, unique keyboard shortcuts that do not interfere with other applications. A common solution for this problem is to remap a key (often caps lock) to the “hyper key”: a combination of shift, control, option, and command. Since this modifier key combination is very unlikely to be taken by shortcuts in any application, it collectively becomes an extra modifier key. My take on this solution is a single purpose app called Hyperkey.
Remapping caps lock to the hyper key is actually quite easy set up in Karabiner-Elements, which is free and open source. Hence an obvious question: why bother creating a paid, closed source app that does the same thing without all the other key remapping stuff? Let’s take a look at it.
The quest for lightweight simplicity
Mainly, I just prefer something lighter weight and I don’t actually want anything else that Karabiner-Elements has. That’s why Hyperkey’s UI is just checkboxes with a couple dropdowns where necessary.
Remapping a key is just a checkbox & dropdown away. I actually prefer remapping right option to the hyper key.
Under the hood
Hyperkey performs key remapping at a few high-ish level positions in the macOS event stream, unlike Karabiner Elements. This has some good and bad tradeoffs. The good is that it makes Hyperkey much more light-weight than Karabiner Elements. It is not really possible for Hyperkey to create a kernel panic, and it’s trivial to uninstall Hyperkey if needed. The bad is that there are some applications or macOS system behaviors that won’t interpret the remapped key properly. However, Hyperkey will work for the vast majority of scenarios. A note if you’re using Keyboard Maestro: Hyperkey will work with it but you will need to press all the modifier keys in the Keyboard Maestro shortcut recorder and all subsequent behavior will still be properly triggered.
A simple trackpad gesture
Also, I really like using the trackpad to execute modifier keypresses in the implementation I created specifically for Hyperkey. It’s a little different and can take initial memorization to remember to use it, but the more I’ve used it the more natural it feels. I use it with my thumb on the internal trackpad of my MacBook Pro, and with my index finger on external trackpads. It does require only one touch to work, so a resting palm must be removed. The main drawback to using any trackpad gesture is that there is a slight bump in the system resources that are consumed by the app.
My goal with Hyperkey is to maximize a human performance gain while minimizing configuration and OS impact. Despite pre-existing solutions to this problem, I still can’t help but gravitate toward Hyperkey and this goal.