Hacker Newsnew | comments | show | ask | jobs | submit login

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

[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



Nice! 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.

-----


So 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).

-----


The 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.

-----




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact

Search: