amphetype

sunday, 10 may 2015

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.

wordgen

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.

usage

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

»»  fixie

comment ?