Tandem: dual-alphabet layouts (Russian, Ukrainian, Azerbaijani) built on your optimizer #101
max-hester
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Hi Dario,
I want to show you what your optimizer made possible, and to thank you for it properly.
Over the past year I have used keyboard_layout_optimizer to build dual-alphabet layouts: one set of physical keys carrying a phonetically paired letter of each script (Latin
Aand CyrillicАon the same key), optimized together over a mixed-script corpus. The trick that makes it work is one you built: the Neo layout generator moves each key's whole layer stack during permutation, so a Latin-Cyrillic pairing authored into the base layout stays locked through every swap the annealer tries. Feed it real mixed-script ngrams instead of a single language and the optimizer sees the true combined load per key. No engine surgery required for the core idea. That is a testament to how well the thing is designed.The results are now public, engine and all: https://github.com/max-hester/tandem-optimizer
Three finished designs:
əon the home row.What the repo adds on top of upstream, in case any of it is useful to you or others here:
finger_travelbigram metric (Euclidean fingertip travel viaKey::position.distance), registered alongside the existing bigram metricslockmodifier so the alphabet toggle is charged only at actual script switchesmodifiersentry are silently dropped from evaluation (layout.rstakesmodifiers.len() + 1layers), which can turn a dual-script run into a primary-only one without any error. Defining a modifier entry per layer fixes it. Happy to write this up as a docs PR if you want it.Everything is GPL-3, same as upstream. Thank you for building and maintaining this. It is the best tool in the field, and it just carried three languages' worth of new layouts from idea to installers.
Max
All reactions