Ramblings of an aging IT geek
← Ramblings of an aging IT geek
hardware

soldering switches is the easy half

Building a hot-swap split keyboard was a pleasant evening of soldering, but the real project turned out to be the QMK firmware and a layer layout I could actually remember.

Soldering electronics on a bench

I finally built the split keyboard I'd been threatening to build for about two years. The physical part was a thoroughly enjoyable evening with a soldering iron: solder the hot-swap sockets, the diodes, the controllers, the TRRS jacks, click the switches in, screw the plates together. Methodical, faintly meditative, and forgiving because the sockets mean you can change switches later without going back near the iron.

A circuit board close-up

I'll save you the suspense: the soldering was the easy half. The actual project was the firmware. This board runs QMK, which is the open-source firmware that a huge proportion of the custom keyboard world is built on, and QMK is wonderful and slightly overwhelming in equal measure. The whole layout lives in a C source file, the keymap.c, and you compile it and flash it like any other embedded firmware.

The thing nobody quite prepares you for with a 36-key split is that you have given away a lot of keys, on purpose, and you have to get them back through layers. A base layer for letters. A layer for symbols, reached by holding a thumb key. A layer for numbers and navigation. The cleverness that makes it bearable is home-row mods, where holding a letter key acts as a modifier and tapping it types the letter, so Ctrl, Shift, Alt and Super live under your resting fingers.

#define LCTL_A LCTL_T(KC_A)
#define LSFT_S LSFT_T(KC_S)
#define LALT_D LALT_T(KC_D)
#define LGUI_F LGUI_T(KC_F)

That LSFT_T(KC_S) means "Shift when held, S when tapped", and once your fingers trust it you stop thinking about it entirely. Getting there took a couple of frustrating days. The tapping-term tuning matters a lot. Too short and a slightly slow keypress fires a modifier you didn't want, so you get random capital letters mid-word. Too long and quick chords feel sluggish. I ended up around 180ms with PERMISSIVE_HOLD turned on, which lets a clear chord resolve as a hold even before the timer expires.

For the first week my typing speed was frankly humiliating. Years of muscle memory, gone, replaced by hunting for keys on layers I kept forgetting I'd defined. I nearly went back to the old board twice. The thing that got me through was treating it like learning an instrument rather than buying a tool: ten minutes of deliberate practice a day, and not trying to do real work on it until the layout had bedded in.

It bedded in. I'm writing this on it. I'm not faster than I was on a normal board yet, and I might never be, but my hands move less and my wrists thank me, and there's a particular satisfaction in a keyboard whose entire behaviour is a text file I wrote and can change on a whim. The hardware is lovely. The firmware is the bit you'll still be tinkering with months later, which, if you're the sort of person who builds their own keyboard, is precisely the point.