
Most keyboards have a key that almost nobody uses for its intended purpose. It’s large, it’s in a prime location, and its default behaviour — toggling Caps Lock — is something most people do by accident far more often than on purpose.
What if that key could do something genuinely useful instead?
A Hyper Key is a single key that sends all four modifier keys simultaneously: shift, control, option and command. No application uses this combination for anything. It’s a completely blank canvas.
Hold the hyper key and press any letter, and you get a keyboard shortcut that will never conflict with any existing shortcut in any application. hyperT to open Terminal. hyperB for your browser. hyperE for your editor. hyperX to lock your screen. Whatever you want.
I first learned about this idea from Brett Terpstra’s 2012 blog post on making caps lock useful. That post changed how I use my Mac, and I’ve had a Hyper Key ever since — over a decade now.
For years, getting a Hyper Key on macOS required a combination of tools:
Karabiner-Elements handled the low-level key remapping — turning caps lock into a virtual modifier that could trigger other actions. It’s an incredibly powerful tool, but it’s also complex. The configuration is JSON-based, the virtual modifier system has its own learning curve, and it installs a kernel extension (or in more recent versions, a virtual HID device driver).
Hammerspoon provided the automation layer — binding Hyper Key combinations to actions like launching apps, moving windows, or running scripts. It’s essentially a Lua scripting bridge to macOS APIs. Again, powerful, but it’s a general-purpose scripting tool that happens to support hotkeys, not a focused Hyper Key solution.
Together, they worked. But it always felt like using a crane to hang a picture. Two background processes, two configuration systems, and a fair amount of complexity for what is conceptually a simple idea: make Caps Lock send four modifiers at once.
So I built HyperCaps.
It does exactly one thing: turns caps lock into a hyper key. No configuration files. No scripting language. No kernel extensions. Just a menu bar app that remaps the key at the HID level and intercepts the events with a CGEvent tap.
Here’s how it works under the hood:
Layer 1: HID remap. The hidutil command remaps caps lock to F18 at the hardware input level. This happens before any software sees the keypress. F18 is a real key code that no physical keyboard has, so there are no conflicts.
Layer 2: CGEvent tap. A global event tap watches for F18 events. When F18 goes down, “hyper mode” activates. Any subsequent keypress gets the four modifier flags (shiftcontroloptioncommand) injected into it before it reaches the active application. When F18 goes up, hyper mode deactivates.
Layer 3: Caps Lock toggle. shiftcaps lock still toggles actual Caps Lock on and off, with a visual HUD in the centre of the screen. So the key’s original function isn’t lost — it’s just moved behind a modifier.
The entire app is around 400 lines of Swift. It has no dependencies beyond the system frameworks.
The Hyper Key is the backbone of how I navigate my Mac. Some examples:
These are configured in macOS System Settings → Keyboard → Keyboard Shortcuts → App Shortcuts, or in tools like Raycast or Alfred that support custom hotkeys. HyperCaps doesn’t handle the bindings itself — it just makes the Hyper Key available. What you bind to it is up to you.
The beauty of this approach is that you never have to think about conflicts. hyperT will never clash with anything because no application assigns that combination to anything. Your shortcuts are yours.
If you want to try it:
To bind Hyper shortcuts to specific actions, use System Settings → Keyboard → Keyboard Shortcuts → App Shortcuts (for app-specific shortcuts) or a launcher like Raycast.
To toggle Caps Lock itself, hold shift and tap caps lock. A HUD appears to confirm the state.
The Hyper Key is one of those ideas that, once you have it, you can’t imagine going back. A single key that opens up an entire parallel keyboard layer — no conflicts, no complexity, no configuration.
I’m grateful to Brett Terpstra for introducing the concept to me, and to the Karabiner and Hammerspoon communities for making it work for so many years. HyperCaps is my contribution — a focused, native, single-purpose implementation that does one thing cleanly.