Custom Soft Input Panel (SIP) for Pocket PC

SIP - Soft Input Panel is the term used to describe the popup software keyboard provided on Pocket PC devices to simplify input. SIP's are generally 80 pixels high and shown at the bottom of the screen just above the menu bar.

'Can I write and install a custom SIP?' - I haven't had this question for some time so I thought it would be interesting to post about it. This was one of my very first bits of code for Pocket PC way back in 2000 and it still works now: ok, so I had to rebuild the project structure around it to support eVC 4.0, but no code changes. Right now you can only write custom SIP panels in native C++ code, and I would recommend using ATL as it will provide all the nasty COM plumbing for you (plus I always like to see lots of multiple inheritance in my code - makes me feel superior :) ).

Soft Input Panels are just COM objects that implement the IInputMethod interface and optionally the IInputMethod2 interface. Check out this MSDN article for more detailed information on the interface methods. The component registration is done by adding a new string value to the class registration details: CLSID\{MYGUID}\IsSIPInputMethod="1". No need to reboot the device, just go into setings|Personal|Input and select the new input method from the list.

I have put my sample project in zip form up here (disclaimer applies). You will need EVC 4.0 (SP2 to target Pocket PC 2003, SP3 to target PPC 2003 Second Edition) installed on your dev machine to compile this. It works just as well in the emulator. There are a couple of minor drawing issues with the code I have seen, maybe I will get round to fixing them up sometime).

Marcus