Hardware Project: Build Your Own Keyboard

I recently picked up the Infinity Keyboard Kit on MassDrop after deciding I was overdue for a hardware project. I use an external monitor and clamshell my laptop, so I've been antsy to discover that elusive perfect keyboard. Now my destiny for peripheral nirvana would at the very least be in my own hands.

The Build

I settled on the brown Cherry MX switches since I've used blue switches in the past and wanted something a bit softer and hopefully quieter for my co-working neighbors. Massdrop also offered Matias switches, but I knew I'd have more keycap options with the Cherry MX's. With the order completed, I just had to sit and wait for it to be delivered... and boy, did I have to wait. :-/ When the kit finally arrived, it included the Cherry MX switches, the PCB and the metal case. Assembly was easier than anticipated – bravo to Massdrop and everyone involved. I simply popped all the switches into the case, aligned and clipped on the PCB, and then got to work soldering.

The Design

With the initial build complete, I turned my attention to the keycaps. After much brainstorming and a bit too much time in Photoshop, I settled on a clean, white design with rainbow colors on the modifier keys. For the primary keyset, I bought the DCS ABS Double Shot from Signature Plastics. For the modifier keys, I had to do a custom order from WASDKeyboards. Lastly, I added switch dampeners to soften the key press and reduce noise.

Keycaps and Dampeners

The Firmware

Thank god for open source. Jacob Alexander (aka haata) has provided everything you need for keyboard firmware as part of the Kiibohd project. As long as you're comfortable installing a few build tools and compiling from source, it's as simple as adding your own keyboard layout files (in KLL format), running cmake to build, and using dfu-util to upload to the device.

With the ability to customize freely, I set off and started hacking together my ideal layout. A few changes that I customized:

  • Caps Lock has been changed to a fn key. While pressing the fn key, h j k and l become arrow keys (same as vi). Also, since the keyboard format is 60%, you can press the fn key to turn the number keys into F1, F2, etc.

  • The right Ctrl, Alt, etc keys have been changed to media keys. Who uses these anyway? They are now Previous Track, Play/Pause, Mute and Next Track

  • Note how the backslash / pipe key is slightly larger in the infinity layout, and the backspace key is a standard key size. Well, I switched them so I have to reach less distance when hitting backspace (which happens very often), and it's a larger key on this layout anyway!

  • The small key next to the right shift key toggles between QWERTY and Coleman. I've used Dvorak in the past have heard nothing but great things about Coleman. shrug Maybe I'll give it a try...

You can find my KLL files with all layers on GitHub.


I spend a lot of time on my computer, and while probably not practical, it's been quite fun having crafted my own tool. Cheers to sharp tools and open source!