Have you taken a look at the TWUIK? It looks impressive.
http://www.tricastmedia.com/twuik/ http://youtube.com/watch?v=2M3GYhMSxrU I use a pure canvas text entry component for most of my applications. In most cases I mimic multi-tap functionality. For example, the key '0' is mapped to ' ' and '0' Pressing 0 once is treated as a space, and pressing it two times is considered 0.
Likewise, '#' and '*' are reserved for "#$[]{}~^`|" and "*-_()/\\:;+&%*=<>$" respectively.
I know which character to choose by the number of times the key was pressed. I have an external text file that can customize the mappings for different phones. For example, my E61 has a QWERTY layout and uses a key map file that takes advantage of it.
You can grab my source code from hostj2me.com from any of the applications below. The interesting classes are TextInputEngine, TextInputListener, and ~TextInputWidget.
http://hostj2me.com/appdetails.html?id=2519 http://hostj2me.com/appdetails.html?id=1557 http://hostj2me.com/appdetails.html?id=1569 Here are some videos of applications which use the text entry component.
http://worlddeveloper.org/files/1877/yipi.wmv http://worlddeveloper.org/files/3799/demo1.wmv http://worlddeveloper.org/files/4054/meos.wmv Two final considerations are mapping the delete key and how to select uppercase characters...