The EzWork Layout
The QWERTY layout was optimized for mechanical typewriters. The goal was to slow down the user and make it hard for them to jam the mechanical keys.
For a computer keyboard in 2024, this is hardly the right optimization. 😂
The EzWork layout follows a different approach: it is optimized for programming, having the most frequently used keys on the home row, and minimizing finger contortions and far reaches.
This layout was developed on the Ergodox EZ, ZSA Moonlander, and Voyager keyboards, which have some awesome features.
The effort of customizing the keyboard layout started out small, focusing on the layout of the symbol, number, and navigation layers, as well as placing all modifier keys on the home row.
Placing modifier keys on the home row significantly decreases strain on the pinkies. Home-row modifiers are also available for those committed to the QWERTY layout, in these layouts for MoonLander, Ergodox EZ, and Voyager.
But now let’s look at how we can improve the QWERTY layout.
Considerations
In brief, here are some of the considerations which went into the layout:
- The Home Row rules!
This layout is all about the home row! Having the most frequently used keys right under your fingertips minimizes finger travel, and speeds up your typing.
This principle was also applied to the all-important modifier keys! - Easy-to-reach Keys
Resting your fingers on the home row, which keys are hard or almost impossible to reach? How hard is it to get back to the home row?
The pinky fingers have a disproportionate burden on a QWERTY keyboard. It is easy for them to move down a row, but not up, diagonal or stretch too far (ESC).
The EzWork layout started after having a look at the penalties for each key, and focusing on using only the keys with low penalties. Low numbers mean more comfort for your hands.
- Letter & Symbol Frequency
A lot of keyboard layouts consider only letter frequency, but not symbols, or other keys like space, shift, ctrl, enter, tab, escape, …
Analysis of a large corpus of source code allowed for some unexpected insights (see last section). - Bigrams, Trigrams & Most Frequent Words
The most frequent English words, two- and three-letter combinations were also taken into account. - Programmable, Layered Keyboard
Having multiple layers on a keyboard allows us to move some of the frequently used symbols for programming to separate layers, while still keeping them on the easy-to-reach keys. - Making use of Thumb Clusters
Keyboards with thumb clusters allow us to place some of the frequently used keys in easy reach of the thumbs. Let’s not forget about the backspace character, which never shows up in frequency stats. We all make typos.
EzWork Layout
Simple approach: the most frequent letters were distributed to the keys with the lowest penalties.
- The most frequent letters are on the home row.
- “Z”, “X”, “J” are rarely used, so they move to less prominent positions.
- The letter “Q” is in the extension of the home row (no diagonal stretch).
- Modifier Keys:
Shift, Control, and switching to other layers are also on the home row.
No more stretching your pinkies! When you hold down one of the blue keys, they act as modifier keys, e.g. hold “A” or “I” to act as a SHIFT key. Hold “H” or “E” to act as a CTRL key.
This valuable idea can of course be also applied to a QWERTY layout! - Space, Enter, Backspace, Tab are all on easy-to-reach thumb cluster keys.
Keyboard Layers
Main Layer
Switching to another layer of the keyboard happens when holding down the associated key (here depicted in blue).
Cursor Movements
Changing desktops on OSX: hold down “H” and “T” and use left/right arrows.
Expose: hold down “H” and “T” and use up/down arrows.
Symbols
Numbers and Function Keys
Downloads
If you find this useful, you can download the layouts here:
- Ergodox Moonlander EzWork layout
- Ergodox EZ EzWork layout
Layout Analysis
Unfortunately the existing tools for keyboard analysis don’t take the special features of the Ergodox keyboards into account; in particular using regular keys to double as modifier keys. Still, the EzWork layout tops the comparison. The actual numbers should be higher because of the modifier keys on the home row.
Check out the Heat Map below (most frequently used keys are in red)
Appendix
Analysis of a large source code corpus showed some interesting results for the character frequencies. Of course the backspace and delete keys are not included in this list — they don’t show up in the final output.
{
117538048 => " ",
35172657 => "E",
32109146 => "-",
31375748 => "0",
28370659 => "T",
28256239 => "I",
25111152 => "O",
24803288 => "N",
24426430 => "A",
21525114 => "S",
21338691 => "2",
21230054 => "R",
21036557 => ":",
16766358 => "1",
16020651 => "C",
15027798 => "D",
13681626 => "L",
13027455 => "*",
11563959 => "U",
10947529 => "G",
10465554 => "\n",
9736582 => "F",
9721853 => "5",
9676624 => "3",
9389218 => "4",
9192638 => "9",
8868942 => "P",
8766313 => ",",
8507458 => ".",
7674782 => "8",
7501303 => "6",
7119299 => "7",
6580445 => "M",
6286279 => "_",
5945228 => "#",
5936609 => "H",
5366084 => "[",
5359895 => "]",
5178526 => "Y",
4685112 => "B",
3037848 => "\"",
2842619 => "=",
2731269 => "K",
2694615 => "/",
2641164 => "V",
2135037 => "W",
1987095 => "'",
1892198 => ">",
1617145 => ")",
1616366 => "(",
1459474 => "J",
1246436 => "X",
1156566 => "Q",
1042991 => "!",
950844 => "}",
949131 => "{",
699445 => "@",
617899 => "&",
580906 => "Z",
461662 => "`",
418274 => "?",
373183 => "\t",
338905 => "%",
285596 => "<",
200268 => "|",
154194 => "+",
73497 => "\\",
45461 => ";",
20194 => "~",
19275 => "$",
11304 => "^",
8408 => "\r"
}
Space and dash are the most frequent symbols, followed by colon and asterisk! And the letter frequencies also came out to be not the same as in English texts. Interesting!
Now compare this to the most frequent letters in the English language.
We are not writing prose, but source code. This was taken into consideration when designing the EzWwork keyboard layout.
Most frequent special characters for some of the most frequent programming languages: