i finally designed & built a custom mechanical keyboard this year (open hardware/software made it easy)

i’m not going to get into why someone would want to, but i’ve been meaning to build a fully custom mechanical keyboard for a long time.

that desire dates back to when just a few folks were hard-wiring matrixes to create custom boards… now us geeky tinkerers have multiple mature open-source firmwares to choose from, open-hardware PCB designs to reference, and plenty of thorough “how-to” guides to read. there’s a plethora of switches, keycaps and even insanely expensive kits out there.

thanks to the current blossoming state of the hobby, it was straight up cake to create a keyboard from the ground-up.

though not a completely from-scratch KB, this project was a few notches above just assembling a kit. i sourced all the bits from various manufacturers, soldered every single component, flashed a bootloader onto a raw MCU, designed and assembled a unique case, and hacked-on an extra little bright idea at the end.

what you see here is based on CFTKB’s “Discipline 65” open-hardware PCB design. you can buy a complete kit (occasionally), but i wanted something a little different so i had JLCPCB fab a batch of the main boards in blue and silver.

the miscellaneous electronic components were sourced through Mouser and DigiKey.

i’d been enjoying some Zealio v1 65g on my daily driver GMMK hot-swap TKL for a while. however, i really preferred the stiffness of the Cherry MX Clears on my previous MassDrop DSX – nope, i’m not a “delicate” typist by any stretch! so i ended up purchasing the heavy yet buttery 78g Zilent v2 switches for this board.

i forgot to get screw-in stabilizers from Zeal when i ordered the switches, so i ended up just grabbing Durocks through Amazon for fast shipping.

i used a bit of SuperLube on the stabs, but did not lube the switches. i just don’t have the patience for it, nor do i think my unrefined typing feels could really appreciate the difference. yes, i realize 90% of any comments i get on this post will be telling me how wrong i am here!

there were 2 minor challenges when soldering the board. first, the USB-C connector’s pins are tiny and tightly-spaced. however, a little flux and the soldering “drag technique” made short work of those.

second, without a top plate, getting all the switches perfectly square and fully seated so the keycaps had nice even gaps required a little fiddling. i actually had to adjust (re-solder) several switches after the keycaps were in place.

once everything was soldered, i loaded CFTKB’s customized fork of the USBaspLoader bootloader onto the ATmega32A using a SparkFun Pocket AVR Programmer, then compiled and flashed the popular QMK firmware.

for the case, i tried to have a few interesting subtle details in an overall minimal design so as to not detract from the simplicity of the raw PCB.

the bottom plate is 1/16″ brushed stainless steel. the windows near each end are an attempt to make the PCB appear to float within the black outline.

a simple 3/8″ thick black acrylic surround sits on top of the SS. it was cut 0.5mm larger than the plate to create a fine hang-over detail. the acrylic attaches with screws from the bottom for a more sophisticated look than typical sandwiched plate style cases.

all the plastics were laser cut by Ponoko. they can also do metal, but i used SendCutSend for the plate because i already had an order going in with them (unrelated project).

i felt the high-gloss acrylic looked cheap, so i used #0000 steel wool to produce a matte brushed look. by rubbing only left-right, the texture created matched the bottom plate.

everything is held together using assortments of M2 screws and standoffs from Amazon.

a riser was also cut from the 3/8″ acrylic and given the same fine textured finish. the position and thickness gives the board only a mild incline, which is just my personal preference. the feet are 8mm x 2mm adhesive rubber bumpons.

the white rectangle in the base plate is a cut-out for bottom lighting. the normal Discipline power indicator LED was removed and instead i hacked on a cool white 5v LED strip to provide simple underglow.

i used some vellum sheets sandwiched between layers of an old tablet screen protector to create the white diffusion you see.

the cut-out is intentionally smaller than the strip so that a good amount of light bounces back up from the SS plate to light the PCB edges.

the main goal was to reinforce the “floating” look by illuminating those edges and having light bounce up from the desk through the end windows. however, i was pleasantly surprised with the amount of light also coming up through the PCB holes into the clear switch bodies.

the top protector plate covering the components was laser cut from 1/8″ translucent light gray acrylic.

the keycaps are DSA “Eve”, which was one of the first custom keysets i ever saw and what really inspired me to take a serious look at the whole mechanical keyboard thing.

seems like a lot of work now that i’ve typed all this – but i guess that’s what any hobby is like!

i still need to make a custom color-coordinated USB cable since that’s all the rage these days. some folks like to see (hear) demo videos – i’ll do one soon and update this post.

for now though, here are a few more photos…

say something about this post

  • (will not be published)