...A dirty implementation can be seen here:
http://tyrael.homeip.net/minimum_keyboard/
I you think, there are Features misssing, just implement them yourself. It is easy. This Project is also an educational one.
For example: sloppy typing.
Just think what this means: the user presses a Little bit to the left or right, which means: the Position and value pairs of "en_hashes" must be adjusted +- 1. Thats all.
The same goes for missing words: just Import another book (basically any ASCII file, or Import your mail conversations).
Or let the database learn from user Inputs. ...