SpaceLauncher for macOS

The SpaceLauncher Story

It started in 2013, with Alfred.

I read a post about adding app hotkeys in Alfred, and it clicked right away – jumping to an app with a single key felt so much faster than searching for it.

Around then people were turning Caps Lock into a “hyperkey,” but that never worked for me. I’m old-fashioned about typing, with one assigned finger per key – and Caps Lock shares the left pinky with 1, Q, A, and Z. Hold Caps Lock down and that pinky is busy, so it can’t reach the very keys I’d want to combine it with. A combo like Caps Lock + A just isn’t a motion my hand can make.

Later I moved to LaunchBar, which didn’t have that feature. So I turned to Karabiner. If I was going to remap keys anyway, I might as well pick a comfortable one – and the most comfortable key, already sitting under my thumb, was Space. I rigged up something close to what SpaceLauncher does today entirely in Karabiner. (The old config is here – probably long broken by now.) So yes: Karabiner could do this. For some people it still can. But not for everyone, and I’ll get to why.

Then a macOS update arrived and Karabiner hadn’t caught up yet. I’d grown too attached to typing this way to go without it, and at the time I assumed Karabiner had been abandoned. So I decided to build my own. (It hadn’t been abandoned at all – it’s still updated to this day, all these years later. Thank you, Karabiner.)

The part that was harder than it looked

Once I built it and handed it to other people, I learned something I hadn’t expected: everyone’s typing rhythm is different.

Real typing overlaps. The next key often goes down before the last one is fully up, and around Space it happens constantly. To let Space be a shortcut trigger and a normal space bar at the same time, I had to write a lot of logic – far more than I’d guessed going in. General-purpose remapping and automation tools like Karabiner, Hammerspoon, and Keyboard Maestro can approximate parts of this, but SpaceLauncher is built specifically around the Space timing problem. That problem is the whole reason it exists.

I’ll be honest: I’m not a great programmer, and that tangle of timing logic regularly left my head spinning. If I’d known how hard it would be, I might have just waited for Karabiner to update instead. Two things kept me going. One, I used it every single day. Two, every so often a user would send a kind note, or bring me a problem worth solving.

A long detour

I won’t pretend the road was straight.

Every time the app reached a stable spot, I’d run out of momentum – new features were just hard to add. Then, around 2022, a user asked whether a single modifier tap could work as the leader key. I liked the idea. I worked out a way to receive the trigger key through a window, clean enough to ship on the App Store, and that became keyseq. I put real care into it too – modifiers also need to tell a leader key apart from normal use, so there was the same kind of fiddly patching inside, just a little simpler.

Then I thought: maybe keyseq could become the core of SpaceLauncher. That became SpaceLauncher 2, which supports all of today’s leader keys – but the underlying structure had a fundamental flaw (receiving trigger keys through a window turns out to be a great way to make trouble for myself), and by then it was too tangled for me to want to open again. So I drifted over to keyseq. SpaceLauncher, I’m sorry.

Still going

Then, in early 2026, AI finally got good enough.

I mean that literally – just barely good enough, right at this moment. The AI from six months earlier couldn’t have untangled logic this gnarly. With that help, I can finally get back to what I’d wanted to do for years.

So this story doesn’t have an ending. SpaceLauncher isn’t finished – and that’s the best part. A better one is on its way. Here I come.