Building a Keyboard

My custom keyboard

When I realised I’d be staying in the US, I decided it would be cheaper to sell my current mechanical keyboard to someone back in the UK and buy myself a new one here. It would also give me the opportunity to try something a bit different.

Since I bought my first mechanical keyboard the hobby has exploded, with many options available. The problem I started to notice is that it was possible to get anything you wanted provided it was in the US ANSI layout. Being a Brit and a Mac user, my choices were more limited. I decided that, since I had a lot of free time on my hands, I would build my own.

This would give me a number of advantages over a pre-built keyboard. The first is that I get to choose exactly what switches I want. The second is that most PCB’s available to self builders use firmware that allows the keyboard to be fully programmable. In other words, I would be able to make any key do whatever I wanted it to do. As you can imagine, this appealed!

Size and Layout

There’s a staggering number of choices when it comes to size and layout options, from full size and ten keyless to 60% and 40% size layouts, all the way to esoteric split designs and ortholinear layouts. I settled on 60% because I figured I could get by without function keys and I’m so used to Vim arrow keys that I could just map those keys to a function layer for use anywhere. There are also plenty of options when it comes to building 60% sized boards.


After some research I decided that I wanted either Zealio or MOD switches, so I ordered a couple of switch testers from NovelKeys to try them out. I quickly decided that the Zealio switches were the way forward as they felt much smoother to me, with a longer, rounder tactile bump compared to the MODs.

I ordered the switches directly from ZealPC and added Cherry stabilisers to the order.


There are plenty of choices when it comes to 60% keyboard PCB’s (GH60, Nerd60, FaceW, Satan, Zeal60, DZ60). The Zeal60 looked interesting at first–I felt it would be a good match for the Zealio switches–but I dismissed it early on due to it’s price and the fact that I didn’t want RGB backlighting.

I ended up going for the GH60 because it seemed like the most open option and had everything I needed. It’s also nice to support open hardware where possible.

I ordered the PCB in black from


It’s not strictly necessary to have a plate, but it makes the keyboard feel more solid and better to type on. Surprisingly this was the hardest part to source as most pre cut plates are either ANSI layout or they are universal, meaning they have enough cut outs to support many different layouts, including ISO. The problem with these plates is that some of the switches are not held particularly securely due to the extra cut outs. After some fruitless searching I decided to get my own plate cut out of 1.5mm stainless steel. This was relatively expensive—about double the price of a pre-cut plate—but it meant I got exactly what I wanted.

The plate was cut by Lasergist.


Because I wanted full control over what was printed on the keycaps there was really only one option and that was to get them custom printed by WASD Keyboards. I had created a custom layout using their template for full size and TKL keyboards, so I took the same file and modified it for a 62 key layout. I got the modifiers in black and the alpha keys in dark grey for a Dolch style two tone look.


The last thing I needed was a case. I’d decided early on that I wanted a high profile, silver aluminium case that would match well with my MacBook Pro. I ended up picking this case from KBDFans. It was heavier than I expected, even without the added steel weight!

The keyboard case.
The case. It's heavy!

Building the board

Before I started building the board I needed to test the PCB. The board arrived with no firmware installed so I flashed the default GH60 EasyAVR firmware to the board using dfu-programmer. Then I could test each switch location by bridging the pads on the PCB with a paperclip. Everything worked just fine so I started putting it all together.

The first thing I needed to do was to clip and lube the stabilisers. Cherry stabilisers can feel mushy and change the feel of the keys unless they are modded by clipping two little plastic parts off the bottom of the inserts. Lubricating them helps to reduce their influence on the key feel even more. I used some Krytox lube that I ordered from [] for this, putting a thin coat on the stems and on the stabilising wires where they contact the plastic parts.

Once the stabilisers were mounted onto the PCB I started placing the switches in the plate, starting with the four corners so I could get the plate and PCB aligned. Then I started fitting the rest of the switches, making sure they were seated fully into the PCB–the mounting legs fit tightly into the holes on the PCB.

The plate with PCB and switches mounted.
The switches all in place.

Once the switches were all fitted it was a simple matter of soldering all the legs to the pads on the PCB. I don’t own a soldering iron myself so I used the services of the wonderful Hack Manhattan hack space. This was my first time doing through hole PCB soldering and I was a little nervous about messing it up so I was sure to read plenty of guidance on the Internet and watch a couple of Youtube videos. In the end it wasn’t actually that tricky! The secret is using a temperature controlled iron and being sure to heat both the leg of the switch and the PCB pad at the same time. This is what makes the solder flow nicely and form a good connection.

The back of the PCB with the switches soldered.
All soldered up.

After I’d soldered each row I connected the keyboard to my computer to test all the switches I’d just soldered. I used a website called Keyboard Tester for this.

The keyboard hooked up to my laptop to test the switches.
Testing the switches.

With all the switches soldered into place and tested it was time to put the board into its case and fit the keycaps to the switches. The PCB and plate sandwich is mounted in the case using five screws through holes in the PCB. The screw layout follows the popular Pok3r layout which makes it compatible with many other 60% options.

I started on the keycaps by fitting the large, stabilised keys first. The enter key, space key and right shift key. Then I just worked my way down row by row until I was all done.

The keyboard partway through fitting the keycaps
Fitting the last few keycaps.

I’m super pleased with the finished board! It’s a pleasure to type on although it took me a few days to get used to the 60% layout. I also made a bunch of tweaks to the key layout (now using the QMK firmware) which means the key legends no longer reflect what the keys do. I plan to get reprinted keycaps. My current keymap is here.

The keyboard hooked up to my laptop.