A couple years ago, I developed a rather expensive hobby of custom keyboard building. I had built two keyboards - from premade parts which I had adapted - but I had always wanted to dive a bit deeper and design and build entirely my own keyboard. This is a document acts as a build log of my efforts to build a 3d printed keyboard, and the challenges I have faced along the way. Below is a contents page of this build log:
At this point, I felt confident to begin printing test key caps out of my transulecnt PETG filament. I am still unsure as to whether I will print my final keycap set from this material, or will instead opt for standard matte PLA, however this is a good test regardless, as I am sure that I will print the case of the keyboard from this material, and I want to be certain that it will be suitably translucent, to let the under-glow from the PCB shine through.
The keycap seen bellow, and on the right hand side of the video, was printed with standard 0.2mm layer height. The keycap seen on the left of the video was printed with the 0.08mm layer height as used in previous iterations. I originally thought that the reduced layer height would increase the quality of the keycap, and help make the material more translucent. However it seemed from this test that that the opposite was true, the 0.2mm key cap performed much better. This is good to know as I will apply this to the keyboard case.
It is clear that the translucent PETG performs better with larger layer heights, as opposed to the red PETG that I had previously used for prototyping.
Alongside the different manufacturing process, I had also made a number of tweaks to the profile of the keycap, and the thickness of the walls, in order to increase strength when attached to switches, and to better the sound of the keycap.
Here I designed another keycap in the XDA keycap profile. This will allow me to keep the same profile for every key - alongside this I have always liked the look of XDA profile and have always wanted to try them.
I printed two of my designs, one with the standard layer height of 0.2mm, and one with a layer height of 0.08mm - the minimum layer height that my 0.4mm nozzle can handle without causing problems.
This design features a symmetrical profile, with the base being almost the same dimensions as the initial cherry profile keycap.
There is a less pronounced curvature to the top of the key.
Due to the orientation of the print, there is not rough joining on the exterior of the key where one of the faces joins the supports. This orientation does however sacrifice the ability for text; I may be able to add this later, but am not sure.
The layer height made a huge difference, with the keycap with the lesser layer height having a huge advantage in quality, as can be seen bellow. I will certainly be printing my next keycap tests in this superior fashion.
The other improvments I have made include thicker walls - help with sound - and a slightly smaller column, in order to prevent the catching problem. I had slightly messed up my dimensions for these tests, and they were not able to mounted onto a switch.
For this second trial, I increased the clearance in the cut-out in the centre column to allow the keycaps to be attached with less difficulty. I also decreased the width of the centre column, in order to prevent the issue with interference between the switch and the key cap.
This worked to an extent, although I did did still encounter some problems with the width of the column - when the pressing force was applied at an angle, the column would interact with the back of the switch casing, causing a slight bump as the stem of the switch descended.
I had at this point encountered another problem; through my making of the column thinner, and the cross cut-out in the middle wider, the walls had begun to grow exceptionally thin. This lead to cracking as I removed and re attached the keycap. Across the course of only a few removals, the cracks have propagated on both sides of the column, leading to a very loose fit when attached to the switch. The reason for this is is obviously the scale of the model, which leads me nicely onto my next point.
The quality of the keycaps is very poor - the layer lines are very visible and the font is rather invisible. The small scale of the keycaps requires very fine detail when printing - a level of precision which my 0.4 mm nozzle cannot achieve. A way to combat this will be to try and reduce the layer height which is something which I aim to change for the future iterations. This should not only help with the quality of the production, but should also reduce the cracking of the material.
Another problem that I identified at this point was the sound. The sound and feel of a custom keyboard is a large part of its appeal, and this is something which I would very much like to focus on. These PETG keycaps sound incredibly plastic and hollow - a world away from the deepness of thick ABS keycaps. I will combat this by increasing the thickness of the walls for future keycaps. I believe that this will help to aid the sound - the walls are very thin compared to my keycaps which I have been using as a referance.
For future iterations, I am going to try to redesign the profile of the keycap closer to an XDA or DSA profile, in which each row of keycaps has the same flat profile. I like the look of these, and I like the idea of not having to spend countless hours fussing over minute details with curvatures and heights. I will also try and use PLA in order to determine which material will be best suited for the creation of my new keyboard. I like the idea of a translucent orange case with matte white keycaps (PLA), however I must first assess the functionality of this.
For this first key cap I took some pictures of an existing cherry profile keycap with a ruler in the shot, so that I could get some measurements of the dimensions. These measurements were okay, but not exact. I might try and get myself some vernier callipers in the future so that I can more accurately determine measurements.
I took a long time trying to accurately model the top of the keycap. This was actually surprisingly time consuming due to the fact that each face is modelled slightly differently, and I wanted to recreate the profile accurately - from experience, having a keycap which is ever so slightly the wrong dimension, or is not filleted to the right degree, can be really abrasive on the fingertips after long durations of typing.
For this keycap, I decided to model it after a "cherry" keycap profile, as is present on my current keyboard which I use. The problem with this - alongside many other mainstream profiles - is that each row of keycaps has a slightly different profile, meaning that I will have to re-design many different keycap profiles. This is a problem which I will attempt to target in the future however, as the main goal of the first few tests is not for look or feel, rather for functionality - I wanted to make sure the keycaps could fit onto the mechanical switches.
For my first attempt, the central column inside the key cap - to witch the stem of the switch is attached - was too wide, meaning that it got stuck when entering the switch. This lead to the keycap getting stuck when pressed with it sometimes even getting stuck in the pressed position.
I design the keycap to have cross beam supports, to ensure structural rigidity when pressed and when attached to the switches.
Bellow can be seen the 3d models of the keycap at this stage. The central tube is the column to which I have been referring.