Mechanical keyboards are all the rage these days, and for good reason. They are more pleasant to type on and may even help to prevent repetitive stress injury (RSI), which is a problem that affects many office workers. Cheap keyboards have membrane switches, which are mushy and force you to push a key hard to ensure a key press is registered. Mechanical keyboards, on the other hand, have mechanical key switches that have a clean and consistent "break" point. Some keyboards even let you swap out the key switches to customize the feel. If you want to design your own hot-swappable mechanical keyboard, this OpenSCAD script can help.
OpenSCAD is something of a black sheep in the CAD (Computer-Aided Design) world. Most 3D CAD software today is graphical, meaning you can use your mouse to select and place new features. But OpenSCAD works by interpreting a series of typed commands. That workflow tends to appeal to programmers, because it is a bit like coding a 3D object. It also makes it easy to develop scripts to automate the creation of 3D models. In this case, the script takes a layout and a handful of parameters as input, and then it pops out a 3D-printable keyboard model.
That 3D model will contain slots for all of your hot-swappable key switches (it currently supports Cherry MX and Kailh Choc v1 key switches). The top side has slots for your keyboard matrix row wires and anti-ghosting diodes. The bottom side has slots for your column wires. That does mean that you need to wire the key switch slots by hand, but you won't need to have a PCB fabricated. You can specify the layout of the switches and there are also additional parameters to add a microcontroller development board and more. After setting the layout and parameters, you can run the script and it will generate STL files that you can then bring into your 3D printer's slicer software.
This script is perfect for people who want to experiment with keyboard prototypes in order to find the perfect layout and key switches. Both OpenSCAD and this script are open source, so anyone can use them.