3D-Printed Keycap

xkxx’s HCDE451 UX Proto’s
5 min readFeb 16, 2017

After creating the 3D Titanic model for the laser cutting project, I’ve gotten much more confident about my ability to create 3D shapes. So when the 3D printing project rolls around, I decided to make something for my favorite pastime — keyboards. I wanted to make a few 3D-sculpted keycaps that I can proudly show off on my keyboard.

In order to fit onto actual keyboards, keycaps need to follow different standards. The mainstream standard that most people nowadays go by is Cherry MX. What does a Cherry MX keycap look like? Something like this:

A vintage Cherry MX compatible keycap (Image credit: Deskthority.net http://i.imgur.com/bNjWh.jpg)
Cherry MX keycap dimensions (Image credit: geekhack.org http://i.imgur.com/K5kui2s.jpg)

But there’s always complications when it comes to standards. There are also Alps keycaps, made to work with Alps-compatible keyboards, such as the Matias-brand keyboard that I use daily. The dimensions are completely different:

Dimensions of an Alps-compatible switch (Image credit: matias.ca)

For this project, I decided to make two versions of my keycap for both Cherry MX and Alps. I also decided to make my keycaps medium-height (about .3 inches tall) and have spherical tops just to make typing on them more ergonomic.

Design

An early version of the design (no spherical shape yet)

Based off the standard dimensions I created the basic shape of the keycap by lofting a larger rectangle bottom layer and a smaller top layer, hollowing out the middle, and extruding a bottom notch for attaching with the keyboard switches. The rest is a lot of deviling out the intricate details, where I dedicated most of my time of this project. I added slight curves to 4 sides of the top layer to smooth out the sides of the keycap and make it look less industrial and more natural. I made the top of the keycap slightly convave to create the spherical top which improves ergonomics. I added round fillet to the outside of the keycap, as well as to the bottom notch to make installing and removing the keycap from the keyboard switches easier. Lot of smaller details.

Top, bottom, and front view of the finished design

I thought long and hard about what 3D sculpture I was to put on the top of the keycap, and eventually settled on the nuclear symbol. It’s actually not the nuclear symbol but something else… but I’ll let you figure that out.

Following this, I then created another version of the keycap with Alps notch, which took less work since the notch is a bit simpler.

(Left) a real Alps keycap, and (Right) the design I created (Image credit: http://blog.komar.be)

A surprising amount of work actually went to deciding the depth of the notches for Cherry MX and Alps version. This affects how tall the keycaps stands on top of the keycap and therefore ergonomics, as well as how third-party components (such as keyboard silencers) will fit with the keycap. There’s no standard for this, so I had to research many existing designs and make a decision. Thankfully, the result worked pretty well and fitted nicely with my other keycaps.

Printing

The actual printing process was hardly simple, as I had to adjust various parameters and even tweak the model itself to maintain the shape of the keycap without making it a mess of support structures. Fortunately, as the keycaps are small, I was able to create several iterations in relatively short amounts of time. I initially tried medium resolution and 60% infill, and the result, in particular the sculpture, hardly resembles my original design. I then increased the resolution and shell thickness and brought infill to 100% to achieve a better result. However, the bottom notches with these earlier iterations did not work. When the keycaps are printed top-up, the notches tend to collapse due to gravity, and while adding more support may work, it’s also difficult to remove them from the keycaps themselves, resulting in prints that look okay but cannot actually function as keycaps. My next attempt is to print the keycaps bottom-up, which preserved the notches and resulting in functional prints. The top-side, though, look less polished as Makerbot added support to the top-side that are difficult to remove without impacting the intricate 3D sculpture.

I suspect the only means to solve this issue is to either create the prints in low-gravity space, or to print the keycaps in two passes. The former is not feasible, while the Makerbot software doesn’t make it easy to do the latter, and the 3D printers in the makerspace likely lacks the precision for it either. For now, these prints are the best I can do with the resources at hand.

(From left to right) Model printed with different parameters (resolution, layout, shell thickness)

Reflection

Keycap installed on an actual key switch

I’m happy that I was able to create keycaps with enough precision to be actually functional. Feedback from other peers echoed the same sentiment as well — people are pleasantly surprised to see my prototype keycaps installed on a key switch. One commented that the prototype was cool and very pratical, and another said it was cool to see it actually work! It’s a good first step for a prototype created in a low-end 3D printer and amateur software.

The next step for the keycaps is definitely to create them in higher-end 3D printers with higher precision that fare better against deformations caused by gravity. I suspect I can also tweak the parameters some more to a similar effect as well. Finally, if I can master the 2-pass 3D printing process, it could allow me to create keycaps with polished top and bottom sides that look good and function well.

3D printing is a pretty magical experience, and I had a lot of fun polishing up the keycap models while learning a lot about 3D modelling in the process. I look forward to be able to try out 3D printing in other projects in the future!

--

--