The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

     Acme::KeyboardMarathon - How far have your fingers ran? - v1.25

================================================================================
 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
================================================================================

Evelyn Klein <Evelyn.klein@gmail.com> & Phillip Pollard <bennie@cpan.org>

As much as I wish I could be fully blamed for this, I must admit that
Mr. Evelyn 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 <jraspass@gmail.com>

Additional patches from Mark A. Smith. <jprogrammer082@gmail.com>

================================================================================
 VERSION
================================================================================

  Acme::KeyboardMarathon v1.25 2016/08/23
  
================================================================================
 LICENSE AND COPYRIGHT
================================================================================
  
  (c) 2012-YEARDATE, Evelyn Klein <evelykay@gmail.com> & Phillip Pollard <bennie@cpan.org>
  Released under the Perl Artistic License 2.0