I'm conducting personal research in the hope to improve the standard keyboard layout without breaking everything. I don't want to start from scratch and produce yet another Dvorak or Colemak.
I'm looking for small changes that could bring in significant gains.
It's possible I have accidentally discovered (or just re-discovered) a significant improvement for the QWERTY layout. It's an accident because I have found this while trying to improve the AZERTY layout, which is the one I use all the time.
I'm pretty sure this is already known and maybe it's even widely used, but I have not found much about it on the web, and I have not found any option for it either in the very rich keyboard options of X (the windowing system of Linux and other systems).
Naturally I apologize if what I'm going to describe is old news. I'm pretty sure it is. However, I thought it would be nice to share just in case...
Here is the trick, which I call
"the QwertFLIP layout":
On a standard QWERTY keyboard, use some lock key (maybe CapsLock or ScrollLock)
to switch to a mode where all digits produce the associated symbol, not the digit.
The digits will be typed by pressing them together with the Shift key.
For example, 1 does an exclamation mark. 9 and 0 allow you to type the parenthesis directly.
This only applies to the digit keys located above the alphabetical cluster. No other key is affected.
Maybe it sounds too simple/weird/whatever, but I believe this is a significant improvement for most if not all QWERTY users.
I have found this out by using statistic gathered on a very long text. This text is actually a C source code, approximately 1MB in size. This C code is a project I have been working on for decades, and I was curious to find out if it would have been significantly easier to type all of this code with an optimized layout, and to get some metrics on how much easier it would have been.
The fact that it is C code should not stop you from reading on and maybe trying the idea. Even if you are typing plain English all day long, the layout can be an improvement for you. Think about it: you don't need Shift anymore to type parenthesis or the exclamation mark for example.
To find out if QwertFLIP can be any good, I have collected statistics by extracting the frequencies of all the characters in said source code.
After that, I have been able to measure the differences with the standard layout by computing two metrics:
- How long does it take to type the code with a given layout? (less is better)
- How bad is Shift disrupting your typing? In other words, how many characters can you type at full speed before you have to use Shift? (more is better)
I have computed the above for 5 QWERTY layouts:
- An imaginary layout with so many keys that there is no need to press Shift, ever
- A full-size QWERTY keyboard
- A TenKeyLess QWERTY keyboard
- A full-size QwertFLIP keyboard
- A TenKeyLess QwertFLIP keyboard
Here are the results:
Imaginary layout on which you never have to press Shift (perfect keyboard):- Time to type the code: this layout is the reference, so the time is 100% (let's say it's an hour or a day, it does not matter).
- Number of characters you can type on average before you need to press Shift: infinite! By definition, you never have to press Shift on this keyboard.
Full-size QWERTY keyboard:- Time to type the code:
7.4% longer than with the "perfect" keyboard.
- Number of characters you can type on average before you need to press Shift:
13.5TenKeyLess QWERTY keyboard:- Time to type the code:
9.0% longer than with the "perfect" keyboard.
- Number of characters you can type on average before you need to press Shift:
11.1Full-size QwertFLIP keyboard:- Time to type the code:
3.5% longer than with the "perfect" keyboard.
- Number of characters you can type on average before you need to press Shift:
28.9 (!)
TenKeyLess QwertFLIP keyboard:- Time to type the code:
5.8% longer than with the "perfect" keyboard.
- Number of characters you can type on average before you need to press Shift:
17.4These statistics are a little bit lousy. I should improve them, but anyway, I believe that it is easy to achieve a higher WPM with the QwertFLIP layout.
The numbers are extremely favorable to the Full-size QwertFLIP layout, because the digits can be typed on the numeric keypad without using Shift. When you think about it, it's obvious: a full-size keyboard has duplicate keys for every digit. These keys could have been better used for symbols, and that's what QwertFLIP does.
WPM is maybe not a crucial metric for some: when you type code for example, you spend a lot of time thinking anyway. Typing faster is not going to make a significant difference. But in this case, what I call the "Shift disruption factor" may be important for you. When you are focusing on writing code, or anything that requires a serious intellectual effort, anything that distracts you is a pain. Having to use Shift just to type parenthesis, a star, or an exclamation mark, increasing the risk of making a typo, may be just this kind of disruption: for me, it is.
After all, if being distracted by the keyboard was inconsequential, we would not be on Geekhack.

Finally, for the curious, a word on how QWERTY and AZERTY compare in my stats:
I know you are not going to believe it, but AZERTY (french) is actually more efficient than QWERTY for typing C source code when using a full-size keyboard. I have been very surprised by this result: at least twice over the years I have planned to switch to QWERTY just to be more efficient when typing code, but it would have been a mistake!
When using a TKL, they are very close.
However, QwertFLIP vindicates QWERTY: it is as efficient as AZERTY on a full-size keyboard, and significantly more efficient on a TKL!