36

After a few years of tinkering and learning I'm finally ready to share the result of my work. Meet Kühlmak. What started out as my attempt to create the perfect keyboard layout morphed into a project to make a flexible and fast analyzer and optimizer. The feature highlights:

  • Command line interface
  • Information-rich, text-based layout overview and stats
  • Support for different types of physical keyboard layouts and fingerings (row-staggered, angle-mod, column-staggered and more)
  • Extremely fast analyzer that enables simulated annealing
  • Multi-threaded annealing to find many optimized layouts quickly
  • Multi-objective fitness function with soft targets for individual objectives
  • Multi-objective ranking system to identify the best trade-offs out of many generated layouts
  • Metrics that naturally favour finger and/or hand balance for effort, travel and n-grams
  • Finger travel distance weighted by speed (inspired by Semimak)
  • Comprehensive same-hand bigram, disjointed-bigram and same-hand 3-gram scoring system
  • Support for affinity of Space to one thumb or both
  • Optional constraints to enable steering certain layout features (e.g. preferred positions of punctuations and shortcuts)

The terminology and metrics are partially inspired by and partially adapted to The Keyboard Layouts Doc (2nd edition). However, I made some deliberate design choices and probably introduced more subtle biases that deviate from some of those definitions. There is lots more information in the README.

At this point I consider it ready enough to finally optimize a layout for my Mantis keyboard and see if it works as well as I hope it will.

[-] luckybipedal@lemmy.world 6 points 3 months ago

The "half-swept" version of Sweep does that already: https://github.com/davidphilipbarr/Sweep/tree/main/Sweep%20half-swept

The easiest way to make the board flippable if to mount the controller upside-down on one side. Half-swept uses solder jumpers for all the pads of the controller footprint, which does basically the same thing as flipping the controller.

[-] luckybipedal@lemmy.world 2 points 4 months ago

BTW, not sure if you're aware of my Mantis keyboard design. It was inspired by the same hexagonal key caps but has since evolved to my own 3D printed sculpted hexagonal key profile, which is a lot more comfortable for typing: https://github.com/fxkuehl/mantis

My v0.1 prototype resembled your keyboard. But your PCB is much prettier. And I haven't designed anything with an integrated controller. Kudos! I bet this is not your first PCB design.

I'm guessing your layout uses 2 keys for each pinky, 5 for each index finger and 2 for each thumb.

[-] luckybipedal@lemmy.world 4 points 4 months ago

Nice. The world needs more hex keyboards!

[-] luckybipedal@lemmy.world 2 points 6 months ago

Awesome! Thank you for sharing. I want to to try and use PCB assembly for the next version of my keyboard. I'll bookmark this post for information and inspiration.

22

I finally finished writing a build guide for my Mantis keyboard and taking all the pictures to make it easy to follow. Hope it helps someone ...

[-] luckybipedal@lemmy.world 1 points 8 months ago

I had similar problems with a Cantor build, and I have pretty small hands. I think the problem was not necessarily the key spacing, but the flat key profile that makes it harder to feel the key positions and easier to press two keys at once. MX keys typically have larger gaps between the key tops, which makes orientation easier for me. Interestingly I also have no problem with chiclet keys on my laptop with 3mm gaps between keys.

I was hoping to try LDSA key caps to fix this, but they never came back in stock before I moved on from my Cantor. There are other sculpted key cap options to try. E.g. https://lowprokb.ca/collections/keycaps/products/ddc-choc-pbt-blank-keycaps, https://www.asymplex.xyz/product/cs-chicago-stenographer-profile or https://3dkeycap.com/products/klp-choc-keycap-set-low-profile-ergonomic-sculpted-keycaps.

[-] luckybipedal@lemmy.world 3 points 8 months ago

I used to have two Type Matrix boards long time ago. It got me into thinking about more ergonomic layouts and taught me first Dvorak and later Colemak. I agree with others' comments about poor longevity. I also find that it's not a very ergonomic layout in hindsight.

Learning how to clone this layout in a custom mechanical keyboard is like jumping into the deep end. There may be other ways. E.g. get an XD75 or ID75 and make a layout that's "close enough". That takes PCB design and lots of firmware hacking out of the equation. But you'd still learn about different switches, layers, thumb keys, maybe home-row-mods if you want and ease you into more possibilities of firmware hacking. You may find a more ergonomic or efficient layout than the Type Matrix that way, as well.

[-] luckybipedal@lemmy.world 2 points 8 months ago

The keycaps are my own design, 3D printed at JLC. Their footprint matches these: https://fkcaps.com/keycaps/hex. They were the original inspiration for this layout and I used them on early prototypes.

I made a short demo video. Sorry about the bad audio: https://youtu.be/Rh3bqSVHcbg

[-] luckybipedal@lemmy.world 3 points 8 months ago

Pink switches are very light. I bottom out pretty hard, so they're probably wasted on me. It makes a nice percussive sound in the wooden case, though. But I do find them quite usable with these sculpted keys. I didn't like them on a Cantor with MBK key caps as it was too easy to actuate two keys at once by accident.

For me, Pro Red is probably the sweet spot for light linear switches.

61
submitted 8 months ago* (last edited 8 months ago) by luckybipedal@lemmy.world to c/ergomechkeyboards@lemmy.world

I've been busy building a few Mantis v0.3.3 builds for friends and family. It took me way longer to build these than I had planned, and I still have a few more builds to go before I work on the next version of the design. But I'm getting better at this, and very happy with how these turned out. It's nice to try out different switches. On these boards I used Choc Sunset, Pro Red and Pink switches. They all work great with the sculpted key caps.

The two keyboards in the front use clear acrylic case plates and key caps made of two different resin materials to highlight the home keys. They are translucent enough for the backlight. The one in the back is made with birch plywood plates, painted with 3 coats of shellac to bring out the wood grain and lightly sanded for a matte finish. The key caps are grey nylon. The small holes in the skirts work great for letting the backlight shine through those opaque keys.

I used KB2040 controllers from Adafruit for all these builds and loving the extra space for building the firmware with Vial support. My old v0.3 prototype with a ProMicro also works with Vial, but I had to disable some features and lighting effects to squeeze it in.

[-] luckybipedal@lemmy.world 1 points 10 months ago

I was not considering the press point. I was using the center of each key.

In a column staggered layout I'm calling the distance between the centers of adjacent keys in the same column the row spacing. The column spacing is the distance of imaginary lines drawn along adjacent columns (through the key centres). I measure the shortest possible distance, which is at a right angle to those lines.

In a row staggered point of view it's the other way around.

The different spacing comes from the hexagonal key shape. If you think of it as row staggered, the keys have 21.5mm horizontal (column) spacing and 18.6mm vertical (row) spacing. Rotate your point of view by 30° and this flips to a column staggered layout. Now the columns are spaced 18.6mm and rows are 21.5mm apart.

Square keys don't have the same hexagonal symmetry. When you look at it as row staggered, it's normal MX spacing, 19x19mm. When you look at it as column staggered, you need to do some trigonometry. The column angle is atan(0.5) = 26.6°. the column spacing is 19mm × cos(26.6°). The row spacing is from Pythagoras sqrt(19^2 + (19/2)^2).

[-] luckybipedal@lemmy.world 2 points 10 months ago

Yeah, I wasn't really happy with the height and sharp edge of the taller keys. The latest version flattens that a bit. It still has the lower half a spherical dish facing the key well, but flattens out above that. This makes it more versatile as a thumb key as well.

https://github.com/fxkuehl/mantis/raw/main/assets/mantis-v0.3-leds.jpg

https://github.com/fxkuehl/mantis/blob/main/keycap/keycap-v3-28.stl

[-] luckybipedal@lemmy.world 1 points 11 months ago

That's a cool find. I had not heard of the Klacker BS. The exact spacing and hand angle will be slightly different but pretty close. Column-staggered hexagonal keys give you 18.6mm between columns and 21.5 between rows with a 30° angle. 0.5u row-staggered MX keys with 19mm spacing give you about 17mm between columns and 21.2mm between rows at 26.6°. Also the resulting column-stagger is not exactly 0.5u but about 0.45u.

Klacker BS doesn't eliminate the top inner index finger key. Moving that to the pinkies like Mantis does, would bring the hands 1u closer together.

57

kbd.news is running their Advent Calendar for the second year and I'm honoured they chose my article about Mantis and hexagonal keys in ergo keyboards for opening it. Enjoy the read and have a happy holiday season ...

[-] luckybipedal@lemmy.world 4 points 1 year ago

Thank you for the reference. I just watched the movie for the first time. I mean I was going for an organic looking shape with these keycaps, but maybe I succeeded a bit more than I intended. I should make a "special" version for Halloween.

110

I updated the 3D-printed keycaps for my Mantis v0.3 keyboard to create more sculpted keywells that require less finger movement for typing.

Thanks to the rotation of the switches on the PCB, this needs only two different keycap profiles, a flat one with 15° tilt of the dish, very similar to the keycaps I had printed for the first prototype, and a tall one with 28° tilt.

The flat keys are used on the home row, the outer pinky key and most thumb keys. The tall ones are used on the remaining keys. I'm not quite happy with the rotation of the inner index finger keys with the taller key profile. Fixing that will require a revision of the PCB, if I want to keep the number of distinct key profiles to just two.

I was able to print these keys very cost-effectively at JLCPCB, by joining 10 keys in a single 3D object. For the flat keys it brings the cost down to 30 cents per key. This leads to more imperfections than printing individual keys, but they are mostly cosmetic and don't affect the usability. The savings are worth it for me to make several prototype keyboards cost effectively.

The updated 3D models, including 10-key versions are on GitHub.

69
Mantis v0.3 hatched (lemmy.world)
submitted 1 year ago* (last edited 1 year ago) by luckybipedal@lemmy.world to c/ergomechkeyboards@lemmy.world

I teased Mantis v0.3 with two previous posts. I finally finished building it over the weekend and updated the QMK firmware including RGB Matrix support. I've been typing on it all day and it's a joy to use. The layout and keymap are mostly the same as what I had on v0.2 before.

Shout-out to PCBWay for sponsoring the manufacturing of the first batch of prototype PCBs and key caps. The acrylic case plates were made locally in Toronto at Hot Pop Factory.

The design and firmware are mostly up-to-date on GitHub (still need to finalize some minor tweaks to the case plates). Here are some more pictures.

Perspective view with RGB

I need to spend more time with the RGB Matrix features in QMK. For now I'm using the ALPHAS_MODS mode to highlight the home row and home thumb keys.

Perspective view without RGB

Here is the same perspective with the LEDs off, which makes it easier to see the curves of the key well. The key cap is my own design, 3D printed in resin by PCBWay. They came out great. I only needed to remove some small left overs of supports from the bottom where it interfered with the switch stem. No big deal, my thumb nail was the only tool needed. The stems feel very solid so I was not worried about swapping key caps on and off a few times during the fit and build process. The shape and dimensions are true to the design, so they fit pretty tightly to the switches and their neighbours. The surface of the spherical dish feels slightly textured, a bit like a PBT key cap. The little holes in the keys were meant to allow light to shine through. But the material turns out to be translucent, which is nice, so I'll have the next batch made without those holes.

Perspective view showing switch rotation

The key caps are designed parametrically in OpenSCAD. I generated only a single key cap profile for this build. The key well shape comes from rotating the switches in 60° increments on different rows and thumb key positions, as well as the raised PCB for the index finger and most thumb keys. I built this one with Sunset (tactile) switches that I took off one of my v0.2 builds. They sound and feel good on this keyboard, but I'm going to build a second one with linear (Pro Red) switches for comparison.

Bottom view

The bottom view shows the reversible split bottom PCBs that make it slightly cheaper to manufacture in small batches. The fit is really good, with basically no gap between the PCBs and a perfect fit with the single-piece switch plate. I chose the more expensive purple solder mask for aesthetic reasons. It does look nice and I like the contrast with the white top PCB and key caps. Diodes and LEDs are surface-mounted from the bottom and sit inside the sound channels that meander under the switches of the two keyboard halves. I couldn't make this design work with hot-swap sockets, so the switches are committed to this keyboard now.

I'll do a sound comparison with and without the mid-layers that contain the sound channels at some point when I build the second prototype. Meanwhile I'll finish writing a build guide and do some more work on the firmware: add support for Vial and and play with the RGB features. Then I want to design a 3D printed version of the case, which would enable a simple one-stop shop way of ordering all the non-standard components from PCBWay or other PCB manufacturers that also offer 3D printing services. If that requires changes to the PCBs, it may turn into v0.4.

4

After receiving the PCBs and 3D printed key caps from PCBWay, I assembled everything with the case plates I picked up last week for a first fit-check and sound-check.

I'm really happy with how everything fits, feels and sounds. Thanks to PCBWay for sponsoring the PCB and key cap production for this prototype.

The next step is soldering all the electronics and finishing the firmware. If all goes well I'll post more pictures with RGB backlight in a few days.

view more: next ›

luckybipedal

joined 1 year ago