Qwickly: Keyboard Layout

The objectively qwickest keyboard layout

TL;DR I made the easiest to learn and type keyboard layout. See Github for files.

During this 2020 coronavirus lockdown and work-from-home policy we find ourselves with extra time and energy needing a creative outlet. I happened to find myself in a discussion about alternative keyboard layouts with co-workers in a Google Hangouts Meet. One person had been using Dvorak with great success on an ErgoDox arrangement with the drawback that they haven't maintained QWERTY skills requiring intentional focus and shortcuts in apps or editors are exceptionally troublesome.

The weekend following that chat, I found myself on a website Dvorak Keyboard Training that let you practice without any system changes. I played on it for maybe 1-2 hours and got up to 15 wpm using only the home row keys. With the full alphabet I was only at 5 wpm. This was very discouraging. On top of that I would have to relearn shortcuts to several editors I commonly use and applications as well as Linux command-line which is muscle memory all its own. I gave up on Dvorak and sought out another.

I semi-randomly suggested an arbitrarily made up layout and got some great feedback/critiques of it on reddit/r/KeyboardLayouts. This put common letters on the home row and other keys close to original positions but wasn't particularly easy to learn nor optimized in any specific way.

Colemak is the alternative keyboard layout that tops current popularity and speed tests so I looked into it. It also offers to preserve some QWERTY shortcut key positions. "Only 2 keys move between hands. Many common shortcuts (including Ctrl+Z/X/C/V) remain the same." Other letters/shortcuts preserved are Q/W/A. Letters H/B/M also stay the same but are not common shortcut keys.

Tarmak are transitional layouts for learning Colemak in stages. There are 5 stages with the final stage being the Colemak layout itself. I had one look at the stages where each moves 3 (or 4) letters at a time into the Colemak positions. Some letters are put into temporary positions to be moved again in a later stage. In all 16 keys move including most of the frequently occurring ones. The learning curve did not seem much easier than Dvorak and only preserves a handful of shortcut key positions and the keys that move, move quite a distance so that it's not necessarily an easy adjustment.

I began to think, what if I don't care about absolute speed and give more consideration to ease of learning and shortcuts not moving as far or at all. I looked at the English letter frequency chart...a lot. My Aha! moment was preserving the finger actuation sequences for the most frequent letters. So step 1 is switching each of the top 8 most frequently occurring letters (ETARIONS) that are not on the home row positions with the key above/below that is on the home row.

Q W E R T Y U I O P [ ] \ A S D F G H J K L ; ' ⏎ ⇧ Z X C V B N M , . / ⇧

Original QWERTY layout

Q W (D) R (F) Y U (K)(L)(;) [ ] \ A S (E)(T) G H (N)(I)(O)(P) ' ⏎ ⇧ Z X C V B (J) M , . / ⇧

Step 1: move frequently occurring letters into home positions

This actually worked out very nicely with only R (being beat out by T) not having a home place yet. P is not one of these highest frequency letters but occurs more than semi/colon so swap them too. We can clearly see that we 'vertically swapped' 6 pairs of keys keeping them on the same original fingers and only swapping the rows they're on.

I created this layout using Ukelele software by SIL for macOS. After using this for even less than an hour it was clearly on the right path as I was typing at about 15 wpm for the full alphabet using the same Learn Dvorak practice site. It was already superior to QWERTY as most times I missed a key my finger was already on the key I moved it away from and when not missing keys my fingers moved much less.

Having started down this road we now want to place the letter R that we didn't move in the first step. Since the R is moving from the left to right hand a letter from the right hand will also have to move to the left. After various trials generated from looking at the letter frequencies again and testing on SteveP99's keyboard analyzer, decided to move the letter U.

Q W <U>[D](F) Y [P](K)(L)(;) [ ] \ A S (E)(T) G H (N)(I)(O)<R> ' ⏎ ⇧ Z X C V B (J) M , . / ⇧

same as QWERTY ( ) same finger as QWERTY [ ] same hand as QWERTY < > different hand than QWERTY

At the same time the letter D was shifted over after having noticed two things: 1) bigrams DE and ED occur fairly often and typing them with the same finger is slower 2) having preserved muscle memory of the home row keys, typing DE or ED with the same finger as on QWERTY had an 'upside-down' awkwardness that was hard to shake off and slowing down typing and learning. This was also noticed with LO/OL.

I created this layout and used it for about a day and a half. It was surprisingly not frustrating to use, as each time I missed a key it was usually close by and quick to correct. I never felt the need to temporarily switch to QWERTY the whole time. Even stopping here seemed like a huge improvement over QWERTY.

Of course we want to follow this process to its logical conclusion. What other changes can be made to improve typing efficiency while keeping the main layout? I tried many small changes and examined the output from the keyboard analyzer and studied a bigram frequency matrix to look for sparse columns and rows, and which pair combos to avoid.

Q W <U>[D](F) K [L][P][Y](;) [ ] \ A S (E)(T) G H (N)(I)(O)<R> ' ⏎ ⇧ Z X C V <J> <B> M , . / ⇧

A fully optimized layout and its benchmark comparisons.

              Colemak  Qwickly   S.Dvorak   Asset   Minimak-12

   Alice       66.61    67.13*    63.71     64.29     62.45
   Common      73.94*   72.62     66.82     66.53     65.58
   S.A.T.      73.11*   71.36     64.26     65.52     63.21
   Magna       68.09    68.64*    65.08     64.27     62.41
   1984        67.47    67.80*    65.25     64.44     62.04
   Tarzan      68.38    68.70*    65.43     64.22     62.07
   Jungle      63.98    64.71*    61.22     61.24     57.55
   Difficult   67.97    68.14*    63.82     61.63     60.34
   Medical     72.76*   69.55     61.49     58.50     60.74
   Quotes      54.50*   53.66     46.74     51.61     49.92
   Tao         61.61*   60.25     58.68     58.37     56.35
   Bigrams     72.68*   72.26     68.24     70.18     69.10
   Cost        58.11    58.60*    50.78     54.84     52.93
   Contract    57.38*   54.39     47.38     52.70     49.73
   Binary      59.05*   57.67     54.23     52.70     51.51
   Lorem       57.06    57.32*    51.61     54.55     48.29
   Game        38.86    40.10*    35.35     36.04     34.56

* = best score

At first I was shocked and delighted at how well this turned out. I did not intend this to be close to Colemak--being about as good or better than Dvorak was my original target. Even though Qwickly (oh yeah, I gave it a name) scored higher than Colemak 9 to 8, Colemak has a bigger margin on several tests including Common and S.A.T. words which I take as important references.

I used this layout for maybe three days or so. I started to get suspicious that it was over-optimized falling into the trap of other layouts. I also followed up on other comments in the subreddit and found that an existing layout 'Niro' was very similar in goals, layout, and efficiency.

One thing that was learned while trying different permutations was that moving a key two fingers away rather than one was easier to learn in particular with the pinky and ring fingers. This is how the L/P/Y got sorted along with taking occurrence and bigram frequencies into account.

The K/J/B shuffle was the result of having made everything else smooth and close, the now relatively frequent reaching for B became very apparent. Switching hands for the letters J/B turned out to be hard to learn which speaks well for all the letters that didn't switch hands.

Q W <U> [D] (F) [K] [L] [P] [Y] (;) [ ] \ A S (E) (T) G H (N) (I) (O) <R> ' ⏎ ⇧ Z X C V <J> <B> M , . / ⇧

Qwickly - fully optimized for ease of learning and ergonomics

              Colemak  Qwickly   S.Dvorak   Asset   Minimak-12

   Alice       67.31    68.64*    63.71     64.29     62.45
   Common      74.50*   73.00     66.82     66.53     65.58
   S.A.T.      73.11*   70.52     64.26     65.52     63.21
   Magna       69.29    70.28*    65.08     64.27     62.41
   1984        69.30    69.74*    65.25     64.44     62.04
   Tarzan      69.73    70.57*    65.43     64.22     62.07
   Jungle      65.57    66.09*    61.22     61.24     57.55
   Difficult   67.30    67.68*    63.82     61.63     60.34
   Medical     72.08*   69.56     61.49     58.50     60.74
   Quotes      56.54    57.06*    46.74     51.61     49.92
   Tao         61.44*   60.85     58.68     58.37     56.35
   Bigrams     77.43*   77.05     68.24     70.18     69.10
   Cost        60.69    62.04*    50.78     54.84     52.93
   Contract    60.17*   56.67     47.38     52.70     49.73
   Binary      61.05*   60.84     54.23     52.70     51.51
   Lorem       57.89    59.87*    51.61     54.55     48.29
   Game        43.99    45.57*    35.35     36.04     34.56
   * = best score

Performance/efficiency is close enough to the best to not matter to anyone but the most speed sensitive typists. For the goals of ease of learning and ergonomics the design is true.

In retrospect if a layout isn't preserving the home row finger actuation sequence ASET-GH-NIO then it's sacrificing ease of learning. If it doesn't have some permutation of ASET-NIOR in the home positions it's sacrificing efficiency. Moving infrequent keys for performance is an over-optimization.

As a datapoint, I have been typing on Qwickly for 2 weeks and already faster typing prose (50-60 wpm) than I was on QWERTY. I put in daily practice on keyhero.com and thepracticetest.com (shows slow/error letters). The comparison isn't really fair as I didn't touch-type before but the short time to get to this level stands. I still make many typos so that wpm should keep going up and soon occasionally bump a limit of thoughts not feeding fingers fast enough. Coding and especially command-line usage is still slower and will take more time.

This is the fully optimized layout that I have settled on using:

Q W U D P Z H Y L , [ ] \ A S E T G F N I R O ' ⏎ ⇧ K X C V J B M ; . / ⇧

Installable layouts for macOS and Windows available on Github including the QwickSteps transitional layouts to learn from Qwerty.

Last updated