The initial conversation for this topic started in the GH CAD Resource Hub thread. The relevant posts have been moved to this thread...This is an idea I have had for quite a while but have not had time to work on. I am now officially into my new house, so I am officially getting this project underway...
THE IDEA: There are many builders in this community who would like to experiment with different keyboard layouts, but not all of them have the CAD skills to be able to create the plate. The goal of this project is to enable anyone which an idea to be able to build a layout and then have the plate automatically built for them (download the CAD drawing). Since Melvang and team have done such a great job getting the Enabler PCB into the wild, this type of tool should be a great progression to enable very cool layouts.
HOW IT WORKS: I plan to piggyback of the excellent work of
ijprest and his
www.keyboard-layout-editor.com. As a user, you would go and create a layout using that tool, then you would paste the permalink to your layout in my web based tool. You would be able to specify some details and then click on a 'Generate', which would generate and download the CAD drawing for the plate needed for the layout you have specified.
SETTINGS: These have not been ironed out yet, but here are some things I am considering.
- Select the switch cutout type you would like.
- (Optional) Select the case layout you want the plate to fit in. This would determine if/where the mounting holes are located.
- (Optional) If a case layout is not specified, how much space do you want on the outside of the plate? Do you want drill holes (for a sandwich case)? Etc...
Here are the currently supported switch cutouts:
TOOLS BEING USED: I have chosen to script this using Python and CadQuery (which is based on FreeCAD). I am a very proficient Python developer, so that was my main criteria when looking for parametric CAD scripting frameworks. If I am learning CAD from scratch, I might as well do it in an environment I am very comfortable in.
LICENSE: I will be making the service available online and I will also publish my code on GitHub (once I have a working version). I will probably put some sort of open source license on it, but I will cross that bridge when I publish the code. My intention is to make my work freely available with the hope that others will consider offering pull requests to add functionality or help with compatibility.
ETA: I am not entirely sure when you can expect this to be ready yet. I am still very early in development right now. I have the basic construct for placing the different sized keys where I want them now, but I have not automated the actual layout build yet or done any exporting yet. I have built 3 different switch opening types so far (at least one more to come) and I will be updating this thread with the details on those openings soon (probably tonight).
HOW CAN YOU HELP? Subscribe and leave me any feedback you feel is relevant. I am still wet behind the ears in the field of CAD and laser cutting and such, so any suggestions you have are VERY welcome.
ENDGAME: I am a LONG WAY off this, but I am going to throw this out there as the endgame of where I want this tool to get to. In addition to just creating the plate layout, I would also like to be able to add the ability to 'suggest a matrix' for hand wiring. This would basically show a beginner how they would need to solder together their switches and diodes to have a working matrix. Ideally, since I will have the perferred key mapping passed in from keyboard-layout-editor, I would also like to try to automatically generate the HEX file for the layout they have specified according the the matrix I have generated. I know, I am a dreamer, but I HAVE A DREAM (and I think I have the skills to be able to pull it off)...
Thanks for reading this Wall Of Text and please feel free to contribute any ideas or encouragement.
Initial discussion started from here...Added the only picture with measurements that i could find in this thead to mm. (wth, SAE? are you guys fro real?
anyone can help me with the mount that only has the extra 4 spaces (2x2)? i think that is the best one.... can't find the exact measurements for that one.
I have been looking for this in mm. Is this pretty accurate?
I also read previously that two 1x1 switches are 19.05mm from left side to left side of the adjacent switch, but that was the style with built switch openings on the whole side (and the measurement was from the outside of the wing opening). It should not matter because it was the same on both switches (I think). So that would mean that the switches are 19.05 - 13.97 = 5.09mm apart?
Also, I am looking for the standard plate sizes (outside dimensions) in mm for the poker and tkl plates.
The switch holes are measured typically center to center, 19.05mm or .75in between each center. Key units translate pretty nicely too:
1.00u = 0.7500in || 19.0500mm
1.25u = 0.9375in || 23.8125mm
1.50u = 1.1250in || 28.5750mm
1.75u = 1.3125in || 33.3375mm
2.00u = 1.5000in || 38.1000mm
etc.
If you just imagine the square 0.551in || 14mm cutout is your base, layout your keyboard plate with that, the additional cutouts are just extra room for the switch clips. They shouldn't affect the actual layout anywhere you don't plan to cut screw holes or etc.
Make heavy use of offset and reference lines, you'll be good to go.
Great, thanks... I am scripting everything because I am working on a tool to automate plate creation. It is super basic, but I have been able to draw the switch cutout and place them 19.05mm apart (center to center).
Thank you very much for the values there, that is exactly what I needed. I really appreciate it.
Here is what I have so far (getting the pieces together to be able to automate). Making progress, but it has been pretty slow at first as I learn this API.
Edit: Once I finish this tool I will make it available via a web UI for people to use. I will also open source the code. I just want to get the basic implementation in place before doing that so if there are suggestions and such I can more easily integrate them.