• 4 Posts
  • 2 Comments
Joined 3 years ago
Cake day: June 15th, 2023



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.



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.