-
Notifications
You must be signed in to change notification settings - Fork 31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Key Cap collisions with defaults & Cherry MX switches #21
Comments
Hi! I am sorry about this nasty surprise. If you have a look at my most recent finished DMOTE build here you can see that it’s mostly DSA, but also a few non-standard keycaps in the area where your keys collide. This is because I, just like you, could not get DSA to fit. That is to say, I tried spacing for DSA and found that my index finger had to stretch too far to reach all the keys, so I deliberately moved the switches closer together. The non-standard caps I designed to solve this problem are in the The Here is a shot with a further adaptation to MX in Here is that adaptation itself.
I’ve added one line to each minimal type of keycap, to limit skirt length. This length (2 mm) is rather extreme and will not provide full dust protection. I suggest you experiment with other skirt lengths, printing caps until you find a good compromise. Let me know how it goes so we can amend A build guide should help prevent some surprises like this, but I’m sure some people would build first and read the guide later. I wonder if a less comfortable all-DSA version of the DMOTE would be friendlier or an even nastier form of surprise. |
Aha! So that's it! I hadn't noticed that in the build photos. Since I've been working on this slowly, I actually had some of the And thanks for the help! I'll follow up as I experiment. :) |
There are parameters available for adjusting the fit. Here’s a quick illustrated guide. First, an isometric view from below of the bundled The support structures are optional. Here’s with Here’s with an adjustment to the Finally, here’s an adjustment to According to my experiments, you generally need your nozzle size on an FDM printer subtracted with these settings for a good fit, but you could also try slicing with Cura; it has an advanced parameter for doing the same sort of adjustment with nominal dimensions in the STL. There’s a corresponding I hope this helps. I’ll try to turn it into a proper document at some point. |
I also ran into some similar issues with the base DMOTE config. Initially I missed that the base config file was using Alps switches. I think that was mentioned, but I must have missed it at first glance and just ran I have also been wanting to use standard DSA caps as well. Since this definitely collides with the default settings as mentioned, I have been working on an adjusted version of the DMOTE config that doesn't collide with DSA before I do a first test print. Unfortunately, this has required more extensive changes to the config than I expected. While this has not dissuaded me yet, I can imagine it would be a barrier for some folks. Maybe this belongs in a separate issue, but I think I haven't found a good workflow for testing keycap fit with a given config. I have recently started using Is there a better way to check keycap clearance visually or programmatically? Maybe extending a cuboid from the base of the cap in the preview? Or if it can be easily measured, by emitting a warning during the build if anything gets too close? Even better, though I'm sure it's far too difficult, could the spacing of the switches be automatically adjusted to account for the keycap and its travel? Thanks for your amazing work on this project! |
Hi Jeremy.
No doubt it would be. I’m not happy with the syntax of the
You’re on the right track. What I currently use is
It would be easy to expand the application to render caps both at rest and in a pressed state, since length of travel is codified by
This would be hard. Neither OpenSCAD nor
Travel is already accounted for. The difference in travel between ALPS and MX is insignificant, but it’s part of the algorithm for curving rows and columns. To be honest, though, I don’t think it should be. We’re talking about making it easy for users to choose freely between different types of switches. What that means to me is that the choice of switches should have minimal side effects, because side effects threaten other aspects of design. If I were to add something like Kailh’s low-profile switches as an option, without changing the algorithm, then key clusters would shrink and grow considerably upon changing types. The knock-on effects would probably be surprising and unwelcome. Placing switches as densely as possible is useful for the north-west corner of the DMOTE but is not a general rule of ergonomy. This thread has confirmed my suspicion that the present state of affairs is unsustainable. Please let me know how it goes with your all-DSA build. If you succeed where I failed and make it comfortable enough for long-term use, I would like to canonize some form of it as a bundled configuration file, to make a free choice of switches and keycaps easier. Based on that, I will continue to ponder how to redesign |
Nice! That is what I was looking for.
Okay, right. I was modifying various angles after switching to all DSA and was having trouble especially with column-column collisions. Some of them would probably only occur when the keys moved. I did a quick hack to the OpenSCAD output to draw a cube down to see if it would be a bit easier to see. It helped, then I realized I could add transparency which made the overlap even easier to see. I have no idea what I'm doing with 3D stuff, so maybe there is a more effective solution. I think encoding something like this in the cluster preview might be the easiest way to help folks who start messing with the key placement.
Oh, so the keycap / travel does factor into the algorithm beyond negative space? I wasn't aware of that.
Gotcha, that makes sense.
Okay, I'd be happy to share what I come up with if I get to something usable. |
I also ran into this issue when printing the default DMOTE, so I've been playing around with the code and came up with this: https://github.com/DrakeRichards/dactyl-keyboard/tree/DSA The main issues were in columns 0-2, so I widened their spacing a bit. The draft prints I made seem to work well. I'm printing a full shell with these adjustments now and will share the results when the print finishes. |
Looking forward to your feedback as well, DrakeRichards. I have now shortened the minimal-style keys’ skirts in the bundled MX-style configuration fragment (bee3be2). Since this should fix the existing design, reducing collisions, I am closing this issue for now. A future new variant for all-DSA keys based on your feedback will be a separate issue. |
In ongoing work towards v0.7.0 (a29d20b), the basic DMOTE design now has only DSA-like caps, as it did in v0.3.0. Its key layout is no longer responsive to length of key travel. The tighter design that was basic in v0.4.0–v0.6.0 (since 5322700) and had some non-DSA keycaps has moved to |
I've been building a DMOTE, and after I put on the key caps I discovered that a few of the key caps interfere with each other when pressed. I've used DSA keys from https://pimpmykeyboard.com/, which I think match the expected key cap form factor.
Delta between default (
Makefile
):Upon reflection you can actually see some of the cross column collisions in the visualization render (top inner keys):
However, some of the interference is more noticeable after putting key caps on and pressing keys.
This affects the inner most column (all three keys) and the top two keys of the two adjacent columns. I've also noticed a small amount of cross-column interference on the same keys.
I feel like I missed something, because of the amount of overlap that I ended up with. Any suggestions / changes for avoiding this for others?
My personal solution will be to double check 3d-print residue, and the file down keycaps as necessary. Although I understand filing down key caps is probably not a desirable solution for others.
The text was updated successfully, but these errors were encountered: