Arduino playground - GkosMain
http://www.arduino.cc/playground/Main/GkosMain
If you are planning to build a stand-alone system where a small but full-featured keyboard is needed, this simple solution could be useful for you.
GKOS Keyboard
http://www.gkos.net
pib/gkos - GitHub
https://github.com/pib/gkos
The basic idea of GKOS is that you've got six buttons on the back of a device (either a dedicated input device, or on the back of a handheld computing device, phone, etc), one for the index through ring fingers of each hand (or two for each finger if you have a device made for one-handed use). You press the keys in various chords to type, switch between modes, and operate a pointer (when in pointer mode).