Acme::KeyboardMarathon - How far have your fingers ran? - v1.23 ================================================================================ SYNOPSIS ================================================================================ use Acme::KeyboardMarathon; my \$akm = new Acme::KeyboardMarathon; my \$distance_in_cm = \$akm->distance(\$bigtext); NB: Included in this distribution is an example script (marathon.pl) that can be used to calculate distance from files provided as arguments: \$> ./marathon.pl foo.txt bar.txt baz.txt 114.05 m ================================================================================ DESCRIPTION ================================================================================ Acme::KeyboardMarathon will calculate the approximate distance traveled by your fingers to type a given string of text. This is useful to see just how many meter/miles/marathons your fingers have ran for you to type your latest piece of code or writing. ================================================================================ METHODOLOGY ================================================================================ In proper typing, for all but the "home row" letters, our fingers must travel a short horizontal distance to reach the key. For all keys, there is also a short distance to press the key downward. Measurements were take on a standard-layout IBM type-M keyboard to the nearest 1/3rd of a centimeter for both horizontal and vertical (key depth) travel by the finger. Additionally, use of the shift key was tracked and its distance was included for each calculation. This produces an index of "distance traveled" for each possible key-press, which is then used to calculate the "total distance traveled" for a given piece of text. ================================================================================ BUGS AND LIMITATIONS ================================================================================ * This module calculates the linear distance traversed by adding vertical and horizontal motion of the finger. The motion traversed is actually an arc, and while that calculation would be more accurate, this is an Acme module, after all. Send me a patch with the right math if you're bored. * A QWERTY keyboard is assumed. DVORAK people are thus left out in the cold. As they should be. The freaks. * I assume there are no gaps between your keys. This means all those stylish Mac keyboard folks are actually doing more work than they're credited for. But I'm ok with that. * I assume you actually use standard home row position. Just like Mavis Beacon told you to. * I assume you return to home row after each stroke and don't take shortcuts to the next key. Lazy typists! * I assume that you never make mistakes and never use backspaces while typing. We're all perfect, yes? * I assume that you do not type via the use if copy and paste. Especially not using copy and paste from google. Right? RIGHT?!?!?? * I'VE NEVER HEARD OF CAPS LOCK. YOU PRESSED THAT SHIFT KEY AND RETURNED TO HOME ROW FOR EVERY CAPITAL LETTER!!!!!!! * I am a horrible American barbarian and have only bothered with the keys that show up on my American barbarian keyboard. I'll add the LATIN-1 things with diacritics later, so I can feel better while still ignoring UTF's existence. ================================================================================ AUTHOR ================================================================================ Efrain Klein & Phillip Pollard As much as I wish I could be fully blamed for this, I must admit that Mr. Efrain Klein came up with the awesome idea, took the time to make the measurements, and wrote the original code in Python. I just made sure it was less readable, in Perl. A significant boost in speed via a patch from James Raspass Additional patches from Mark A. Smith. ================================================================================ VERSION ================================================================================ Acme::KeyboardMarathon v1.23 2014/04/14 ================================================================================ LICENSE AND COPYRIGHT ================================================================================ (c) 2012-YEARDATE, Efrain Klein & Phillip Pollard Released under the Perl Artistic License 2.0