Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Keyboard Battle compares the performance of keyboard layouts according to reach effort and alternation effort.

branch: master

Fetching latest commit…


Cannot retrieve the latest commit at this time

Octocat-spinner-32 bin
Octocat-spinner-32 lib
Octocat-spinner-32 spec
Octocat-spinner-32 texts
Octocat-spinner-32 CHANGES
Octocat-spinner-32 Gemfile
Octocat-spinner-32 Gemfile.lock
Octocat-spinner-32 LICENSE
Octocat-spinner-32 Rakefile
Octocat-spinner-32 keyboard_battle-0.0.5.gem
Octocat-spinner-32 keyboard_battle.gemspec


KeyboardBattle is a simple program that compares the performance of keyboard layouts according to two metrics, reach effort (travel from the home row being increasingly effortful) and alternation effort (typing consecutive keys with a single hand being more effortful). For both, a lower value means less effort.

The program comes with the QWERTY, Dvorak, and Colemak layouts. The format for a keyboard layout description file can be discerned from lib/keyboard_battle/keyboards.rb.


$ gem install keyboard_battle


E.g., keyboard_battle my_text.txt, or try keyboard_battle --bundled to use some texts from The Internet Archive.

Limitations and shortcomings

Only ASCII characters will be counted (though any character may appear in the source text).

Bundled texts

Except for "the quick brown fox," bundled texts are sourced from


  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request
Something went wrong with that request. Please try again.