Comment by rianadon
4 days ago
Author here. It’s a surprise seeing this posted while I’m in the middle of traveling. Happy to answer any questions! If you’re curious, the tech stack is static assets bundled with sveltekit/vite and hosted on gitlab pages + a minimal go backend.
What you've built is a work of art, it blew my mind the first time I came across it. I love the completeness of vision (boomboom tss).
I've only just realised that you've opensourced it all so I haven't looked at the code yet, but a couple of Qs:
- is there anything that the old wave your fingers at the screen pose detect model did better the new screenpalm method? I always wondered if you were detecting the angle of motion (pronation?) for each finger to tilt its keywell, and I guess it's maybe harder to do that with the new method.
- have you ever thought about using the measurements for one hand to spot measurement outliers in the other? Would it ever make sense to generate a symmetrical keyboard from the combined measurements of both hands?
- have you thought about collaborating with other keyboard designers to add their designs to the app and give them a cut? For example the Cygnus[0] is a stunning keyboard; I'm not sure if it is parametrically generated, but I do remember thinking that I'd absolutely pay money to get one tailored to my hand geometry, and then wondering whether you could ever pull off building a designer marketplace/ecosystem out of the whole thing, maybe with a little sdk. It's one thing that the aliexpress copycat sellers can't copy.
Also somehow only just realised that you have a blog. I might go read it.
[0]: https://kbd.news/Cygnus-1.0-2307.html
Thanks so much! Answering your great qs:
1) I still have the waving your fingers stage (it's after the screenpalm), but it now walks you through different finger motions so that the results are more consistent than waving your fingers all around. It's detecting then angle of motion, but I'm so far only using this for building the 3D hand model. The old method had better UX and fewer bugs, but the new one will more accurately measure the size of your hand.
2) I've never thought of that! I sometimes generate symmetrical keyboards for myself, simply because it’s easier to edit when both sides are synced. But I ultimately think it’s better to fit each hand independently.
3) The cygnus keyboard is super cool. I’ve made one and modified the STEP file to change the sockets. The fusion 360 files for it are published, so it likely has some parametrization but not anywhere close enough to achieve the flexibility of the Cosmos model.
There’s a tradeoff between customizability and how perfect the keyboard looks and feels. I’ve opted to go all-in on customizability, because to my knowledge no other keyboard design does this. I make as few assumptions about your keyboard as I can, so that Cosmos works with a single key, small mouse-like modules with a trackpad/ball and a few keys, or a proper keyboard shape. The downside is that what I’m doing is akin to teaching a robot to paint, whereas I’d compare designs like the Cygnus that place more constraints on the keyboard shape to a human painting. Until AI becomes sufficiently skilled at 3D design, the human painting will be more creative and skilled than the robot, and I can't bridge both types of design.
1. What about a thumb cluster with 4 keys in a row? IDK if it's workable, maybe not. My experience with Ergodox says pressing top row on thumb cluster is too clumsy. (Maybe it's easier with dactyl-like keyboards?)
2. On Ergodox EZ, and non-English layout, I need more keys. Unfortunately, the right side corner of ISO keyboard has to be distributed among other places on Ergodox EZ. (I'd love to have home/pgup/pgdn/end column somewhere, like on laptops. Maybe the rightmost end of kbd is not the best place for it, IDK.)
3. Adding extra row/column causes lower row collide with the thumb cluster. I guess, it's reasonable, but I don't know what's the workaround. (remove the lower row completely?) https://imgur.com/a/vdfOLq1
Good idea about finger scanning.
I tried the scan the hand and simulate features. Will the editor make different halves of the keyboard?
Also, thumb bends differently than in the simulator. :)
to be clear about non-English layout in ErgoDox EZ. In ISO keyboard, there are 3 keys (two square brackets and foot/inch key), that don't fit in EZ's main keys block. I got 2 options for them:
1. Put them on the rightmost column, but it's unclear where the `]` has to go -- lower, or upper.
2. Use the rightmost wide column of keys for some special keys (like home/pgup/pgdn/end), but have to redistribute these 3 keys elsewhere.
Not sure the specific problems with a non-english layout, but if it helps with some ideas this is the layout I use for my keyboard (so far)[1].
[ and ] go on the inner columns on either side and '/" goes where it normally would be on an ansi qwerty layout.
The page up/down and home/end keys live on a temporary (hold) layer under the arrow keys, which is a habit I picked up from many years of using mac laptops where fn + arrow keys is how you get those keys anyway.
Layers 0 and 3 are the really important ones, 1 and 2 are just the defaults from Ergodox. And while they are assigned, I currently haven't been using the capslock, the lower-left ', the lower-right [ ] and cmd+enter keys or the Meh key so those would be freed up for use if needed. I also turned on the "auto-shift" functionality, so if you liked that it would also free up the left and right shifts for other use.
The letter layout is "middlemak"[2] which I found to be more comfortable than qwerty or colemak on the ortholinear layout, and a bit easier to learn than colemak because it shares a lot of keys with qwerty. But that may not be relevant for you if you're using a non-english key set.
[1]: https://configure.zsa.io/ergodox-ez-st/layouts/pNO0G/latest/... [2]: https://www.reddit.com/r/Middlemak/
4 replies →
Have you considered doing this for mice? Im fine with a normal keyboard, but mice, maaaaan. My hand doesnt sit right on any mouse, and my hand is always dragging on the pad, etc.
I briefly thought about like a form fitting style, where you go and have your hand scanned in resting position on a dummy mouse, and then the mouse body is formed for your hand. This could also allow for button customizations as well.
I used this to build my current keyboard a few months ago. It was my first hand-wired keyboard, and this made it much more approachable. Thanks for creating it!
It could really use a way to control the spread of the button around the track ball. Just to make them closer together. The palmrest should also grow wider when columns are added to the keyboard.
Also, would be great to have an option of adding a USB hub on the inner edge for plugging in a USB key or adding a USB plug on the outside for a mouse.
On the advanced tab, you can adjust the vertical spacing of the thumb cluster to move keys closer together. As for USB hubs, at some point I need to draw a line and stop adding options. You can download a STEP file of the keyboard and edit it in CAD, or if you’re looking for something easier to learn, I recommend editing the STL file in tinkercad. If you don’t mind plugging in the mouse to the back, you can configure custom-sized connector cutouts in advanced mode.
Great work @rianadon!