Let’s talk about the keymap for my hand-made keyboard.
Design constraints
Designing a keyboard is always a tradeoff between several constraints. Mine were:
- Affordability: 100€ or cheaper
- Portability: a lot smaller than a 14″ laptop (it ended up measuring 11″x5″ or 27x13cm²)
- Being able to build it myself with tools I already have (hand tools)
- Accessibility: making the transition from regular keyboards as easy as possible
- Longterm viability: should be useful for years to come. It shouldn be less effort to type on.
- Accuracy: making way less errors when typing
48 keys
My design (and also the keymap) is heavily influenced by the brilliant design of the Atreus. It is
- ergonomic
- with staggered columns
- split design where the columns for left and right hand are placed at an angle
- wooden case
- small and portable
- cheap (relatively)
- few enough keys to memorize quickly (in order to learn touch typing)
Regarding the number of keys I made a few but important adjustments:
- 48 instead of 42 keys. This sounds like negligible but isn’t, when you consider that the german alphabet has four more letters than the english one (äöüß)
- proper thumb clusters (adjusted to my big hands)
- one more column for each hand
48 keys is due to my first three constraints. A keyboard with only 48 keys is cheaper and smaller than a regular one and less work to build. I thought about making it even smaller, but that conflicts with the other two constraints.
I knew I had to move some keys, but did not want to move all of them at once. So my keymap keeps the control keys in the leftmost column (while getting rid of caps-lock) as well as placing some of the german letters (äöü) in the rightmost columns.
3 (+1) keys per column
To tackle the accuracy problem I combined two things:
- columnar layout. When reaching upwards or downwards the keys are located directly above or below the home position and not moved to the side as with standard keyboards (row stagger). This improves accuracy drastically. The staggered columnar layout is also so much better ergonomically, because all fingers can stay relaxed and in a natural position without sacrificing accuracy.
- three keys per column. My impression on a regular keyboard was that I made more errors the farther my fingers traveled from the home row. Less finger movement means less errors. Reaching for a neighboring key is ok, reaching even farther should be the exception (this is IMO especially true for standard (row-staggered) keyboards).
Three keys for each of the twelve columns, plus six for the thumb clusters would take me to 42 keys. But I needed the additional keys and had to place them somewhere. So some columns had to have one more key, but I at least made sure there were no keys in neighboring columns.
I used two of them in key positions (haha) like Escape and Backspace. The others I was a little unsure about at first, but I wanted them to be keys I use a lot. I tried Slash („/“) for shell commands on the right index finger. And after a few days found that F5 was the right thing for the left hand.
This works extremely well. Not only does it reduce the error rate, it is the right setup for me. The more I use the layout, the more I love it. I haven’t changed a key position in four years. (Until recently, when I switched to Colemak. More on this later.)
Three thumb keys
Like every finger, each thumb is very well capable of operating three keys. Standard layout users have never really learned to do so. But that is, like many other things about QWERTY, a waste of potential. Having the thumb switch layers, allows the other fingers to have even more keys in home position.
However, there is a cost associated with layer switching. And that cost varies based on the context.
Layer switching: Thumb-home vs. Neighbor
The thumbs also have a home „row“ (home column to be precise), this is the middle key. Maybe you already noticed that slight asymmetry in my keymap: the Nav-layer is activated by the respective thumb’s home key, whereas the Sym-layer is not.
This is deliberate. A layer switch is faster and easier to do from a home-key. At the same time there are also useful keys I want to use directly. So I made the tradeoff to use Blank as the left thumb-home and the Nav-layer as the right, because I use it most often.
Two-hand vs. One-hand combos
I call one-hand combos when I switch the layer with the same hand I press the key on the respective layer.
Conversely, I call two hand combos when I switch layers with one hand and press the key on the layer with the other. In my case this would be accessing the num block (r+l) or the function keys (l+r).
Cost of layer switching
The cost of a layer switch varies in both dimensions. However, neighbor vs. thumb-home incurs less cost than two-hand vs. one-hand switching. This results in the following list (from easy to hard):
- thumb-home + one-hand: cursor/navigation keys
- neighbor + one-hand: symbols (braces, etc.)
- thumb-home + two-hand: function keys
- neighbor + two-hand: numbers
The first one is extremely easy to get used to and to do. It’s akin to the „Ctrl+S“ shortcut, that most of us have embedded into their spinal cord. I no longer realize I do the thumb motion. Additionally this incurs minimal cost to the following key presses because the fingers never leave the home-row.
The last one is easier than say Alt+F4 on a regular keyboard. This is because Alt+F4 forces us to leave home row and my setup completely avoids that. With the caveat that two-hand switching requires more practice.
Side-Note: I also made a compromise here. The numbers are harder to reach than the function keys, even though I use them more often. This is a concession to accessability because I wanted to continue using the num-pad with the right hand. But one could easily adapt that.
Conclusion
Note that not only has every column (mostly) three keys, there are also three layers in total. This is IMHO a huge sweet spot. One might even argue that this is how our brains work and that there might be a connection to the rule of three and the rule ot thirds.
I am extremely happy with the design choices I made and hope others find this useful as well.
Colemak
After four years of (touch-)typing on my keyboard in QWERTZ, I decided to switch to a more efficient layout for the base layer. Colemak it was, with slight variations.
Variations:
- For the german language, I switched the „Z“ and „Y“ keys (analogous to QWERTZ), because Z is more frequent in german (Z=1.22%, Y=0.13% vs. english: Z=0.11%, Y=1.72%) and also allows the bigram „zu“.
- I moved Backspace to the home-row to reduce hand motion here as well
Pros:
- proven layout
- efficient for both german and english
- makes switching from QWERTZ relatively easy
Q&A
- Don’t you lock yourself out of other people’s computers?
-> Yes, I do. But I did that already when switching to my new keyboard. Column stagger and moving the control and enter keys, renderd regular keyboards unusable years ago. So Colemak does not worsen anything. Besides: because my keyboard is programmable via QMK, I can just plug it into other people’s computers and be good to go (portability, see?).
Update
Three weeks into Colemak and lovin‘ it. Managed to reach almost 30WPM (German 1k). But I realized that I share SteveP99’s preference of the curl technique and thus switched to Colemak-DH. It’s more comfortable and less effort for german confirmed by a few analyzers. So I’m down to 22-24 WPH, oh well…
I decided to keep the Z-Y switch even though it exacerbates the right hand’s load (to between 52-56%).
A full year of Colemak
Cons:
- Learning Colemak is kind of a drag. I am now at between 45 and 50 WPM consistently. Which is enough to not feel awkwardly slow.
- I did this without training and just using Colemak exclusively all day long
- Three decades of QWERTZ just die hard. Others have shown a lot higher learning rates.
Pros:
- Colemak is much more satisfying to use (because it does not feel awkward). It is like the differenc between rubber dome and mechanical keyboards. It’s only when you go back that you realize how much better it feels.