April 12, 2026
Description
This generator easily allows you to create custom click buttons compatible with Cherry MX button with various configurations, here's a complete guide to the generating parameters.
Subscribers to my Get to the source commercial membership can get access to the original .SCAD files and use OpenSCAD nightly builds to run them, if you don’t know how to do it, I wrote a full but simple step by step guide that you can find attached to this project.
I also provide a Fusion 360 and a STEP file to use as reference for creating the holes to put the buttons in, to get them click on the dropdown arrow on right side of “Open in Bambu Studio” button and select Download STL/CAD Files from the menu.
These parameters define what kind of internal mechanics you will use.
| Parameter | Description | unit | min | max | default |
|---|---|---|---|---|---|
| insert_type | Defines the type of insert to add, this value can be:
| Spring | |||
| spring_internal_diameter | The internal diameter of the spring, this defines the diameter of the pin holding the spring in place on the bottom piece. Preferably use a smaller value. Setting this to zero will avoid pin creation. This value is only used if insert_type is set to Spring. | millimeters | 0 | 5.7 | 3.2 |
| spring_external_diameter | The external diameter of the spring, this defines the diameter of the hole in the middle piece. This value is only used if insert_type is set to Spring. | millimeters | 0 | 6 | 6 |
| spring_fill_pin | If the pin should be filled or only walls are created. This value is only used if insert_type is set to Spring. | false | |||
| spring_minimal_length | The minimal length the spring should achieve when compressed, this helps the generator determine the distance between the top of the hole in the middle piece and the bottom of the piece. This value is only used if insert_type is set to Spring. | millimeters | 0 | 6 | 5 |
| spring_hole_border | Set how high the walls around the hole in the middle piece are. This value is only used if insert_type is set to Spring. | millimeters | 0 | 6 | 2 |
| top_magnet_shape | The shape of the magnet in the middle piece, this value can be:
| Round | |||
| top_magnet_diameter | This parameter value meaning depends on the value set in top_magnet_shape:
| millimeters | 1 | 6.2 | 5 |
| top_magnet_height | The height of the rectangular magnet. This value is only used if top_magnet_shape is Rectangular. | millimeters | 1 | 6 | 3 |
| top_magnet_thickness | The thickness of the magnet. | millimeters | 1 | 30 | 1 |
| top_magnet_cover | The quantity of material that is to be placed below the magnet. Warning: when setting this to zero, magnets_tolerance is considered zero for vertical creation of this and the magnet will be exposed. | millimeters | 0 | 5 | 0.8 |
| bottom_magnet_shape | The shape of the magnet in the bottom piece, this value can be:
| Round | |||
| bottom_magnet_diameter | This parameter value meaning depends on the value set in bottom_magnet_shape:
| millimeters | 1 | 6.2 | 5 |
| bottom_magnet_height | The height of the rectangular magnet. This value is only used if bottom_magnet_shape is Rectangular. | millimeters | 1 | 6 | 3 |
| bottom_magnet_thickness | The thickness of the magnet. | millimeters | 1 | 30 | 1 |
| bottom_magnet_cover | The quantity of material that is to be placed above the magnet. Warning: when setting this to zero, magnets_tolerance is considered zero for vertical creation of this and the magnet will be exposed. | millimeters | 0 | 5 | 0.8 |
| magnets_tolerance | The tolerance of magnets sizes in every direction. | millimeters | 0 | 0.5 | 0.2 |
| full_base | Special mode, if activate the middle part will be created without legs. This value is only used if insert_type is set to Magnets. | true |
| Parameter | Description | default |
|---|---|---|
| top_simplify | If this is enabled, a simplified version of the top piece is rendered, the simplified version is easier to print but has lower details. Results will still be fully compatible with Cherry MX buttons, but will not be exactly the same. | true |
| Parameter | Description | unit | min | max | default |
|---|---|---|---|---|---|
| middle_pin_height | The height of the pin for button cap insertion. This is the part that will be on top of the button. | millimeters | 0 | 10 | 3.7 |
| middle_pin_shape | The shape of the pin at top of the button, this value can be:
| Cross | |||
| middle_pin_width | The width of the top pin, scaled accordingly. | millimeters | 0.4 | 5.1 | 4 |
| Parameter | Description | unit | min | max | default |
|---|---|---|---|---|---|
| bottom_pin_height | This defines the height of the bottom pin. If this value is set to zero, the pin is not created. | millimeters | 0 | 10 | 3 |
| bottom_pin_diameter | The diameter of the bottom pin. This is only used if bottom_pin_height is not set to zero. | millimeters | 1.2 | 10 | 3.85 |
| bottom_flat | If enabled, removes alignment plates on the bottom for a flat surface. | false | |||
| clips | Enables//disables lateral clips creation | true | |||
| clip_depth | The depth of the clip. A value for this parameters must be considered sufficient enough so that they are not too delicate but not excessive so that they are not too hard. | millimeters | 0.4 | 3 | 1.6 |
| clip_hole_depth | The depth of the hole the clips are created. | millimeters | 0.5 | 8 | 3.7 |
| reinforce_towers | Adds a wall behind the towers avoiding them to be too delicate and break away easily. | true | |||
| bottom_simplify | If this is enabled, a simplified version of the bottom piece is rendered, the simplified version is easier to print but has lower details. Results will still be fully compatible with Cherry MX buttons, but will not be exactly the same. This includes:
| true |
| Parameter | Description | default |
|---|---|---|
| render_quality | Choose the quality of generation of the objects, the higher quality the more memory/time generation will take. This value can be:
My advice is to find your settings for the whole object using Normal rendering, then switching to High quality or even higher when ready to export. | Normal |
| top_color | The color to use for top piece in Assemble View. Does not affect exported file. | Lavender |
| middle_color | The color to use for middle piece in Assemble View. Does not affect exported file. | Firebrick |
| bottom_color | The color to use for bottom piece in Assemble View. Does not affect exported file. | Light Steel Blue |
You can buy inserts directly from MakerWorld/Bambu Lab under the Maker's Supply section or you can find them:
The Amazon and AliExpress links above are part of the affiliate program. I may earn something from your purchase, please consider this as another way to show your appreciation for this model. You will not be charged anything more.
License:
MakerWorld Exclusive License