← Blogs

My Hyper Key ✦

karabinermacproductivitykeyboard

I grew up on Windows. No strong opinions about keyboards. Caps Lock was Caps Lock, something I hit by accident once a month.

Then I installed WSL and got hooked on Ubuntu inside a Windows shell. It started with Ghostty as my terminal, then tmux, then vim. That spiraled into an obsession with Unix. I bought a Mac because I wanted the real thing, not a subsystem bolted onto an OS that fights you at every turn.

That changed how I thought about input. Why reach for a mouse when hjkl is right there? Why click through menus when a keystroke can do it faster?

I found Max Stoiber’s video on his keyboard setup[1] and it rewired my brain. Remap Caps Lock into Hyper (✦), a modifier chord that doesn’t exist on any standard keyboard, and use it to build an entire shortcut layer on top of your normal layout.

I’ve been using this system for over a year. I can’t go back. My Caps Lock keycap is the shiniest key on the board.

Note: throughout this post, Hyper (✦) means ⌃⌥⇧⌘ = Ctrl+Opt+Shift+Cmd.

What Hyper (✦) Is

Every keyboard has four modifier keys: Control, Option, Shift, Command. Hold all four simultaneously and you get a chord that virtually no application uses: ⌃⌥⇧⌘. That’s Hyper (✦).

Karabiner-Elements[2] lets you remap Caps Lock to send this chord when held. Tap it alone and it sends Escape (useful in vim). Hold it and you’ve unlocked a parallel keyboard layer.

{
  "description": "Caps Lock -> Hyper Key",
  "from": { "key_code": "caps_lock" },
  "to": [{ "set_variable": { "name": "hyper", "value": 1 } }],
  "to_after_key_up": [{ "set_variable": { "name": "hyper", "value": 0 } }],
  "to_if_alone": [{ "key_code": "escape" }],
}

One key, two functions. No conflict with anything.

Sublayers

A single modifier gives you 26 letters to bind. That’s useful, but not enough. Sublayers multiply the space.

Hold Hyper (✦), then press a letter to enter a mode. While in that mode, every key on the keyboard has a different meaning. Release Hyper and you’re back to normal.

I have seven sublayers:

KeyModeWhat it does
bBrowserOpen websites instantly
oOpenLaunch applications
wWindowTile, move, resize windows
cCaptureScreenshots, OCR, clipboard (CleanShot X)
sSystemVolume, brightness, lock, DND
vVimArrow keys, scrolling, mouse clicks
rRaycastColor picker, emoji, notifications

Each sublayer is a Karabiner variable. When you hold ✦ + b, the variable hyper_sublayer_b is set to 1. Every binding inside that sublayer checks for this variable. Let go and it resets to 0.

The sublayers are mutually exclusive. Activating one requires all others to be at 0. No accidental crossover.

Browser: ✦ + B

The simplest sublayer. Hold ✦ + B, then press a letter to open a site in your default browser.

KeySiteMnemonic
xX (Twitter)
yYouTube
fFacebook
gGitHub
rReddit
cChatGPT
mGmailmail
pGoogle Photosphotos
lLinkedIn
tMonkeytypetyping

Each binding is a shell_command that runs open https://.... No browser extension, no bookmark bar, no Spotlight search. Two keys and the page is loading.

{
  "conditions": [{ "name": "hyper_sublayer_b", "type": "variable_if", "value": 1 }],
  "from": { "key_code": "g" },
  "to": [{ "shell_command": "open https://github.com" }],
}

I can open GitHub from any application, any context, without touching the mouse or switching to a browser first.

Open Apps: ✦ + O

Same idea, but for applications. Hold ✦ + O, press a letter, the app opens or focuses if already running.

KeyAppMnemonic
1Bitwarden
bFirefoxbrowser
zZen Browser
dDiscord
tGhosttyterminal
mObsidianmarkdown
fFinder
nThings 3notes
pSkimpdf
hHelium
cZedcode
{
  "conditions": [{ "name": "hyper_sublayer_o", "type": "variable_if", "value": 1 }],
  "from": { "key_code": "t" },
  "to": [{ "shell_command": "open -a 'Ghostty.app'" }],
}

Before this, I used Cmd+Space and typed app names into Spotlight. It worked, but it’s sequential: invoke launcher, type name, wait for match, press Enter. Hyper (✦) is parallel: hold two keys, press one more, done. The app is already opening before Spotlight would’ve finished indexing.

The Mental Model

Caps Lock turns your keyboard into a command palette. Each sublayer is a category. Each key is an action.

There’s no memorization phase. You build the bindings around things you already do twenty times a day. Within a week the muscle memory is automatic. Within a month you forget the keybindings exist. Your fingers just know.

The real shift isn’t speed. It’s that your hands never leave the keyboard. No reaching for the mouse to click a dock icon. No Cmd+Tab cycling through windows. No opening a browser, clicking the address bar, typing a URL. Every common action is two or three keystrokes.

With the vim sublayer (covered in a later post), I can keep my thumb on the trackpad and do everything else with the left hand. Navigate, scroll, click, switch apps, tile windows. I don’t even need to look at the screen half the time. The muscle memory runs on its own.

I’ve tried going back to Windows. Nothing matches the speed. The OS doesn’t have anything close to Karabiner, and even the third-party tools feel like duct tape over a missing foundation.

Pair this with a terminal running tmux and it gets absurd. ✦ + O + T opens Ghostty. Tmux prefix + HJKL to navigate panes. Vim motions inside each pane. Three layers of keyboard-driven control, all building on the same muscle memory. Unbeatable.

✦ This is part one of a series on my keyboard setup. Next: window management with vim-style tiling.

My Karabiner config is in my dotfiles.