I've implemented a Canvas (not GameCanvas), that handles key presses for text input and can more or less handle ITU-T, half-QWERTY and QWERTY efficiently, along with all the bells and whistles (multiple key presses on ITU-T and half-QWERTY, blinking cursor, etc, nicely blended with my custom layout).
Now, I know this is going to be a tough one - I need to handle multiple language input. I know for QWERTY at least, I can get Unicode values for the keys. For the others, I'm unsure (is there some way I can look up what is the Unicode value for 'w' (or where 'w' normally is, anyway) on a half-QWERTY keyboard? Or what characters bind to a specific ITU-T keypad?).
Then, that's not all, that could possibly take care of many languages, but how would I handle something like Chinese or Arabic? Any tips?