# NAME

Acme::KeyboardMarathon - How far have your fingers ran?

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

* 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 of 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.

# BUGS AND SOURCE

``````        Bug tracking for this module: https://rt.cpan.org/Dist/Display.html?Name=Acme-KeyboardMarathon

Source hosting: http://www.github.com/bennie/perl-Acme-KeyboardMarathon``````

# VERSION

``        Acme::KeyboardMarathon v1.27 (2022/01/07)``
``        (c) 2012-2022, Evelyn Klein <evelykay@gmail.com> & Phillip Pollard <bennie@cpan.org>``

This source code is released under the "Perl Artistic License 2.0," the text of which is included in the LICENSE file of this distribution. It may also be reviewed here: http://opensource.org/licenses/artistic-license-2.0

# AUTHORSHIP

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

As much as I wish I could be fully blamed for this, I must admit that Mrs. 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>

Non-judgemental support for DVORAK keyboards added anonymously by RT user 'spro^^*%*^6ut#@&\$%*c in https://rt.cpan.org/Ticket/Display.html?id=117203