DIY Keyboard Build Notes

In Fall of 2017 I began working on a custom keyboard. A rough build log along with my notes on the process is shown below. In Spring of 2018 I put this project on hold after I graduated UT (and lost access to the machine shop and makerspace) and moved to Tennessee.

Mechanical Design


The case began as a solid piece of 12“x5”x1" 6061 Aluminium bar stock. 3D CAD models were created in Solidworks detailing the interior dimensions and final shape of the part. The Mastercam plugin was used with the final model to create the G-Code necessary to perform the cutting operations on a Haas CNC machine. The CNC machine was used to do the large interior cuts removing most of the material, which left behind a spiral design from the dynamic milling operation. A separate Tormach machine will be used to perform the slanted cut on the base of the case, giving it a 10 degree slope. The finishing operations on the outside of the case and the USB slot were done using a manual mill.


The faceplate was originally designed to use 16 gauge 6061 Aluminum sheet metal, but the plasma cutter intended for the cutting operation was out of service. To verify the initial design I used a Full Spectrum 30W laser cutter to cut the faceplate out of a 3mm acrylic plate. I really liked the clear material, and without an easy way to do precise vectored cuts on the sheet metal I chose to proceed with the acrylic plate.

However, the key switches and plate mounted stabilizers were designed to be used with a 1.5 mm plate. On the thicker acrylic plate the switches wouldn’t snap in correctly and the stabilizers wouldn’t function. After experimenting with a Dremel tool, I realized that the top and bottom of the switch cutouts could be ground away slightly, removing the material from blocking the snaps on the switches. This cut didn’t take very long to do for the 60ish cut outs, but sometimes I ground too much material away and the switches wouldn’t lock in correctly. For the stabilizers a similar cut with a Dremel tool needed to be done, except in addition to clearing space for the top of the clips, the wire bar needed a dedicated groove cut out. The first few attempts didn’t turn out very well, but the cuts on the final design ended up okay.

Next time I do these cuts, I need to get PCB mounted stabilizers to rest above the plate instead of underneath it. Also, I need to be more careful about cutting out the switch cut outs to prevent some keys from rotating. The stabilizers also rotated slightly with the cut outs, adding additional resistance and friction preventing correct operation on a key press.

The faceplate vector file was generated from The final design uses the following settings.

    [{w:2},"Shift",{a:4},"Z","X","C","V","B","N","M","<\n,",">\n.","?\n/",{a:6},"Page Up",{a:7},"↑",{a:6},"Page Down"],
Key_type \_t:3
Stabilizer type \_s:1
Case type: none
19.05 mm key spacing

In the future I should use the _t:1 key type and a 19 mm key spacing. Costar stabilizers also might be easier to work with than the Cherry stabilizers.

Electrical Wiring

This is where it got hairy. Was able to solder all the diodes correctly on the faceplate, but the angles do not look straight at all. I blame the fact that I bent all the diodes at once to try and keep them looking consistent. However I had better results whenever I bent each diode separately. Adding the column wires was much more straight forward. Measure out about 8 inches of wire for a 5 inch final column. Using a clamp-type wire stripper strip off enough .75 inch segments to go between each row. The bare wire segments are then looped around themselves to go around the pins. The loops need to be tight enough to avoid contacting the diodes.

When soldering the column wires be sure not to overheat the wires. It might help to pre-shrink the insulation segments before soldering. It took until about half of the columns were soldered for me to realize that the insulation was melting during the soldering. This cause the diode rows underneath the column wires to short through the melted insulation. I haven’t fixed this problem yet, and likely will have to remove and resolder all the column wires to get this to work.