This is a typing tutor I wrote several years ago. It supports qwerty and dvorak keyboards. Others are easy to configure.
DRILL is written in C and has been tested on Linux, Mac, and Windows.
The program allows you to learn in levels with a limited group of keys at a time. It embodies what I thought would be a good way to learn. It is easily configured and extended.
Source code is located at: https://github.com/blakemcbride/Drill
Blake McBride