The Planck (pictured above) is a 40% mechanical keyboard with an ortholinear layout (the keys are arranged in columns rather than being staggered as on a traditional typewriter keyboard). The keys are laid out in a 4 × 12 grid. You can find out more about the rationale and the physical properties of the board on the OLKB website and this early writeup on my layout.
The board’s microcontroller is programmed through the free/libre QMK firmware, which allows for a great deal of flexibility in implementing keyboard layouts. QMK has some interesting features including the relatively new Combo feature:
The Combo feature is a chording type solution for adding custom actions. It lets you hit multiple keys at once and produce a different effect. For instance, hitting
Swithin the tapping term would hit
ESCinstead, or have it perform even more complex tasks.
To enable this feature, [you] need to add
COMBO_ENABLE = yesto your
Having dabbled a bit in stenography via Plover, this feature immediately caught my attention. Could one develop a hybrid input method that was typing-centric but allowed for common words to be stroked as if on a steno keyboard?
B+C T+I L+D M+K Y+U F A S T ! → because this would make you fast!
I started out with a list of common words in English and chose chords (strokes) that felt most intuitive to me. I also took some cues from Plover steno theory, but it was impossible to imitate steno very closely because of the nature of keyboard layouts such as QWERTY, which were not designed with this sort of thing in mind. In my implementation each combo triggers
SEND_STRING in order to output a word (or word affix) followed by a space:
Note that what I came up with is specifically tailored to the Colemak layout, but one could just as easily adapt this idea to QWERTY, Dvorak, and others. This was only a first pass—I expect to revise and expand this system over time.
Challenges & Limitations
Layout — Colemak (or QWERTY etc.) was not designed with chording in mind, unlike a steno layout. That constrains the number of chords with good mnemonics somewhat, since certain potentially useful chords require two or more keys on the same finger.
Capitalization — I haven’t found a good way to output capitalized variants of words. All my combos are defined in lowercase, meaning that I can’t use any of my chords at the beginning of a sentence, for example.
Overlapping — Due to a limitation of the combo feature’s current implementation, if you define a combo as a subset of another combo, chording the bigger combo triggers both combos. This precludes doing something clever like H+V → have and H+V+G → having (you would wind up with have having).