You could always use the keyboard viewer built into OS X:
System Preferences>International>Input Menu - turn on
Then access from menu bar. You would have to use a stylus probably to use if efficiently, but free.
In fact you can build your own! Using Inteface Builder and ProjectBuilder, I managed to code a little proof of concept last year, complete with preliminary voice support. Unfortunately I'm still using 10.2 so I had to rely on an external app to output the key to the system (Ex: salling clicker, or other scripting addition), but I believe with 10.3 you can do it more easily, thanks to GUI Scripting.
Of course I can't try it but the code would look like
tell application "System Events"
tell process X
keystroke "I" using command down
-- you can use modifier keys, too!
Otherwise, TouchStroke is wonderful, but at 95$, I prefer to use a less featured product.