A couple years ago, I developed a rather expensive hobby of custom keyboard building. I had built two keyboards from kits, but had always wanted to dive a bit deeper and design and build entirely my own keyboard. This is a build log of my efforts to build a 3d printed keyboard, and the challenges I have faced along the way.
At this point, a number of problems have lead to me no longer printing the keycaps. Instead, this build log is of the process of printing and assembling the board itself.
The final product left a lot to be desired, and I can now see why there are very few 3d printed keyboards from hobbyists. A number of failures plagued the project, and slowed my progress, meaning that the project took well over 2 months to complete. I spent a lot of time working on designing and printing my own custom keycaps, which ultimately did not end up working out.
The case ended up working out quite well, although the backlighting did not shine through as much as I wanted to start with. The board sounded quite hollow, but it felt good to type on. I ended up having to use a mix of older and newer keycaps that were not of the same font, colour or profile.
Also, once I completed the board, many of the switches continued to break, and I didn't have the time or resources to fix or replace them, so currently, the board is in a poor state in my cupboard.
I did enjoy the project, and definitely do want to complete another in the future, however next time I will source parts from more reputable sellers, to reduce hassle.
I printed a prototype case in order to test the dimensions of the case relative to the PCB. This prototype was printed out of high flow rate PETG, in the interests of time and money.
From this prototype, I realised that the PCB did not sit flat in the case. This was because I did not expect the usb port of the PCB to extend bellow the board. In the refined version that was used in the final product, I left a space for the usb port to extend down into.
Designing the case is the most significant part of this project; it ended up being the only 3d printed part in use on the keyboard. For the case, I took inspiration from the simplicity of the tofu 60 keyboard.
It took a surprisingly long time for me to find the dimensions of the PCB I was using, but once I had found a PCB of sufficiently similar dimensions, I imported a technical drawing into OnShape, and created a sketch with respect to the dimensions of the drawing. This was the first time that I done this, and it turned out quite well. Only slight tweaks were required to get stand offs perfectly aligned with the holes on the PCB. I made sure to leave substantial clearance between the edges of the case and the PCB, in order to accommodate the extra width of the keycaps. I gave the case an 8 degree incline, aligning with the typing angle of my current keyboard.
At this point, I had very limited soldering experience, and so soldering all of the switches onto the PCB was very daunting. After a bit of practice however, I got the hang of it and soldered all of the switches onto the PCB, with the plate between.
When I had finished however, I realised that there was interference again between the plate and the enter key stabiliser. This was because the plate that I had bought expected the stabilisers to be mounted in the opposite direction, facing down. As a result, the gap left in the plate to avoid interference with the metal stabiliser wire was on the wrong side. This lead to the key not being able to be pressed.
Instead of painstakingly unsoldering all of the keys without a solder sucker, I drilled through the plate, to make a hole that the wire could fit through. This did not work well, and it left a very rough gap for the stabiliser wire, and also damaged the casing quite substantially. This meant that the stem of the stabiliser could not smoothly travel up and down. I then took a long time trying to clean up the sides of the hole with my tweezers to enable the key to travel up and down.
The stabiliser is present on both sides of the key, connected by a wire, so I needed to find a better way to create a hole on the other side. For this reason, I used my soldering iron to burn a hole through the plastic, and used a fine pair of tweezers to pull out the weakened plastic that had dripped down into the gap between the plate and PCB. This worked surprisingly well, and created a smooth hole for the stabiliser wire to pass through.
Whilst soldering, I encounter another problem. Within the keyboard hobby, it is common to take apart the mechanical switches, to lube the inside of the casings and the springs. This is to create a smoother and more satisfying click. Some also add a plastic film between the top and bottom switch housing to reduce stem wobble and improve acoustics. For this project, I both lubed and filmed my switches.
I have completed this process successfully in the past a many times, without problems, but on this occasion, the legs that held the top and bottom housings together were damaged and had become brittle. When I then pushed them into the plate, the legs often snapped off completely. I ran out of switches after too many had snapped, so I resorted to using my soldering iron to melt top and bottom housings together. This worked too an extent, but a few switches were damaged irrevocably, and I had to substitute in old remaining switches.
I also used an online plate design to speed up the process, as designing this would have taken an extremely long time because of the intricacies of the layout. The plate would also have to be very accurate to ensure that the switches seated properly in the keyboard.
I printed the design firstly in PETG, however it did not work with the PCB and stabilisers that I had already assembled. At the time, I thought that this was due to the plate being raised too far away from the PCB. For this reason, I tweaked some of the dimensions in OnShape, so that the plate would sit closer to the PCB. I then printed the new plate, however it still did not fit, and there was a problem with the stabiliser wires clipping on the bottom of the plate.
I also encounterd problems when printing the plates - they were so long that they wouldnt easily fit within my printer. I had to position them in a very specific angle so that they would fit, and this meant that I had to use a lot of support during the project, which was not ideal. If I were to do this again, I would instead print the plate in two sections which would then clip together, so that I wouldn't need to use supports to such an extent.
As my patience was beginning to wear thin, I purchased a moulded plate from an online store, which I believed at the time had the correct dimensions to fit the PCB and stabilisers.
By now, I had realised that printing keycaps for the entire keyboard would be incredibly time consuming, and I was very short on time. The large amount of time necessary was due to the wide array of keys that would have needed to be designed, to accommodate for the keyboard layout. I then downloaded a keycap set that I could print from a website, however the walls of the keycaps in the sets were far too thin, meaning that they would break when put onto the switch. In addition, there was no clearance allowed in the design, which lead to large amounts of force needing to be applied when put onto switches, ultimately breaking the stems of the keycaps. The keycaps were also in a file type that I could not easily edit, therefore to avoid further hassle, I used an old set of keycaps from a prior keyboard.