How I Built a Hyper Key System on a Split Keyboard
I bought a Dygma Raise because my wrists hurt. Six months of 10-hour coding days on a MacBook keyboard had done what six years of laptop use hadn't. The split design helped immediately — shoulders could relax, wrists could stay straight. But the real unlock wasn't the split. It was the extra keys.
The extra keys problem
The Dygma Raise gives you a handful of extra thumb keys on each side of the split. The default approach is to map them to things you want faster access to — media controls, window management, maybe a macro or two.
The problem is that you run out of things to map. By the time I'd assigned arrow keys, backspace, enter, and a couple of app shortcuts, I had a few thumb keys left and no obvious candidates. The keyboard was already better than a laptop. But I felt like I was leaving something on the table.
The hyper key
A hyper key is nothing new in the ergonomic keyboard world. Map one physical key to trigger a modifier combination that no application uses natively — typically Cmd+Ctrl+Option+Shift — and you get a clean namespace for global shortcuts. Nothing conflicts with it. Every application ignores it. You own the entire keymap.
I'd read about hyper key setups for years and dismissed them as overengineering. I was wrong. Once you try it, going back feels like coding with half your fingers.
What I mapped
The hyper key sits under my left thumb. Holding it layers an entire secondary keyboard across the rest of the board:
- Hyper + H/J/K/L — window management. Left half, right half, maximize, center.
- Hyper + 1/2/3/4 — jump to spaces 1-4.
- Hyper + Enter — open terminal. Doesn't matter what app I'm in.
- Hyper + [ and Hyper + ] — previous/next tab in whatever application has focus.
- Hyper + Escape — lock screen.
The key insight: these aren't rare operations. They're things I do constantly, and every one of them was previously a slow mouse gesture or a three-key chord. The hyper key collapses them all into a single consistent layer.
The glue layer
Dygma's firmware handles the key mapping on the hardware side — one key fires Cmd+Ctrl+Option+Shift. The global shortcut bindings run through Hammerspoon, which listens for the hyper modifier and triggers the appropriate action:
-- SABOOR: Is this your actual Lua? Or should this be replaced with your real config?
-- hyper + H sends focused window to left half
hs.hotkey.bind({"cmd", "ctrl", "alt", "shift"}, "h", function()
local win = hs.window.focusedWindow()
if win then
local screen = win:screen()
local frame = screen:frame()
win:setFrame(hs.geometry.rect(
frame.x, frame.y,
frame.w / 2, frame.h
))
end
end)
The config is small enough to read, debug, and extend without ceremony.
What changed
Speed. Switching from editor to terminal used to be: look at the dock, click, wait, orient. Now it's one thumb press. The cognitive cost of context switching dropped, which means I switch contexts more freely instead of staying in one app too long because it's annoying to leave.
Posture. Before the hyper key, I'd reach for the trackpad constantly — move a window, switch a space, click a tab. Now my hands barely leave home row. That adds up over long sessions.
Consistency. Every app responds to the same hyper-layer commands. I don't have to remember whether a particular app uses Cmd+Shift+[ or Ctrl+Tab to switch tabs. It works everywhere because it's intercepted before the app sees it.
Would I do it again
Yes, and I'd do it sooner. The hyper key is one of those things where the setup cost is an hour and the payoff is every working day afterward.
The ergonomic benefit of a split keyboard is real. But the hyper key layer is what made me faster.