Evaluating keyboard layouts for ErgoDox EZ
When you buy a keyboard that costs almost 400€, you probably ̶i̶n̶s̶a̶n̶e̶ ̶ want to use it 100%. Initially I planned to configure the peripheral buttons only. But since with a non-standard keyboard you have to learn how to type again, I thought “why not learn a new layout?”
The only Dvorak came to mind. After a short investigation it’s turned out that Dvorak is not much better than Qwerty. And some people aren’t particularly keen on Colemak.
For that reason people have created quite a few different layouts. In addition to well known Dvorak and Colemak we have:
- Workman.
- Carpalx.
- Capewell.
- Norman.
- and many others. In my research I’ve found around 25 different designs.
As it usual happens, a great variety slows down and complicates a selection process. To make an informed choice, I decided to create a tool that will help me with this.
Why create another tool?
There are many tools and methodologies out there already that evaluate keyboard layouts. But they all have the one fatal flaw: they are based on a standard keyboard.
Most standard keyboards are shifted: upper rows slightly moved left relatively lower rows. What is completely reasonable for the right hand, but not for the left. The only explanations, that I can find for why do we have the same shift for the left hand, is reactionism, and is that manufacturers want to save money on production.
ErgoDox keyboard is very different. Except for the extra thumb keys, it’s slightly bigger than a typical laptop keyboard, and all buttons are placed strictly vertical. On a regular keyboard for example, you don’t have to tilt your wrist when you press the button N because of the shifting. On the other hand, in the literal and figurative sense, the button B is more reachable now on ErgoDox.
On a regular keyboard it’s much easier to use pinky fingers on the top row. On my laptop I can reach P and Q without any efforts, but on ErgoDox it’s not really comfortable. Maybe this is because of “bad habits” or the adaptation period, but I just don’t see how should I place my hands to fully enable pinkies on ErgoDox.
Estimation method
What I find important:
- Support for modern English only.
For this, I used technical literature containing about 40 MB of pure text to make comparisons. Statistics that I’ve collected is slightly differs from that you can get using “Alice’s Adventures in Wonderland” or “Moby Dick or The Whale”. This is fine for me, because I deal with technical texts more often. - Alternate hands less.
Colemak is often criticized for the fact that T and H keys are placed on the different sides of a keyboard. It breaks the rhythm of the typing. This and the fact that the one of the most used vowels, A and O, are intended for pinkies, turned me away from using Colemak. For the same reason it’s not wise to place all vowels on the same side, like Dvorak does. - The keys of the most commonly used digraphs should be placed close to each other.
For example, E and R letters create the most used combination in English. Even Qwerty has it, but many popular layouts (Workman, Norman, Colemak, etc.) ignore this for a reason that I can not explain. - Type continuously with one finger less.
It is not enough to simply place keys for digraphs close to each other. It’s slower to type when paired letters are placed vertically, because a finger need to travel some distance to reach a next position. Much comfortable and faster to press the next key with another finger. For that reason, it’s a big loss for Workman and Dvorak to put O and E in the same row next to each other, this combination is used very rarely. So, much wiser to have them separately to be able to place consonants in between. - Minimize usage of pinkies.
The little finger is already overused when pressingShift
andCtrl
buttons. For the weakest finger it's too big load. - The usage of hands should be balanced.
It’s hard to say which balance is the best. It sounds logical that the load on hands should be equal. But from other point of view, the left hand is used more often because we use a mouse with the right hand and place the most of shortcuts on the left side. To not over-complicate, I decide stick to balanced option. - Punctuation marks do not have to be in the standard positions.
Since they are completely legitimate elements of a text, we can benefit from placing them on a better positions. Dot is used more often than a half of letters. Why keep it on an awkward button? - Shortcuts are not really important.
Since we use ErgoDox we can configure extra layers and have almost any shortcut anywhere. The authors of many layouts deliberately left the Z, X, C, V buttons in place to preserve the familiar experience. It makes sense for regular keyboards, and I would care about it if I didn’t have ErgoDox.
I thought initially.
The biggest problem with that is when you have to switch to another language, all shortcuts are moved to the original places and you have to remember two sets of shortcuts. This is really annoying. But if you type in one language only this is still relevant to you. - Estimation is based on an “effort” that you have to apply when you press a key and a distance between two taps. This distance factor helps keep most commonly used pairs close to each other.
Having all this requirements I started this project. In addition, I planned to try F#, and scope of this challenge was perfect for this. Why do I think that this estimation method is applicable? Because the results that it gives correlates with other estimations. Qwerty is bad, MTGAP is good as expected.
ErgoDox is such a keyboard for which you first need to learn a functional programming language with static typing, and then create a utility to find the most optimal configuration for you. Joke. A functional language with dynamic typing is also suitable.
Results
Here is the summary tables:
Columns description:
- Result — the accumulative score for the layout (less is better).
- Hand switch — how often you have to alternate hands during a typing.
- Efforts — summary effort of tapping keys.
- Distance — summary distance between keys during a typing.
- Same finger — how often you have to use the same finger.
- Left hand — how often you have to use fingers on the left hand.
- Right hand — how often you have to use fingers on the right hand.
- Left hand continuous — how long you use the left hand without switching to the right.
- Right hand continuous — how long you use the right hand without switching to the left.
- Outward rolls — how often you fingers moves up.
- Inward rolls — how often you fingers moves a lower row.
Links to all complementary files:
- All layouts results.
- Summary table.
- Configuring Excel file that was used to do evaluations and the design.
- Statistics of sampling texts.
Own custom layout
In the process of creating the evaluative method it became clear that none of the existing keyboards would fit it 100%. And even the first timid attempt to create a layout gave good results. I was inspired and spent a lot of time trying different options, but I could not be satisfied with the results.
I realized the one important thing: there is no perfect layout for keyboard. Everything very depends on the estimation method, used keyboard, sampling texts, and personal preferences of an author. It will always be a compromise. It all depends on what you think is important. Almost every attempt based on statistics and common sense will provide better result than Qwerty and Dvorak. The time, that you spend on configuring it and learning how to type, most probably will not pay off.
But I could not drop this idea and thus I started another project in which, using a genetic algorithm, I tried to find the optimal layout. This time I decided to use Rust. It was an interesting experience. But more on that another time.
Summary
So, as you can see, that Dvorak, which is the most popular alternative to Qwerty, is actually the worst you can choose. Tnwmlc is not counted because it was artificially designed to be bad.
If you need a good layout I recommend to look at:
- Capewell is good balanced keyboards that are produced using genetic algorithm.
- Colemak not really bad if you switch D and H keys. It’s much better alternative than Dvorak. And is quite popular and has good support.
- If you are not happy with Colemak you can look at Norman or Workman. Very worthy options.
Originally published at https://sgaliamov.github.io on February 7, 2021.