8 ms·
A while ago I wrote a small program[0], that measures effort to type a passage with different keyboard layouts. It accounts for reach and alternation. I just a
by jcoder 14y ago
A while ago I wrote a small program[0], that measures effort to type a passage with different keyboard layouts.
It accounts for reach and alternation. I just added Colemak in response to this discussion, and from the texts I include in the distribution (some public domain from archive.org), it looks like Colemak is better on reach, Dvorak is better on alternation, and they both spank QWERTY for substantive texts[1].
It's just a quick experiment, I'd love to hear input on methodology.
[0] https://github.com/bak/keyboard_battle https://github.com/bak/keyboard_battle
[1]
texts/alice_underground.txt:
colemak:
alternation_effort: 29962
reach_effort: 29403
raw_score: 59365
dvorak:
alternation_effort: 24476
reach_effort: 30312
raw_score: 54788
qwerty:
alternation_effort: 32118
reach_effort: 51842
raw_score: 83960
texts/declaration_of_independence.txt:
colemak:
alternation_effort: 2725
reach_effort: 2469
raw_score: 5194
dvorak:
alternation_effort: 2237
reach_effort: 2693
raw_score: 4930
qwerty:
alternation_effort: 3049
reach_effort: 5129
raw_score: 8178
texts/gullivers.txt:
colemak:
alternation_effort: 100074
reach_effort: 97327
raw_score: 197401
dvorak:
alternation_effort: 81836
reach_effort: 103371
raw_score: 185207
qwerty:
alternation_effort: 110812
reach_effort: 181778
raw_score: 292590
texts/qbf.txt ("the quick brown fox..."):
colemak:
alternation_effort: 9
reach_effort: 22
raw_score: 31
dvorak:
alternation_effort: 13
reach_effort: 21
raw_score: 34
qwerty:
alternation_effort: 11
reach_effort: 30
raw_score: 41
- SkyMarshal 14y agoNice! I was curious how it looks for actual code, so I added a few random code examples (HTML5 Boilerplate index.html, JQuery grunt.js) and reran it: texts/index.html: colemak: alternation_effort: 799 reach_effort: 1100 raw_score: 1899 dvorak: alternation_effort: 695 reach_effort: 1166 raw_score: 1861 qwerty: alternation_effort: 779 reach_effort: 1490 raw_score: 2269 texts/grunt.js: colemak: alternation_effort: 4243 reach_effort: 5588 raw_score: 9831 dvorak: alternation_effort: 3510 reach_effort: 6226 raw_score: 9736 qwerty: alternation_effort: 4577 reach_effort: 7373 raw_score: 11950 Sent you a pull request with the minor changes, in case you're interested.
- andreasvc 14y agoSo is it "lower is better" for all scores? In the raw_score a combination of the two previous scores? By that measure, dvorak is better on all nontrivial texts (so excluding the quick brown fox).
- jcoder 14y agoThe scores are a measure of effort. For reach, it accumulates the effort of reaching away from the home row. For alternation, it accumulates subsequent keystrokes with the same hand. Raw is the sum of both. So yes, lower numbers are better, however I do not have the research to be able to say that a lower raw number is always better. It's entirely possible that alternation matters much, much more than reach---or vice versa---such that a truly meaningful "aggregate score" would involve a multiplier instead of just summing the two. The best we can say is that, assuming less reach and more alternation are good, Colemak is better on reach, and Dvorak is better on alternation.