--- /dev/null
+#!/bin/bash
+# Copyright (C) 2016 Ian Kelling
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+
+# http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+wpm-game() {
+ local help="Usage: wpm-game [--help]
+Typing speed game
+
+Starts counting when you type a non-space.
+Starts over and prints the scrore when you press enter."
+ if [[ $1 == --help ]]; then
+ echo "$help"
+ return 0
+ fi
+ local x line chars seconds
+ local TIMEFORMAT=%R
+ while true
+ do
+ line=()
+ while ! [[ $line ]] || [[ $line == [[:space:]] ]] ; do
+ read -n 1 line
+ done
+ x=$( { time read line; echo "$line"; } 2>&1 )
+ seconds=${x%%[[:space:]]*}
+ x="${x#$seconds}"
+ chars=$(( ${#x} + 1 )) # +1 for the first char we don't have
+ # this formual is the same as typeracer.com's 5 keys / word
+ # wikipedia says 6 is more accurate, I like typeracers flattery.
+ # chars / 5 and seconds/60 simplifies to * 12
+ echo -ne "$(echo "12 * $chars / $seconds" | bc)\t"
+ done
+}
+wpm-game "$@"