Here's the first (very) rough draft of my Cherry-compatible mechanical keyboard switch. The .scad is a HUGE mess but I need some folks to print out the test switch and let me know how it works from an assembly perspective. Is it easy enough to put together? Do the tolerances work out for the average printer? Stuff like that.
VIDEO AND ASSEMBLY: https://youtu.be/k9HBrD511Xw
I'll be working on making it work as an actual switch next. Then comes tactile followed up by clicky bits.
Why am I making this? Because it's going to be awesome! You'll be able to choose every little detail about your switch and if it isn't exactly the type of switch you want you have only yourself to blame! Because it's entirely parametric! Want more actuation force? Change the spring parameters. Want more travel? Change the TOTAL_TRAVEL variable. Want a HUGE switch for a fist-masher keyboard? Change the size variables! It's up to you!
Of course, it's a work in progress but I'm kind of obsessed with it at the moment so hopefully I can get it all working and ready for use in an actual keyboard soon. With this switch you should be able to print your keyboard body, the caps, and the switches!
Then I'll have to make a keyboard PCB maker =)
UPDATE 20190929: Hard plastic springs aren't working out (except POM which is turning out to be too difficult to print with for regular people) so I've switched the design to a TPE (e.g. Ninjaflex) spring. It's still currently in testing but I've uploaded the latest spring--which is meant to be used with a standard Cherry MX style keycap--and a naive switch body (which was also uploaded). I'm still cleaning up the .scad files and working on making everything more parametric (still doing research as to what parameters impact which traits in terms of key switch feel) but I hope to have those uploaded as well soon.
UPDATE 20190828: v0.9 of the switch should be a great switch with the latest improvements to strength/durability and spring strength tweaking! Also, the .scad got a major overhaul and should be much easier to read and have better defaults. It's also vastly better at scaling things up and down now so if you want an 8mm spring you can do that (now, thanks to the changes). Not that you'd want a spring that strong...
UPDATE 20190827: LOADS of changes! Much smaller design now that's actually a smidge smaller than a real Cherry MX! Yes, it's Cherry MX compatible (well, it'll fit into a Cherry MX-sized hole anyway). Much smoother operation and it no longer gets stuck when you press on the corners! It uses my new Ortho-Planar spring generator to generate a much nicer spring that takes up way less space. Still working on the electrical connection stuff... Complete changelog is in the .scad.
UPDATE 20190823: Made a few minor improvements and there's now a known "good" switch .stl you can print to try it out. It still has an issue where if you push on the corners it can get stuck but other than that it feels fantastic!
UPDATE 20190822: Updated with lots of improvements. There's now a changelog with the details but the gist of it is this: Just better parameters and the pretension ring has been incorporated into the center_peg(). Still lots of work to do! So far the best candidate has been test 10 (has a longer name than that but you'll see the file). Still working on the problem of "if I press on a far corner it doesn't go down smoothly" and turning it into an actual electrical switch.
THE SPRING WAS DESIGNED FOR USE WITH PETG! Other filament types probably won't work right... PLA will likely never work as it loses it's springiness over time but other filament types might work after I've done some testing and figured out the best spring parameters. Print with 3 perimeters and 0.2mm layer height.