Keyboards: First Build

Final Product, Keyboard Build.

I decided to build my own keyboard, almost entirely inspired by posts seen on Reddit's r/mk community.

Photos all on Flickr in this set.

Parts List

KBDfans provided all of the parts. I've ordered from them from both the US and UK and, while it takes a little while, the stuff they have available is excellent, and generally it's actually in stock that they can ship rather than being part of a group buy.

The Process

I've got a bag of switches, a PCB and a borrowed soldering iron. What more could I need? I'd already used a pair of ordinary tweezers to test each key against

Starting Point, Keyboard Build.

J tests the first switch we soldered successfully. We confirm that with a real switch in place, the "Esc" key works as advertised.

First Key, Keyboard Build.

We continue soldering switches, though we quickly become aware that we don't have any good technique to keep them straight. Due to this, we start to solder just one leg to try and get everything on, but still give us the capability to rotate things a little later before we do the second leg. Some switches are already completely soldered though, and they're certainly not completely straight.

Continued Soldering, Keyboard Build.

More Soldering, Keyboard Build.

Ashlyn helped with the best technique we found to readjust the keys; trying to get the keys to sit flush against a metal ruler by applying pressure and resoldering the first joint before soldering the second.

Key Readjustment, Keyboard Build.

Eventually they're all soldered.

Finished Soldering, Keyboard Build.

Not all the keycaps are in the right place, but all the switches are in and work.

Testing Some Keys, Keyboard Build.

And once I'd put it in a case, we get our first look at a finished product (bar reprogramming the firmware). Still some wonky keys, especially the "H" right in the middle, but overall I'm really happy with the appearance.

Wonky Keys, Keyboard Build.

What I'm not happy with however is the sound of the stabilized keys. I'm not super bothered about how they feel, but they sound horrible, rattly and scratchy. To fix this I turn to's "The Stab Lab: A living stabilizer modification guide. The stabilizers I have don't require "clipping", but I decided to try my hand at "lubing" and "band-aid modification". That required buying some lubricant, I went with Silverhook SGPGT90 Silicone Grease.

Lubing the Stabs, Keyboard Build.

I applied the lubricant with a small brush that Ashlyn had lying around.

Lubing the Stabs, Keyboard Build.

Here's my poor attempt at the band-aid mod. Looking at it afterwards I think I should have cut the pieces a little bit bigger. I have absolutely no idea how much difference they're making.

Poor Band Aid Mod, Keyboard Build.

Poor Band Aid Mod, Keyboard Build.

With those modifications a huge difference was made. I can barely tell any difference at all sound wise between the stabilized keys and the non-stabilized keys!

Here's another shot of the final product.

Final Product, Keyboard Build.

Flashing the firmware

The keyboard uses the open source QMK firmware.

To create my own custom layout I forked the QMK github repo, and added my own layout to the DZ60 keymaps directory.

Link to my fork, Link to the commit where I added my custom layout.

There's nothing too interesting about my keymap, but it does show how you can get exactly what you're after if you are able to use QMK. I've been using software to make "some modifier + arrow key" be home/end/page up/page down for years, now I can add it directly to the keyboard firmware!

Once you've got a custom keymap, the process to flash the firmware to the keyboard is pretty simple. Start by making sure you've got the prerequisites installed to be able to build the firmware. In the directory where you have qmk_firmware checked out:

$> ./util/
$> export PATH="/usr/local/opt/avr-gcc@7/bin:$PATH"
$> make dz60:mjwbenton

That will build the firmware with the custom keymap. If it's successful then you're ready to actually do the flashing.

Plug the keyboard in whilst holding down "Space+b", then flash the firmware with:

$> make dz60:mjwbenton:dfu