Skip to content

Parametric Cherry MX/Alps Keycap for Mechanical Keyboards

Creation's quality: 5.0/5 (1 vote)
Evaluation of members on the printability, utility, level of detail, etc.

3D model description

KeyV2 is out!

This library is deprecated, and a new version has been released! please check it out here: KeyV2


I got halfway through making a parametric novelty keycap base before I realized there are decidedly few basic keycaps on the thingiverse website, so I took a detour to make a good one. This library has slowly grown to where you can generate keycaps in four different layouts in any length or height you desire! They are not quite drop-in replacements into existing keysets yet, but work great as a set, escape key, WASD cluster, top row, or as a base for an artisan.

Heavily modified from Kekstee's original Skull keycap to refactor, remove dxf files, add a dish, parameterize, and add a square keyswitch connector:

Makerbot's customizer is great, but it's hard to zoom in and sluggish with spherical dishes, so you might be better served booting up OpenSCAD. Also, using OpenSCAD opens up a whole new level of customization! Due to the complexity of the key profiles things like dish depth, top skew, etc. can only be controlled from inside OpenSCAD. There are a lot of comments as to what things do so don't be afraid to dig around!

* Many imitation key profiles supported! DCS, SA, DSA, and G20 for now. No OEM until I can find a good data sheet :(

* Square Cherry key connector stem; easier to print. Circle and Alps available.
* Stem inset now supported! allows you to print keys that will sit lower on the keyboard than before. you'll need to print with some kind of support.
* Multiple dish types that affect the top and bottom, so keytop thickness is uniform throughout. Dishes are correctly created using a bit of trig, so they expand to arbitrary sized keycaps. Inverted dish types for spacebar / funky keyboards supported!
* Keycaps can be arbitrarily wide or tall! note that for extra large keycaps you might need to turn up rounding on the dishes
* Stabilizer supports! requires some digging for now, will add better support later

####Experimental features:
* Experimental ALPS compatibility!
* Experimental rounded keycaps! Requires SCAD knowledge; replace key() with minkowski_key(). Will take FOREVER for anything with a dish due to polygons. G20 does not have a dish. results are pretty, but if you don't have a really good 3d printer you can safely skip.
* Experimental ISO enter in the works. technically it is there, but it is the wrong size. you need to switch any use of shape_hull() for ISOEnterShapeHull(). I don't own any keyboards with it either so I have no idea if it actually fits or if it needs stabilizer holes (I assume so?) I just have keys I'm comparing it to from a grab bag.

####Road to V2:
* just need to do the customizer script now, with any luck we will be releasing soon

3D printing settings

I have tested this at .2 and .1mm layer heights with no support and it seems to print just fine, with a bit of warping on the bottom of the keytop for the first layer of bridging or so. At .1mm I increased infill to 90%, otherwise Slic3r seemed to float layers on top of nothing; at .2mm 20% infill worked great. Sometimes the stem comes undone for me during the print, mostly at low layer resolutions and more often with ABS. Make use of the brim if you find that happening to you as well, which can be customized. Also make use of the brim if you are having a hard time landing the first layer of the keystem.

You might have problems with stem fitment if you overextrude - you can either change your extrusion parameters or look into futzing with horizontal_cross_width, vertical_cross_width, extra_outer_cross_width, and extra_outer_cross_height. It is by far the tightest part of the print, and the one closest to operating tolerances in order to give as much material as possible to the stem.

Also, different slicers handle the stem differently; I found that Slic3r printed the pieces in one contiguous spiral, which minimized retraction problems, but Simplify3d does not. YMMV.

In order to print different versions of the keycaps, change the key_profile variable. If you wish to print Alps-compatible keycaps, make sure the stem_profile is set to 1. I haven't tested all of the Alps ones so make sure the stem is in a good position before you print off 30 of them!

Comments welcome!

  • 3D file format: SCAD, STL, and ZIP
  • Publication date: 2020/03/31 at 23:23





Best sellers of the category Various

Add a comment

One comment

Absolutely AWESOME models.
Not the exact profile I was looking for but excellent nonetheless.
I was wanting proper keycap profiles for a 3D model of a keyboard and these fit the bill nicely.
Many thanks.

Would you like to support Cults?

You like Cults and you want to help us continue the adventure independently? Please note that we are a small team of 3 people, therefore it is very simple to support us to maintain the activity and create future developments. Here are 4 solutions accessible to all:

  • ADVERTISING: Disable your AdBlock banner blocker and click on our banner ads.

  • AFFILIATION: Make your purchases online by clicking on our affiliate links here Amazon, Gearbest or Aliexpress.

  • DONATE: If you want, you can make a donation via PayPal here.

  • WORD OF MOUTH: Invite your friends to come, discover the platform and the magnificent 3D files shared by the community!