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

building a keyboard, and the firmware that makes it mine

Assembling a split mechanical keyboard from a kit and flashing QMK so the layout finally matches the way my hands actually work.

A soldering iron and electronics on a workbench

The keyboard arrived as a bag of parts and a PCB, which is exactly how I wanted it. I have used the same membrane board for years, and it works, but I had got curious about whether the layout was holding me back or whether I was just blaming the tools. The only way to find out was to build something I could change.

The soldering was the easy bit, and I say that as someone who is not especially good at it. Switches sit on a plate, the plate holds them square, and you flip the whole assembly over and do sixty or so joints in a rhythm. Heat the pad, feed the solder, count to two, move on. The diodes were fiddlier because they are small and have a polarity that matters, and I got one in backwards, which I only discovered later when a single key refused to register.

A close-up of a circuit board

That key is a good story for why you test as you go. I had populated the whole board, screwed the case together, and felt rather pleased with myself before plugging it in. One column was dead. Pulling it apart, reflowing the suspect diode, checking it the other way round, that took longer than the entire rest of the build, and it was entirely avoidable. The lesson, again, is the boring one: verify the cheap thing before you commit to the expensive thing.

The real point of the exercise was the firmware. This is a QMK board, which means the layout lives in a C file you compile and flash, not in some vendor utility that only runs on Windows. You describe the keymap as layers, and you put the keys where you actually reach for them.

[_BASE] = LAYOUT(
  KC_TAB,  KC_Q, KC_W, KC_E, KC_R, KC_T,
  KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G,
  KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B,
                          MO(_NAV), KC_SPC
),

The thing that has genuinely changed how I type is the layer key held under my thumb. Hold it and the right hand becomes arrows, home, end, page up and down, sitting under the fingers that are already there. No reaching for a cluster off to the side, no leaving the home row. After a week it stopped feeling like a trick and started feeling like the keyboard had always worked this way and every other one was wrong.

The build cost more than a perfectly good off-the-shelf board, and it cost an evening I will not get back to a backwards diode. I would do it again tomorrow. The value is not the clicky switches, pleasant as they are. It is that the layout is now a text file I own, in version control, that I can change the moment my hands tell me something is in the wrong place.