there are many typing tutors available as web browser or standalone applications. Many are tailored to provide training for a particular keyboard layout, beginning with home row finger exercises and progressing to number/symbol row touch typing.
Amphetype is not a typing tutor per se but a typing analyzer which allows you to chart your speed and accuracy progress. What sets this application apart from most is the requirement to provide your own source material for the typing exercises. No more boring home row exercises.. unless you insist! Thus, Amphetype is both keyboard layout and language agnostic which is great since I use my own Colemak Shift-DH layout.
What source material to feed Amphetype with then? A vast amount of material is available from the web, including the extensive library from Project Gutenberg. Individual books and references, however, tend to be limited to a particular vocabulary and word distribution—not necessarily a bad thing, especially if your references cover your lingua franca.
But it is possible without sourcing multiple texts, to generate typing exercises based on the most common words in the English language. Josh Kaufman compiled a list of 10,000 words from the Google Trillion Word Corpus. This is an ordered word list of the 10,000 most commonly used English words—all in lower case.
to generate a text file of paragraphs and sentences with a modicum of capitalization and punctuation (periods only), using random words from the list..
#!/bin/env zsh
words=( 8 11 14 17 )
typedir=~/.config/Amphetype/
wordfile=${typedir}google-10000-english.txt
typefile=${typedir}Google-10000-Words.txt
sentences=$(mktemp)
[[ -z $* ]] || words=( $@ )
[[ -z $filter ]] && filter='*'
notify "Building $wordfile.words" "Please be patient.."
cat $wordfile \
| egrep -v ‘^(.|..)$’
| egrep “$filter”
> $wordfile.words
cat $wordfile.words \
| aspell –ignore-case -a
| grep -v ‘^*$’
| grep -v ‘^$’
| awk ‘{ print $2; }’
> $wordfile.trim
for i in $(cat $wordfile.trim)
do
sed -i “/^$i$/d” $wordfile.words
done
function _wordgen_() {
shuf $wordfile.words \
| tr ‘\n’ ‘ ‘ \
| fold -s –width=$(( $@ * 5 )) \
| sed -e ‘s/^(.)/\U\1/’ -e ‘s/ $/./’ \
» $sentences
echo » $sentences
}
for i in $words
do
echo “.. sentence length $i words”
wordgen $i
done
sed -i 's/\(.*\)/\1\n/' $sentences
shuf $sentences > $typefile
rm -f $sentences
head $typefile
echo -n "$typefile" | xsel -i
time=10000 notify "Amphetype import" "$typefile"
unset filter
sets of sentences (of specified word lengths) are generated and subsequently shuffled into random paragraphs.
The script removes questionable words from the 10,000 word list using aspell—these include acronyms, trademarks, etc. Words of one or two characters are also omitted—just a personal preference to eliminate acronyms and generate more “readable” nonsense sentences. This trims about 1000 words from the list.
wordgen
generates a “story” file composed of random sentences of default 8, 11, 14, and 17 words
wordgen n1 [n2] ...
generates a “story” file composed of random sentences of n1, n2… average words
filter='<regex>' wordgen [n1] ...
filters the word list with the regex to generate a “story” file weighted towards specific fingers e.g. filter=’[qjzx]’.
The randomly generated “story” file can read quite amusing. Concentrating on hand position, touch, rhythm (finger rolls) and accuracy, rather than speed, develops muscle memory the quickest IMO. I even play videos in a secondary window as a visual distraction to further relax the exercise while developing the neural pathways. Music can be an aid to rhythm. YMMV.
I’m a long way from the 60 WPM standard—with a new layout, new keycap profile, and switching Space bar usage from the dominant right thumb (which is now dedicated to the Backspace of the Shift-DH layout) to the left. But it’s coming..