This project enables you to build keyboard plates and cases using the JSON produced by the www.keyboard-layout-editor.com. Review the documentation site above for a guided tour of how the tool works and how to use it.

If you have any questions or feedback, please post them in this thread and we will get you sorted out. Enjoy...

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.

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.

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.

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.

Sounds awesome. I wouldn't use those switch hole shapes, though. Unless you have randomly 90-degree rotated switches, you don't need the cutouts on the top and bottom. And it makes the switches less stable in the plate.

You should get with ne0phyte. He added some type of automated script to his layout generator to create plate drawings. His tool is at ne0.cc/laygenV2

Actually, the switch hole I recommend is a 12.8x15.6mm rectangle centered in the 14mm square. That hole will work for both MX (with easy open tabs) and Alps.

Sounds neat. I have been working on a Poker-type 60% DWG file with interchangeable blocks so you could easily swap out an ANSI enter for an ISO, or swap out your shifts and backspace for the split variety, or even swap all the cutouts for the switch opening type, just by using the replace block command in AutoCAD.

Though now that you bring it up, would be neat to do it in a web UI instead.. Maybe this weekend I'll draw up some FRD's, my idea's pretty limited in usefulness to people who have access to a very expensive CAD application.

Sounds awesome. I wouldn't use those switch hole shapes, though. Unless you have randomly 90-degree rotated switches, you don't need the cutouts on the top and bottom. And it makes the switches less stable in the plate.

You should get with ne0phyte. He added some type of automated script to his layout generator to create plate drawings. His tool is at ne0.cc/laygenV2

Actually, the switch hole I recommend is a 12.8x15.6mm rectangle centered in the 14mm square. That hole will work for both MX (with easy open tabs) and Alps.

Excellent. I was not sure what the best switch cutout was, so I used that one because it seemed to offer the most 'features'. I will make it possible to select which type of switch cutout people want to use. I will make your suggestion the default.

It would be very interesting to see how ne0phyte's service works. Very cool. Do you know what type of code you have to paste in to see what the plate would look like?

My plan is actually to piggyback off the wonderful work put into 'http://www.keyboard-layout-editor.com/'. Basically, a user would create their layout on that site and then paste the permalink to their layout into my UI and have a few additional options they could change (like switch type for example). Then they would be able to 'generate' and it would create a downloadable cad file for them as well as a png for them to verify that it looks correct visually.

Does anyone know who created keyboard-layout-editor.com? I am almost positive I saw the person active on GH, but I can't remember where. I would love to get in touch with them...

Sounds neat. I have been working on a Poker-type 60% DWG file with interchangeable blocks so you could easily swap out an ANSI enter for an ISO, or swap out your shifts and backspace for the split variety, or even swap all the cutouts for the switch opening type, just by using the replace block command in AutoCAD.

Though now that you bring it up, would be neat to do it in a web UI instead.. Maybe this weekend I'll draw up some FRD's, my idea's pretty limited in usefulness to people who have access to a very expensive CAD application.

Cool. Yes, I am using FreeCAD as my engine and I am using CadQuery as my scripting tool for creating the actual automation. I basically chose it because it was in Python and I am already a proficient Python developer. If I am going to be learning CAD from scratch, I might as well do it in an environment I am comfortable with already.

If anyone has suggestions of things I should look into for scripting CAD in Python, I am all ears...

Swill, just so people could have their preferences, could you have have the program let us choose which cutouts we want?

This is also an amazing idea and as someone with zero experience with engineering and CAD, I can approve of this!

Yes, so far my plans for options are:- Select the switch opening you want.- Select the plate size (with mount holes) you want. This is for case compatibility. If the layout you provide does not fit on the plate size you specified it would have to error and show you why (somehow). - If you do not specify a case size, it will automatically create the plate according the the size it thinks it should be based on your layout. I may make it possible for you to configure the amount of space you want on the size and top if you want to do a sandwich case. Not sure how I would do mounting holes in that case though. But you would have the cad, so you could add your own mounting holes if you wanted.

Some of the edge cases will probably not be clean until later. Initially I think I will just have to count on people to not be stupid and it will only work if you enter layouts that are sane. We will see how clever I can get...

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.

I just implemented my script using these measurements and I realize that something does not make sense with these numbers. The distance between the centers for a 2u should not be double that of two 1u switches. If that is the case, then the 2u switch actually takes up 3u of space because it has a full 1u on each side of the switch.

Here is an image to illustrate what these numbers work out to:

I think the numbers you have there is actually the 'space the key takes up with the key spacing accounted for', rather than distance between centers. For 1u keys, yes, it is the distance between centers, but for the larger keys I think you have to split the distance to some extent. I will play with this more tonight to figure out the actual algorithm to get these to line up correctly.

Thanks for the feedback though, you got me way ahead of where I was...

Ah yeah, I was thinking with brain instead of lines. I use centers to start off in upper left, then the unit constant becomes width spacing with the keyswitch cutout centered within.

OK cool i will figure out how to use these numbers in my case. Thanks for the quick reply. I am slowly getting more comfortable with all this now.

You're probably better off assigning a constant as 1u, then multiplying it by the keywidth (1.5, 1.75, etc) than to do some funky lookups with the numbers in any table. The only numbers you really need to know are 1 unit, and the values available in Cherry's spec sheet for in or mm

Ah yeah, I was thinking with brain instead of lines. I use centers to start off in upper left, then the unit constant becomes width spacing with the keyswitch cutout centered within.

OK cool i will figure out how to use these numbers in my case. Thanks for the quick reply. I am slowly getting more comfortable with all this now.

You're probably better off assigning a constant as 1u, then multiplying it by the keywidth (1.5, 1.75, etc) than to do some funky lookups with the numbers in any table. The only numbers you really need to know are 1 unit, and the values available in Cherry's spec sheet for in or mm

Is it exactly multiples? I did not cross reference to verify. I did see 2u was, but I did not verify the fraction ones.

I am doing my calculations based on switch centers for all the switches. I currently have sizes such as u100, u125, u150, etc. I prefer doing multiples if the numbers work out correctly. I will cross reference and simplify my code accordingly. Thx.

I have not sat down to verify this yet, but I think the centers will work out to be something like this (assuming we are moving along a row).

current_loc = .5*u1*prev_sw_mult + .5*u1*curr_sw_mult

This should account for switches of different sizes next to each other.

I will do a bunch of tests to verify this concept when I am back in front of my putter.

I spent a bunch of time with the Cherry spec and a caliper tonight and I modified the suggested dimensions of this 'rotatable' switch opening. The problem with the previous cutout dims was that on the non-flap sides, only the clip caught the edge, not the actual switch body. I have made some minor modifications so that the middle section on the non-flap sides with now (barely) catch the edges of the switch body. It only catches it by a couple tenths of a mm on each side, but that is all I could risk and still make sure the flap openings did their job.

Here is an image of the new dims I have come up with:

Note: the hard to read dimensions in the top right are: 0.8mm and 1.0mm

Edit:In my recent drawing I am working with a tolerance of about +/- .1mm. Now that I think of it, I think that is probably too small to be expected.

In looking at the numbers that jdcarpe sent over (mainly based on the 12.8 number), he is leaving a LOT bigger tolerance for clearing the switch flaps on the sides. I may have to abandon the idea of trying to make the rotatable switch cutout more stable since I don't think I can count on the tolerances to the level of precision I have calculated. Anyone know what is a realistic expectation here for a tolerance while machining?

Edit2:I just realized that the 12.8 value is actually for Alps compatibility, not just leaving lots of space for MX tolerance.

First off, Swill, this is a great idea and somethign I wanted to do myself before life caught on.

Secondly, please don't take this wrong, can you make a new thread for your project as I think ti would get more visibility as well as keep this thread clean and on topic.

Third here are my thoughts on points raised thus far:1. Tolerance for acrylic laser cutting is about 0.2 on either side of the line, so suppose you were to cut a square with 14mm sides, now this would produce a square cutout of 14.2mm sides and a small square piece of 13.8mm. Yes it burns a lot of acrylic . Don't know about alu/stell, the other two most commonly used materials.2. 19.05 = 1u and the space a one unit key takes, and similarly 2u, is the key a two unit key takes. So the distance from center to center would be 0.5*(current_key + adjacent_key)u. Your formula looks good.3. ijprest (http://geekhack.org/index.php?action=profile;u=30503) created the layout editor. And I think it's a great idea to work using his current work. No need to re-invent the wheel. Perhaps you guys can work together and he can integrate your work or link to it directly from his editor.4. I like the idea of the sandwich case (Well, I'm gonna be useless then ), for the switch holes, I'd recommend the user input extra space they want around the four sides and number of screw holes on each side, they system will then automagically add a screw hole in each corner and then space out the other screw holes. For the middle layers, a cutout 1mm bigger on each side than the rectangle formed from the top left corner of the 19.05mm square of the top left-most key and bottom-right corner of the 19.05mm square of the right-bottom most key should suffice (Eg assumes 1u keys on the two mentioned position).5. It's exact multiples, 1u, 1.25u, 1.5u, etc.

First off, Swill, this is a great idea and somethign I wanted to do myself before life caught on.

Secondly, please don't take this wrong, can you make a new thread for your project as I think ti would get more visibility as well as keep this thread clean and on topic.

Third here are my thoughts on points raised thus far:1. Tolerance for acrylic laser cutting is about 0.2 on either side of the line, so suppose you were to cut a square with 14mm sides, now this would produce a square cutout of 14.2mm sides and a small square piece of 13.8mm. Yes it burns a lot of acrylic . Don't know about alu/stell, the other two most commonly used materials.2. 19.05 = 1u and the space a one unit key takes, and similarly 2u, is the key a two unit key takes. So the distance from center to center would be 0.5*(current_key + adjacent_key)u. Your formula looks good.3. ijprest (http://geekhack.org/index.php?action=profile;u=30503) created the layout editor. And I think it's a great idea to work using his current work. No need to re-invent the wheel. Perhaps you guys can work together and he can integrate your work or link to it directly from his editor.4. I like the idea of the sandwich case (Well, I'm gonna be useless then ), for the switch holes, I'd recommend the user input extra space they want around the four sides and number of screw holes on each side, they system will then automagically add a screw hole in each corner and then space out the other screw holes. For the middle layers, a cutout 1mm bigger on each side than the rectangle formed from the top left corner of the 19.05mm square of the top left-most key and bottom-right corner of the 19.05mm square of the right-bottom most key should suffice (Eg assumes 1u keys on the two mentioned position).5. It's exact multiples, 1u, 1.25u, 1.5u, etc.

Great, thanks for all the info, this is really helpful.

I didn't really think I would have so many questions initially, now I realize I have dominated this thread a bit too much. I will create a new thread for this project and stop polluting this thread. Good suggestion...

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...

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.

oh sweet, so it'll be like Ne0phyte's laygenv2 and it's DXF export function but easier to use! I can't wait.

You might want to check with ne0phyte for some tips / info. Maybe it can save you some time.

as to advice: is Cadquery easily scriptable? I seem to recall in my search for a cad package to use that many of them are easily scriptable. I think that interfacing to this could be the easiest part or the hardest.

If you need measurements of the mounting hole locations, I can provide them for a lightsaver V1 and a skeldon. Maybe having a listing of the common custom (and standard) keyboards and their screw locations would help. I've already measured a poker 2 and case with a calipers if that'll help.

oh sweet, so it'll be like Ne0phyte's laygenv2 and it's DXF export function but easier to use! I can't wait.

You might want to check with ne0phyte for some tips / info. Maybe it can save you some time.

as to advice: is Cadquery easily scriptable? I seem to recall in my search for a cad package to use that many of them are easily scriptable. I think that interfacing to this could be the easiest part or the hardest.

If you need measurements of the mounting hole locations, I can provide them for a lightsaver V1 and a skeldon. Maybe having a listing of the common custom (and standard) keyboards and their screw locations would help. I've already measured a poker 2 and case with a calipers if that'll help.

Yes, I think it is basically the same idea but easier to use. I have never used ne0phyte's tool because I do not know what I am supposed to enter to get a result and there are no instructions on the site. I will contact him though because I am sure he has some advice for me.

CadQuery is a Python API extension to the FreeCAD Python API. Basically, the only way to use CadQuery is via code. I load my code into the FreeCAD UI through the built in Python Console to verify my drawings while I develop. My only real requirement when picking a tool was that I could generate CAD drawings using Python. So far it is working pretty well. I am still a n00b, but I am figuring it out pretty well. Getting comfortable with it now...

Yes, I plan to have a list (with pictures) of the different case layouts that you can select from and that will dictate where the mount holes will be located. I will definitely be crowdsourcing the measurements for all of the different case mount points. What do you think is the best way to start collecting this information?

This is a really cool project as I've said before swill, good luck. I'll be happy to help in anyway I can.

I have some measurements for QFR, Leeku 1800, Pure which I can send to you if needed.

For some of the opensource work like the GHPad, QazPad, JD40, etc, you can get mounting hole information from the PCB files itself.

Ahh, yes. I remember that the GH60 PCB file has the measurements for the mount holes as well as the external plate dimensions (probably), so I will maybe start from that. I think that PCB supports the poker layout, so it is probably a good reference for 60% boards. Thx...

Only thought I have at the moment - is providing a way to specify widths between blocks of keys on the plate (horizontal / vertical). You can only get so accurate using the keyboard layout editor online.

Only thought I have at the moment - is providing a way to specify widths between blocks of keys on the plate (horizontal / vertical). You can only get so accurate using the keyboard layout editor online.

I am scripting this, so everything will be based off dimensions which I dictate.

For example:The space taken up by a single key is 19.05mm1u = 19.051.25u = 19.05*1.251.50u = 19.05*1.50... and so on ...

I am using the key unit sizes to determine where the switch cutouts should be placed.

This is what you are referring to right? Correct me if I misunderstood your questions.

oh sweet, so it'll be like Ne0phyte's laygenv2 and it's DXF export function but easier to use! I can't wait.

You might want to check with ne0phyte for some tips / info. Maybe it can save you some time.

Yes, I think it is basically the same idea but easier to use. I have never used ne0phyte's tool because I do not know what I am supposed to enter to get a result and there are no instructions on the site. I will contact him though because I am sure he has some advice for me.

Yes, I plan to have a list (with pictures) of the different case layouts that you can select from and that will dictate where the mount holes will be located. I will definitely be crowdsourcing the measurements for all of the different case mount points. What do you think is the best way to start collecting this information?

I think for his it's easier to do stepped keycaps (and caps that are vertical and a different size on both bits). I spent about 45 minutes trying to get the keyboard-layout-editor working for a specific keycap on my displaywriter. Code is a little clunky for that.

Yes, I plan to have a list (with pictures) of the different case layouts that you can select from and that dictate where the mount holes will be located. I will definitely be crowdsourcing the measurements for all of the different case mount points. What do you think is the best way to start collecting this information?

Hmm, I think you could just make a post, and ask people to advertize it in their signature (as well as the online tool) and then for specific ones that are hard to get people to upload to you, search the forum for people that have them and then PM them or the KB Creator for more info.

Like I know who has the CAD drawings for the skeldon plate, so I can get the exact measurements from there.

I measured the poker2 myself with a vernier caliper, so some of my measurements might be up to 0.5mm off because it's sometimes hard to get things exact.

Sprit was kind enough to forward me the cad drawings for his 110% KB so I could purchase a sufficiently huge hunk of metal to bolt it to (I think this method is now call the swill case). You might ask him for what he's got (would be the same for the other winkeyless.kr boards.

---

I wonder if you could have a "key" for certain KBs, where you could make plates for a PCB, and the only options are what the PCB itself supports. Maybe some presets or something. This would make it easy for 1800 plates for lightsaver V2, or making custom phantom plates easily. Of course also have a "full custom" mode where you can design an arbitrary plate.

What about also having support for rotated keyswitches? Like I want to make plates for ergodox (thumb area) or some of jacobolus' ergo designs. Just a thought.

I hope I'm not throwing too much info and requests at you. I don't want you to get into feature creep or design hell. Please just pick what features make it into the initial release and then everything else can be added later.

Only thought I have at the moment - is providing a way to specify widths between blocks of keys on the plate (horizontal / vertical). You can only get so accurate using the keyboard layout editor online.

I am scripting this, so everything will be based off dimensions which I dictate.

For example:The space taken up by a single key is 19.05mm1u = 19.051.25u = 19.05*1.251.50u = 19.05*1.50... and so on ...

I am using the key unit sizes to determine where the switch cutouts should be placed.

This is what you are referring to right? Correct me if I misunderstood your questions.

Spacing between the keys that are next to each other will be set. I am referring to the width between blocks of keys - like between the main typing area compared to the arrows/6 pack, or between the main typing area and the function row.

Only thought I have at the moment - is providing a way to specify widths between blocks of keys on the plate (horizontal / vertical). You can only get so accurate using the keyboard layout editor online.

I am scripting this, so everything will be based off dimensions which I dictate.

For example:The space taken up by a single key is 19.05mm1u = 19.051.25u = 19.05*1.251.50u = 19.05*1.50... and so on ...

I am using the key unit sizes to determine where the switch cutouts should be placed.

This is what you are referring to right? Correct me if I misunderstood your questions.

Spacing between the keys that are next to each other will be set. I am referring to the width between blocks of keys - like between the main typing area compared to the arrows/6 pack, or between the main typing area and the function row.

Ahh, gotcha. Yes, I am planning to do the same thing that the keyboard-layout-editor does. He has basically defined that space as a fraction of a u1 key. It seems to work pretty well, so I was planning to do the same thing. So yes, I would be supporting putting blank space between keys. This would be automatic if your layout in the keyboard-layout-editor has them.

So can we choose the x and y coordinates of the switch holes?You can't make the spacing that would be between the function row and number row on Ne0phyte's program to my knowledge.

Edit: Swill pretty much answered this in a reply to another person

Yep. It works pretty much like this.

1u space between Esc and F1 would look like this in the raw data: ["Esc",{x:1},"F1"...

The space between Fn row and number keys would look like this: [{y:0.5},"~\n`"...For the y axis stuff, you specify it at the start of the line and it works for the whole row.

I have not considered supporting the ergodox layout. I am a bit concerned with the amount of work that would be. We will see how easy it will be for me to support once I get the basic parser/builder in place.

So can we choose the x and y coordinates of the switch holes?You can't make the spacing that would be between the function row and number row on Ne0phyte's program to my knowledge.

Edit: Swill pretty much answered this in a reply to another person

Yep. It works pretty much like this.

1u space between Esc and F1 would look like this in the raw data: ["Esc",{x:1},"F1"...

The space between Fn row and number keys would look like this: [{y:0.5},"~\n`"...For the y axis stuff, you specify it at the start of the line and it works for the whole row.

I have not considered supporting the ergodox layout. I am a bit concerned with the amount of work that would be. We will see how easy it will be for me to support once I get the basic parser/builder in place.

If you do ever feel like it, would adding an option to define the rotation of a switch by degrees suffice as a way to do this?

oh sweet, so it'll be like Ne0phyte's laygenv2 and it's DXF export function but easier to use! I can't wait.

You might want to check with ne0phyte for some tips / info. Maybe it can save you some time.

Yes, I think it is basically the same idea but easier to use. I have never used ne0phyte's tool because I do not know what I am supposed to enter to get a result and there are no instructions on the site. I will contact him though because I am sure he has some advice for me.

Yes, I plan to have a list (with pictures) of the different case layouts that you can select from and that will dictate where the mount holes will be located. I will definitely be crowdsourcing the measurements for all of the different case mount points. What do you think is the best way to start collecting this information?

I think for his it's easier to do stepped keycaps (and caps that are vertical and a different size on both bits). I spent about 45 minutes trying to get the keyboard-layout-editor working for a specific keycap on my displaywriter. Code is a little clunky for that.

Yes, I plan to have a list (with pictures) of the different case layouts that you can select from and that dictate where the mount holes will be located. I will definitely be crowdsourcing the measurements for all of the different case mount points. What do you think is the best way to start collecting this information?

Hmm, I think you could just make a post, and ask people to advertize it in their signature (as well as the online tool) and then for specific ones that are hard to get people to upload to you, search the forum for people that have them and then PM them or the KB Creator for more info.

Like I know who has the CAD drawings for the skeldon plate, so I can get the exact measurements from there.

I measured the poker2 myself with a vernier caliper, so some of my measurements might be up to 0.5mm off because it's sometimes hard to get things exact.

Sprit was kind enough to forward me the cad drawings for his 110% KB so I could purchase a sufficiently huge hunk of metal to bolt it to (I think this method is now call the swill case). You might ask him for what he's got (would be the same for the other winkeyless.kr boards.

---

I wonder if you could have a "key" for certain KBs, where you could make plates for a PCB, and the only options are what the PCB itself supports. Maybe some presets or something. This would make it easy for 1800 plates for lightsaver V2, or making custom phantom plates easily. Of course also have a "full custom" mode where you can design an arbitrary plate.

What about also having support for rotated keyswitches? Like I want to make plates for ergodox (thumb area) or some of jacobolus' ergo designs. Just a thought.

I hope I'm not throwing too much info and requests at you. I don't want you to get into feature creep or design hell. Please just pick what features make it into the initial release and then everything else can be added later.

Thanks for the DT link. That is very helpful for understanding how that tool works.

I have not thought of stepped keys. I may have to look into that later. Thanks for getting that on my radar. The vertical keys should not be a problem. They are defined as the following in in Raw data: {h:2},"Enter"

I will try to put together as many layouts as I can find and then I will do a call out (when I am ready) for anyone who has dims to help me out getting me the details. I will start small and work my way from there...

Sprit sent me his 60% and 75% drawings so I could build minimal cases for those builds. Love the fact that the 'swill case' is catching on a bit. I love that case concept and I use it on all my custom boards right now. I have been seeing a lot of people take the idea and remix it and make it theirs and really come up with some cool stuff. Thats awesome...

Yes, doing presets is something I am considering as well. If nothing else it will be a good knowledge base of plate files. Like the 101 different layouts the GH60 can be configured in.

I have not thought of rotating on non-90-degree angles. I will have to put more thought into that one. It won't be in version 1, that I can tell you for sure.

Basically, I am going to automatically add stabilizer holes on keys that are 2u or greater. I will just put 2u stab holes on everything up to 4u, at which point I will start using different stab sizes like the SP spacing (i think). And then each of the space bar sizes will have their own stab cutout sizes. This will be automatically generated based on the size of the key. For vertical keys, I will put stab cutouts if the key is larger than 2u.

I will be offering 4 different switch opening types, one of which allows for MX switches to be rotated 90º. One of the switch openings will also support Alps switches (but will have MX stab holes for now).

I am going to be drawing the stab cutouts tonight. I am going to try to make it so you can put the stabilizer in either way. We will see if that is possible once I sit down with the Cherry specification sheet and start playing with it.

Keep throwing ideas my way. It is MUCH easier to build in features (or at least setup my code so I can support the features later) if I get the wishlist stuff now. These are really good things for me to be paying attention to.

If you do ever feel like it, would adding an option to define the rotation of a switch by degrees suffice as a way to do this?

Yes, do you plan to support ergodox and other ergo designs with rotated switches? I see excellent arguments on both sides.

I had not thought of it, but it is a good idea.

The keyboard-layout-editor supports that functionality, so theoretically this could be added.

This is how the keyboard-layout-editor handles the first row of the ergodox thumb cluster.[{r:30,rx:6.5,ry:4.25,y:-1,x:1},"",""],

Notice the 'r' value which I believe to be the rotation in degrees. I am not sure what the 'rx' and 'ry' options do yet, but that code is open source, so I can go poke around in the code to better understand the engine behind it.

I have not thought of stepped keys. I may have to look into that later. Thanks for getting that on my radar. The vertical keys should not be a problem. They are defined as the following in in Raw data: {h:2},"Enter"

This, I see is a problem. What if I have a KB like this that has a vertical key that's 2 different widths? They do exist also for cherry. I think the only issue here ('cause I don't care what the layout shows as long as it works) is making sure that the switch is in the right place underneath the ISO enter or whatever. IIRC for cherry they are in the middle between the rows.

I will try to put together as many layouts as I can find and then I will do a call out (when I am ready) for anyone who has dims to help me out getting me the details. I will start small and work my way from there...

Sprit sent me his 60% and 75% drawings so I could build minimal cases for those builds. Love the fact that the 'swill case' is catching on a bit. I love that case concept and I use it on all my custom boards right now. I have been seeing a lot of people take the idea and remix it and make it theirs and really come up with some cool stuff. Thats awesome...

Probably one of my fav compact designs. plate mounted KB with a "swill case". I used to resent it because it was invented before you were a member here but you popularized it. We gotta call it something, and I like the name.

Basically, I am going to automatically add stabilizer holes on keys that are 2u or greater. I will just put 2u stab holes on everything up to 4u, at which point I will start using different stab sizes like the SP spacing (i think). And then each of the space bar sizes will have their own stab cutout sizes. This will be automatically generated based on the size of the key. For vertical keys, I will put stab cutouts if the key is larger than 2u.

I will be offering 4 different switch opening types, one of which allows for MX switches to be rotated 90º. One of the switch openings will also support Alps switches (but will have MX stab holes for now).

I am going to be drawing the stab cutouts tonight. I am going to try to make it so you can put the stabilizer in either way. We will see if that is possible once I sit down with the Cherry specification sheet and start playing with it.

Keep throwing ideas my way. It is MUCH easier to build in features (or at least setup my code so I can support the features later) if I get the wishlist stuff now. These are really good things for me to be paying attention to.

okay I'll give it some thought when I'm at work today and hopefully have ideas for you later.

I have not thought of stepped keys. I may have to look into that later. Thanks for getting that on my radar. The vertical keys should not be a problem. They are defined as the following in in Raw data: {h:2},"Enter"

This, I see is a problem. What if I have a KB like this that has a vertical key that's 2 different widths?

Show Image

They do exist also for cherry. I think the only issue here ('cause I don't care what the layout shows as long as it works) is making sure that the switch is in the right place underneath the ISO enter or whatever. IIRC for cherry they are in the middle between the rows.

I will try to put together as many layouts as I can find and then I will do a call out (when I am ready) for anyone who has dims to help me out getting me the details. I will start small and work my way from there...

Sprit sent me his 60% and 75% drawings so I could build minimal cases for those builds. Love the fact that the 'swill case' is catching on a bit. :) I love that case concept and I use it on all my custom boards right now. I have been seeing a lot of people take the idea and remix it and make it theirs and really come up with some cool stuff. Thats awesome...

Probably one of my fav compact designs. plate mounted KB with a "swill case". I used to resent it because it was invented before you were a member here but you popularized it. We gotta call it something, and I like the name.

Basically, I am going to automatically add stabilizer holes on keys that are 2u or greater. I will just put 2u stab holes on everything up to 4u, at which point I will start using different stab sizes like the SP spacing (i think). And then each of the space bar sizes will have their own stab cutout sizes. This will be automatically generated based on the size of the key. For vertical keys, I will put stab cutouts if the key is larger than 2u.

I will be offering 4 different switch opening types, one of which allows for MX switches to be rotated 90º. One of the switch openings will also support Alps switches (but will have MX stab holes for now).

I am going to be drawing the stab cutouts tonight. I am going to try to make it so you can put the stabilizer in either way. We will see if that is possible once I sit down with the Cherry specification sheet and start playing with it.

Keep throwing ideas my way. It is MUCH easier to build in features (or at least setup my code so I can support the features later) if I get the wishlist stuff now. These are really good things for me to be paying attention to.

okay I'll give it some thought when I'm at work today and hopefully have ideas for you later.

The ISO enter is supported by the keyboard-layout-editor, so it should be possible to support. I will have to figure out some of the details on that one because it does not really predict where the switch placement should be based on the description of the key (unlike most of the other keys).Here is the code for an ISO enter: {x:0.25,w:1.25,h:2,w2:1.5,h2:1,x2:-0.25},"Enter"

I am not planning to support ISO on the first version. I will slowly add support for new features like this (or others can offer pull requests) once the code is made available. It is easier to stay focused on the code and get something working when I am doing it alone to start. Once I have something then I can release it into the wild and others can start playing with it and contributing.

Only thought I have at the moment - is providing a way to specify widths between blocks of keys on the plate (horizontal / vertical). You can only get so accurate using the keyboard layout editor online.

I am scripting this, so everything will be based off dimensions which I dictate.

For example:The space taken up by a single key is 19.05mm1u = 19.051.25u = 19.05*1.251.50u = 19.05*1.50... and so on ...

I am using the key unit sizes to determine where the switch cutouts should be placed.

This is what you are referring to right? Correct me if I misunderstood your questions.

Spacing between the keys that are next to each other will be set. I am referring to the width between blocks of keys - like between the main typing area compared to the arrows/6 pack, or between the main typing area and the function row.

Ahh, gotcha. Yes, I am planning to do the same thing that the keyboard-layout-editor does. He has basically defined that space as a fraction of a u1 key. It seems to work pretty well, so I was planning to do the same thing. So yes, I would be supporting putting blank space between keys. This would be automatic if your layout in the keyboard-layout-editor has them.

This is what I mean is not accurate enough in the existing layout editor. Sure you can specify .5 or .25 of a key width for spacing. But if I need the spacing between the 6 pack and numpad to be exactly 0.3875" - can't do that.

Only thought I have at the moment - is providing a way to specify widths between blocks of keys on the plate (horizontal / vertical). You can only get so accurate using the keyboard layout editor online.

I am scripting this, so everything will be based off dimensions which I dictate.

For example:The space taken up by a single key is 19.05mm1u = 19.051.25u = 19.05*1.251.50u = 19.05*1.50... and so on ...

I am using the key unit sizes to determine where the switch cutouts should be placed.

This is what you are referring to right? Correct me if I misunderstood your questions.

Spacing between the keys that are next to each other will be set. I am referring to the width between blocks of keys - like between the main typing area compared to the arrows/6 pack, or between the main typing area and the function row.

Ahh, gotcha. Yes, I am planning to do the same thing that the keyboard-layout-editor does. He has basically defined that space as a fraction of a u1 key. It seems to work pretty well, so I was planning to do the same thing. So yes, I would be supporting putting blank space between keys. This would be automatic if your layout in the keyboard-layout-editor has them.

This is what I mean is not accurate enough in the existing layout editor. Sure you can specify .5 or .25 of a key width for spacing. But if I need the spacing between the 6 pack and numpad to be exactly 0.3875" - can't do that.

0.3875" = 9.8425mm1/19.05 = x/9.8425x = 9.8425/19.05x = .51667

So the code would be as follows to get your exact dimension:"Pause",{x:51667},"7"

So I have been thinking about this exact for some time and I had planned on using the SolidWorks API to create the DWG/DXF file that you would need for this and then I was going to use the Esprit API to automatically generate the G-code to machine the plate. The problem that I ran in to was stabilizers. They are different based on who manufactures the cap. For instance: SP has a 6.25 unit space bar but the stabilizer spacing is different from the 6.25u spacebar from... I can't remember who right now but the spacing was about .03" per side difference (about 1/16" total). It was enough that you needed to either buy your spacebar around your stab or make your plate around your spacebar. As far as I know the issue was limited to the space bar but I cannot remember the specifics.

Sure there are a few ways to skin a cat and this isn't some impossible hurdle but it is something people will need to be aware of when designing their plate. If you have any questions feel free to PM me or hit me up on IRC.

So I have been thinking about this exact for some time and I had planned on using the SolidWorks API to create the DWG/DXF file that you would need for this and then I was going to use the Esprit API to automatically generate the G-code to machine the plate. The problem that I ran in to was stabilizers. They are different based on who manufactures the cap. For instance: SP has a 6.25 unit space bar but the stabilizer spacing is different from the 6.25u spacebar from... I can't remember who right now but the spacing was about .03" per side difference (about 1/16" total). It was enough that you needed to either buy your spacebar around your stab or make your plate around your spacebar. As far as I know the issue was limited to the space bar but I cannot remember the specifics.

Sure there are a few ways to skin a cat and this isn't some impossible hurdle but it is something people will need to be aware of when designing their plate. If you have any questions feel free to PM me or hit me up on IRC.

In the OP of the GH CAD Resource Hub, I found the following (and the associated DWG which I am trying to get working in FreeCAD right now). I may choose to use the universal stabs for everything, but I am not sure. Maybe I will implement both the standard stabs as well as giving an option for people to use the universal stab type. I am actively working on this right now, so I will have a better idea how I want to solve this problem later tonight. Thanks for the heads up...