Making a working <= 36 key layout

06/02/2022

DC39 DCA4 E14 A 4 FD1 A3 D5 71893 D9 CBAEB
CA74 F652 F514 4 E70 81 A7 8853 FA9 A941 C

The pursuit of minimalism in keyboard layouts is as much an exercise in programming muscle memory as it is indulging Gear Acquisition Syndrome. Making a usable layout on something that only has a few more keys than the English alphabet has letters is pretty tricky. Fortunately, QMK has some clever features that allow each key to function in multiple ways depending on how it's pressed. My Miryoku-inspired Ferris/Sweep firmware uses a combination of homerow mods, layers, and tapdancing to get the most out of a small layout.

First, I suppose it's important to address the fundamental question: why bother? There's a few reasons to shrink the layout of keyboards that you use on a regular basis, but the primary one for me is to reduce hand movement whilst you type. If you type a lot (and I do 8+ hours a day) then you notice that you can contort your hands into some pretty weird positions throughout the day. As someone who has suffered from both tennis elbow, and golfer's elbow (at the same time, no less), I can tell you that RSIs are no joke, and anything you can do to limit your exposure to them is worth entertaining at least.

The keyboard magpie side of me also likes that there's fewer switches to lube, quicker builds, and generally fewer materials used so experimenting ends up being cheaper overall. I'd also be lying if I said I didn't take a weird pride in people's surprise that you can actually get any typing done on something that barely has enough keys to type all the words you might use throughout the day!

Sub-40 layouts are pretty much always in a state of flux. No matter how much time I spend with one, I'm always tinkering with it in some way. That's part of the appeal for me. However, drawing inspiration from Miryoku has allowed me to keep my approach broadly the same even if layouts within layers change a bit as I try out new things.

Layers are configurations that allow your keys to output different things. In QMK, you have a default layer which I use for my QWERTY layout. I then have 7 layers for different genres of keyboard interaction: media, navigation, mouse (I don't really use this at the moment), symbols, numbers, fn (F keys), macros (these are keyboard shortcuts I use every day that are just easier to have on a two-finger combo like 1Password, Fantastical, new Things task, and screenshots). I access these layers by holding either one of my thumb keys, Z, dot or / depending on how many thumb keys I have.

Homerow mods is the practice of tapping homerow keys to produce letters, and holding them to produce your mod keys (ctrl, alt, cmd, shift). It sounds weird but I have found it extremely intuitive and very easy to get used to. Combined with Miryoku's approach of having mods active on layers, it provides such a large amount of flexibility and comfort when typing. For example, if I'm holding a layer on my right thumb, then my right hand home keys (JKL') become the mods that they would've been on my default layer. This allows me to access shift very easily when on my number row to get the symbols produced by number keys without any uncomfortable claw-hand positioning.

Tap-dancing is something I try to keep to a minimum, as I type pretty quickly at times and I'm not a fan of accidentally triggering a tapdance when I'm trying to type. I exclusively use tap-dancing on keys that I never hit twice, like Q, which I use for Escape on my Ferris layout, but don't use at all on Skeletyl as it has enough thumb keys for me to always have Escape there. As a Vim user it's pretty important for me to have Escape nearby as I use it almost all day.

Fundamentally speaking, that's it. To get used to the column stagger layout you see in the pictures above, I first used keybr.com. This is a typing tutor that has you type out sets of (mostly) nonsense words without looking at your keys; instead dedicating a region of the board to a single finger and getting used to typing without looking. For example, on a 5 column board, my index finger is responsible for columns 1 and 2, middle finger for 3, ring finger for 4, and little finger for 5. This allows me to keep my hands almost entirely still as my fingers can easily move the distances needed to get to rows 1, 2, and 3 without discomfort. On a Dactyl-style board like the Skeletyl, the shape of the case and the column stagger helps to compensate for the length of each finger even more than a standard flat PCB.

Once I have used keybr to learn the layout of the board, I can move onto monkeytype for practice typing real words and getting up to speed. In honesty, I don't care about my WPM - my slowness throughout my working day comes from the fact that I have to think, which takes time. As long as my typing isn't slowing me down, that's fast enough for me. At best I can type around 70WPM which is more than enough for me. Sites like monkeytype don't have you typing numbers or symbols anyway, so it's not exactly great training for a programmer - the only way I've found to do that is to force myself to use the boards for work, which tends to be a slow and frustrating process to get started. Then, as a Vim user, I'm more than used to that!

OlliOlli World I feel like I've ranted about this before but I searched and couldn't find it so maybe I just...