Home | Articles | CV (pdf | short)
<2009-02-02> by Lorenzo

qwerty vs dvorak vs colemak to edit Python code

Yesterday, I was intrigued by the idea of choosing a more efficient keyboard layout to work with everyday. As long as I type Python code 90% of my time, I decided to evaluate the efficiency of the first 3 most widespread keyboard layouts: QWERTY, Dvorak and Colemak. I used this excellent tool to compare the three layouts over the first 50000 characters of the webpy source code. Here are the results:

The Qwerty Keyboard Layout Vs The Dvorak Keyboard Layout

:: UP ::Overall effort

Layout Effort % improvement over worst layout
Qwerty 306,509.6 0.0 %
Dvorak 283,868.7 7.4 %
Colemak 275,347.6 10.2 %

:: UP ::Keys for each finger (stronger fingers should be used more often)

Layout Thumbs LPinky LRing LMiddle LIndex RIndex RMiddle RRing RPinky Total
Qwerty 25.9 % 12.4 % 5.3 % 9.5 % 11.6 % 7.6 % 5.6 % 8.9 % 13.2 % 54,237.0 keys
Dvorak 25.9 % 13.0 % 5.2 % 8.1 % 7.3 % 7.5 % 7.5 % 8.2 % 17.3 % 54,237.0 keys
Colemak 25.9 % 12.7 % 4.8 % 7.5 % 9.5 % 8.4 % 10.1 % 6.6 % 14.5 % 54,237.0 keys
Layout Thumbs Left hand Right hand Total
Qwerty 25.9 % 38.8 % 35.2 % 54,237.0 keys
Dvorak 25.9 % 33.6 % 40.5 % 54,237.0 keys
Colemak 25.9 % 34.5 % 39.6 % 54,237.0 keys

:: UP ::Finger Travel Distance (only the horizontal)

Layout Thumbs LPinky LRing LMiddle LIndex RIndex RMiddle RRing RPinky Total
Qwerty 0.0 % 18.1 % 2.0 % 10.5 % 15.5 % 12.1 % 8.6 % 9.9 % 23.4 % 1,441.5 m
Dvorak 0.0 % 21.1 % 4.1 % 3.5 % 10.0 % 12.5 % 7.6 % 10.8 % 30.4 % 1,210.3 m
Colemak 0.0 % 23.7 % 2.5 % 6.1 % 10.2 % 10.2 % 9.3 % 9.3 % 28.6 % 1,131.2 m
Layout Thumbs Left hand Right hand Total
Qwerty 0.0 % 46.0 % 54.0 % 1,441.5 m
Dvorak 0.0 % 38.8 % 61.2 % 1,210.3 m
Colemak 0.0 % 42.6 % 57.4 % 1,131.2 m

:: UP ::% home keys (out of all character keys plus SHIFT and ENTER, but excluding keys operated by thumbs)

Qwerty 20.4 %
Dvorak 33.7 %
Colemak 38.7 %

:: UP ::% keys typed with the same finger as the previous key (excluding repeating keys like ss)

Qwerty 4.5 %
Dvorak 3.8 %
Colemak 3.6 %

:: UP ::% keys typed with the same hand as the previous key (ex: in Qwerty sd or ss are included, but s s is not since you type the space with the other hand)

Qwerty 26.8 %
Dvorak 20.0 %
Colemak 24.6 %

:: UP ::% keys typed with the same hand as the previous key and jumping a row (ex: in Qwerty ev is a row jump -- you jump over the middle row -- and it's awkward to type; ef is not a row jump)

Qwerty 10.3 %
Dvorak 5.7 %
Colemak 4.1 %

:: UP ::% keys typed with the same hand as the previous key and in reverse order (ex: in Qwerty df or kj are typed in the easier order pinky-ring-middle-index, whereas fd and jk are in reverse order index-middle-ring-pinky, and harder to type)

Qwerty 15.4 %
Dvorak 11.9 %
Colemak 15.2 %

:: UP ::% keys that need the SHIFT modifier

Qwerty 14.3 %
Dvorak 14.3 %
Colemak 14.3 %

:: UP ::Pairs of consecutive keys typed with the same finger in Qwerty

:/NewLine/ 253 times 0.47 %
de 200 times 0.37 %
tr 158 times 0.29 %
rt 102 times 0.19 %
ol 99 times 0.18 %
un 98 times 0.18 %
q\_LeftShift\_ 87 times 0.16 %
ce 86 times 0.16 %
“/NewLine/ 81 times 0.15 %
ed 80 times 0.15 %
}/NewLine/ 62 times 0.11 %

:: UP ::Pairs of consecutive keys typed with the same finger in Dvorak

ct 196 times 0.36 %
s\_RightShift\_ 169 times 0.31 %
db 152 times 0.28 %
l\_RightShift\_ 137 times 0.25 %
‘/LeftShift/ 133 times 0.25 %
rn 115 times 0.21 %
ls 100 times 0.18 %
}/NewLine/ 62 times 0.11 %
=/RightShift/ 59 times 0.11 %
“/LeftShift/ 58 times 0.11 %
e. 58 times 0.11 %

:: UP ::Pairs of consecutive keys typed with the same finger in Colemak

:/NewLine/ 253 times 0.47 %
ue 237 times 0.44 %
db 152 times 0.28 %
e, 89 times 0.16 %
q\_LeftShift\_ 87 times 0.16 %
“/NewLine/ 81 times 0.15 %
}/NewLine/ 62 times 0.11 %
]/NewLine/ 46 times 0.08 %
pt 44 times 0.08 %
‘/RightShift/ 41 times 0.08 %
“/RightShift/ 41 times 0.08 %

:: UP ::Key frequency in your text

/Space/ 14067 times 25.94 %
/LeftShift/ 4391 times 8.10 %
e 3239 times 5.97 %
t 2184 times 4.03 %
s 2170 times 4.00 %
r 1890 times 3.48 %
a 1619 times 2.99 %
o 1557 times 2.87 %
l 1530 times 2.82 %
n 1519 times 2.80 %
/NewLine/ 1511 times 2.79 %
i 1372 times 2.53 %
/RightShift/ 1357 times 2.50 %
d 1014 times 1.87 %
f 971 times 1.79 %
c 855 times 1.58 %
u 851 times 1.57 %
m 716 times 1.32 %
p 715 times 1.32 %
( 674 times 1.24 %
) 673 times 1.24 %
. 658 times 1.21 %
623 times 1.15 %
, 573 times 1.06 %
b 571 times 1.05 %
563 times 1.04 %
\_ 554 times 1.02 %
= 518 times 0.96 %
: 490 times 0.90 %
q 463 times 0.85 %
y 423 times 0.78 %
h 416 times 0.77 %
w 352 times 0.65 %
> 348 times 0.64 %
g 304 times 0.56 %
v 257 times 0.47 %
x 253 times 0.47 %
k 231 times 0.43 %
< 154 times 0.28 %
/ 125 times 0.23 %
[] 119 times 0.22 %
; 113 times 0.21 %
0 86 times 0.16 %
` 85 times 0.16 %
+ 84 times 0.15 %
1 81 times 0.15 %
{ 80 times 0.15 %
} 79 times 0.15 %
- 78 times 0.14 %
j 76 times 0.14 %
* 72 times 0.13 %
# 69 times 0.13 %
2 67 times 0.12 %
% 55 times 0.10 %
$ 52 times 0.10 %
3 31 times 0.06 %
6 29 times 0.05 %
8 18 times 0.03 %
@ 17 times 0.03 %
14 times 0.03 %
z 13 times 0.02 %
5 13 times 0.02 %
4 8 times 0.01 %
? 8 times 0.01 %
9 7 times 0.01 %

:: UP ::Frequent pairs of keys in your text

\_Space\_\_Space\_ 9243 times 17.04 %
\_NewLine\_\_Space\_ 1233 times 2.27 %
\_Space\_\_LeftShift\_ 805 times 1.48 %
/LeftShift/( 674 times 1.24 %
/LeftShift/) 673 times 1.24 %
/LeftShift/” 563 times 1.04 %
\_LeftShift\_\_ 554 times 1.02 %
se 549 times 1.01 %
,/Space/ 543 times 1.00 %
/LeftShift/: 490 times 0.90 %
el 405 times 0.75 %
er 377 times 0.70 %
in 364 times 0.67 %
\_Space\_\_RightShift\_ 362 times 0.67 %
or 352 times 0.65 %
/LeftShift/> 348 times 0.64 %
/Space/i 344 times 0.63 %
/Space/s 341 times 0.63 %
te 340 times 0.63 %
e\_LeftShift\_ 338 times 0.62 %
=/Space/ 332 times 0.61 %
/Space/= 321 times 0.59 %
re 306 times 0.56 %
lf 294 times 0.54 %
)/NewLine/ 281 times 0.52 %
e\_Space\_ 281 times 0.52 %

Actually, I was disappointed: there seem to be no clear advantage of Dvorak or Colemak, wrt QWERTY and, given the popularity of the latter, switching does not seem to be a good idea…