Custom Soft Input Panel (SIP) for Pocket PC
As this is my first post on the WindowsMobile blog an introduction is probably in order: My name is Marcus Perryman and I have worked for Microsoft in the UK for 8 years now. The last 5 years have been concentrating on Pocket PC development (also WindowsCE, XPe and for the last couple of years, Smartphone), providing advice on mobile app development to customers across Europe. I have my own blog here, but James Pratt invited me to cross post onto this alias so I thought I would give it a try!
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 (code is provided "AS IS" with no warranties, and confer no rights). 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
Comments
Anonymous
February 09, 2005
The Pocket PC 2002 and 2003 SDKs come with the Dvorak SIP sample in SamplesATLDvoraksip. Combined with the information and sample in Doug Boling's Programming Windows CE, Third Edition, I was able to successfully implement a SIP input method.
Gratuitous plug: http://www.handango.com/PlatformProductDetail.jsp?productId=92315. Not pretty, nor a particularly good repertoire, but you can use it with a finger, and that's what matters to our customers.
It probably doesn't work too well with VGA devices, though!Anonymous
February 09, 2005
Good point about the VGA device Mike:
Because the SIP dll is loaded by a system process there is no dot pitch emulation taking place so your SIP panel will show 'real' pixel sizes on a VGA device. So in my example code it will show a very small calculator panel justified bottom left. To deal with VGA will require a small amount of code to detect dot pitch / resolution, and a bunch more resources at the higher dot pitch.
I will try and grab some time to update the calc sample for HiRes...
MarcusAnonymous
January 08, 2006
Hi,
i want to develop my SIP with C#.
Is it possible?
But i want to create my SIP like a nokia phone.Anonymous
January 08, 2006
The comment has been removedAnonymous
March 23, 2006
I just got my lovely new T-Mobile MDA Vario (aka HTC Wizard) a few weeks ago, moving myself out of the land of WM 2003 into WM 5. So far, it is a welcome improvement, except...
I can't get ANY 3rd party SIPs to work on this thing! They install, and they appear on the SIP menu (although that menu takes FOREVER to display). However, as soon as I select a SIP I've installed, it will not work, but simply reverts to the default keyboard SIP.
Clearly something on the device is messed up, as it has been doing this since the day I got it.
Did a DLL or registry setting get corrupted? What gives?Anonymous
April 15, 2006
Testing
MISAnonymous
April 18, 2006
The comment has been removedAnonymous
April 21, 2006
PDA (Pocket PC) and Windows Mobile 5.0
Visual Studio 2005
Build your SIP for WM5 -> copy and register SIP -> restart PDA -> write a small Program with function SipSetCurrentIM(MyClsid_of_SIP)->It will not change.Anonymous
May 02, 2006
Hello!
My device Qtek S200,I work By interkey keyboard.
Please help me How can I set interkey as default?
I tried easy tweak and tweak2k2,but sorry don't work.Anonymous
May 02, 2006
Hello!
My device Qtek S200,I work By interkey keyboard.
Please help me How can I set interkey as default?
I tried easy tweak and tweak2k2,but sorry don't work.Anonymous
May 14, 2006
Shame with all your "knowledge" you could not answer a simple question about why other keyboards won't work in WM5!Anonymous
May 25, 2006
Phraze-It® is a finger typing on-screen keyboard for Pocket PCs that works with the Pocket PC SIP. Phraze-It® has large typing keys and enough text display area to display several lines of text that have been entered for review and editing. You can type with your index fingers, or thumb with one hand or two.
It is a full function keyboard that provides the functionality of a computer keyboard to the Pocket PC. Phraze-It® also features keystroke reduction, 8 keyboard layouts and supports 7 languages. The premium version comes bundled with the Phraze-It® Game for decoding over 1,000 word puzzles. Phraze-It® supports VGA and works with Pocket PC 2003 and Windows Mobile (r) 5 versions.Anonymous
June 11, 2006
Since you work for MS, can you tell me whether it would be possible to transfer the ime from the chinese pocket pc os to english os. from looking at a friends chinese pocket pc i feel like that ime is far better than any third party one that i have seen...Anonymous
June 25, 2006
I'm also curious if you can transfer the Chinese IME because I am in need of it on my English PPC... it's VERY powerfulAnonymous
June 29, 2006
The comment has been removedAnonymous
June 29, 2006
I need to send a string into the input buffer, so any program, which has an input focus, can read the input. It's not exactly about custom SIP, but quite close.
Could anyone advise me on this topic?
chatlove@ukr.netAnonymous
June 30, 2006
The comment has been removedAnonymous
June 30, 2006
Thanks Mike!Anonymous
June 30, 2006
Anyone care to venture a guess? Any guess?Anonymous
July 19, 2006
Try finger typing or thumbing input on the Phraze-It keyboard for the Pocket PC. Phraze-It (r) includes 8 keyboard layouts for easy, comfortable, efficient and accurate finger typing right on your Pocket PC. You input while standing, sitting or even walking with one hand or two.
Phraze-it (R) is a full-functionality soft keyboard that enables you to finger type on full size on-screen keys, yet the Phraze-It keyboard only takes up a fraction of the Pocket PC screen, allowing you to read and edit many lines of text. Its great for one-handed thumbing or one or two finger typists.
Phraze-It is a great keyboard that lets type on the go by extending the input capabilities of your PC to your Pocket PC.Anonymous
November 26, 2006
The comment has been removedAnonymous
January 20, 2007
I'm currently trying to develop a custom SIP for my Axim x51v. I got my basic input and bitmap displaying. However, I wish to have 50% of my screen dedicated to my SIP in order to have larger keys. Is that possible or is there a limitation to the SIP size imposed by Windows Mobile 5.0?Anonymous
January 26, 2007
I have my codebase in smart phone 5.0, can i get the SIP state or EnableChanged event there by any means. As we are planning to keep same codebase, also apart from this proble all other things are just running fine with same cab as that of smartphone in PPC. Please suggest if it is possible or not. rashmiAnonymous
February 22, 2007
Hi, I tried different keyboards and they are all still on my Pocket PC (Dell Axim X51v). And now when I try to select the key board, it takes a while to load all the installed key boards. Is there a way to remove all the keyborads from the list and keep only those that I use. Thanks. Ravi.Anonymous
March 27, 2007
I need to find a good soft phones for windows mobile 5.0 can anibody sugest one thanks in advanceAnonymous
March 28, 2007
I'm developping a new keyboard for PDA. I'd like to do it in C#, are you sure it is not possible? I tried with c++ but ther is not a lot doc on the net. embedded tools 3.0 dosen't work correctly with XP. can someone helpe me? think'sAnonymous
April 11, 2007
How can i disable completly the SIP feature or just hide the icon in my application? For instance, in a splash form there is no need to have a sip icon at the menubar and in other forms as well. Any ideas? Thanks in adavance, Tiago TeixeiraAnonymous
April 12, 2007
Hi, I've just FIXED my WM5 SIP problems. With the help of this page: http://wiki.xda-developers.com/index.php?pagename=WM5_Tweaks_Other I was able to find the Registry strings for the NullKB SIP method and remove them. I'd removed the SIP via remove programs, but it hadn't removed the Registry entries. This stopped all other custom SIPs from working. Now I've cleaned it out I can pick RipBoard or TenGo Free as I wish without problems! I hope this helps! Regards, MarkAnonymous
April 13, 2007
Hi, I'll give a look more close to the link you suggested me. Thanks for share your experience. Best Regards, Tiago TeixeiraAnonymous
April 13, 2007
Hi, I did more testing after the TenGO free SIP failed to load after a soft reset. I've found that if I use all custom SIP's BEFORE getting to the Today Screen they'll work. As I have a password enabled on the PDA this is quick and easy to do. Can any Microsoft people comment? It sounds like some SIP have a problem loading their DLL after today screen is loaded. MarkAnonymous
April 14, 2007
I hope this is my last entry! After getting both SIPs working by using them at the password prompt I found that my Softick Card Export II wouldn't load. If I didn't fix the SIPs it would. So it does look like there's a resource starvation issue. I removed the battery and comms mgr icons from the Task Tray as per http://wiki.xda-developers.com/index.php?pagename=Hermes_Registry as I don't use them and can now get all three working fine. MS is there a resource that can be monitored? This reminds me of the system (GDI) resource drainage in Win98.Anonymous
May 11, 2007
..seems that my own sip-panel works now well on CE5, by deleting ThreadModel Variable for InProcServer32 for that CLSID in registry.Anonymous
May 18, 2007
Can anyone recommend a SIP for the P3600/SPV M700??? Have been downloading various incarnations of Phone Pad...but to no avial.Anonymous
June 05, 2007
Hi to all, I just wanted to know if it is possible to register 2 SIP on the same device. If it is possible then what will be the CLSID of the second SIP?Anonymous
July 04, 2007
Affter i install 4 different sip i see all of then in the sip menu list but after loadig 2 of them (they work) but the third not load and i get the defualt keybord !!! In HTC device with MUI langague the first didnt load. what can i do ???? (i have 32M free RAM )Anonymous
July 09, 2007
As it has been said, that it is not possible to create a custom SIP using .NET. Is it possible to use embedded VB? How about this article below? http://msdn2.microsoft.com/en-us/library/microsoft.windowsce.forms.inputpanel(VS.80).aspxAnonymous
July 24, 2007
The comment has been removedAnonymous
August 27, 2007
I want my smartphone to support touch panel , Is it possbile to use sip on smartphone 5.0?and how can i use itAnonymous
September 09, 2007
作者:兔毛猫链接:http://www.2maomao.com/blog/pocketpc-sip-how-to/ 很多人问,写个专帖: WindowsMobilePocketPC上暂时还...Anonymous
October 18, 2007
Hi Guys, I am new to SIP and do not know anythink about it. My basic question is: Is it possible to have application specific custom SIP? Thanks SanjayAnonymous
January 08, 2008
Hello, Please, how can I resize my SIP in order to have larger keys? Thanks, SandyAnonymous
February 14, 2008
Is it possible to hide SIP button all the time in your app and yet still display the menu? The SHFullScreen can only set the z-order of the SIP button lower than the forground window to hide it. However, only you click on the menu, the SIP button comes back again. ThanksAnonymous
May 09, 2008
Hello is it possible to move the sip ,because i had problem moving it with the setWindowPos funtion ...!?Anonymous
June 11, 2008
Hey, I wanted to know whether I can hide SIP Icon for some time in my C#.Net application and still displaying the Menu? If yes how? Please mail me if anyone knows the solution. My id is kaustubh123@yahoo.co.inAnonymous
July 17, 2008
Hello, I had downloaded the code & tried to build it. But I couldn't build it. The error what i got is Can't convert LPWSTR into unsigned short. Can anyone tell me how to use it?Anonymous
September 06, 2008
The comment has been removedAnonymous
September 07, 2008
how to debug sip, i can't set breakpointAnonymous
October 01, 2008
I am a user, not a developer, of custom SIPs. I. like a previous poster, am frustrated by the inability to retain a custom SIP setting through a soft reset. I am running Windows Mobile 6.1 on an HTC Touch Diamond. Oddly enough, though, the HTC-supplied custom SIPs (Full QWERTY, Compact QWERTY and Dial Pad) ARE persistent over a soft reset, yet no third-party SIP (i.e. Resco Keyboar Pro or TouchPal) are retained as the default SIP when the device is soft reset. What "magic" is HTC doing to enable its custom SIPs to "stick"? Is it some registry setting, or some certificate setting. or merely some "agreement" with Microsoft's developers that WM won't replace the HTC custom SIPs with the default keyboard, but will with anyone elses? This is very frustrating since the HTC keyboards are, by and large, not the best finger-touch solution available. After spending abou a week Googling the solution, maybe an answer straight from the source would help. I hope there won't be some "dance around" answer citing confidentiality agreements!Anonymous
October 06, 2008
Hi all, I am new to this can any one send me sample code for "SIP Dialer" please is very urgentAnonymous
October 30, 2008
Hi Marcus -> As You are very professional in this area. I have a doubt in my application Can i launch my application or start my application automatically when an incoming call occurs. Please help me out on this I need ur help.Anonymous
October 30, 2008
how to do this programatically or during creation of cab file help me out manAnonymous
November 05, 2008
Hi marcus, I am new to the windows mobile application,now I want to develop soft phone in windows mobile. I having wm5.0,active syn4.0,visual studio2003,and I want to developing in native code I know Its possible to develop in native code. can you suggest the SIP call flow and please give some documents and sample code for SOFTPHONE.Anonymous
December 01, 2008
http://abtollc.com/SIP-VoIP.aspxAnonymous
December 30, 2008
Hi all - I have a problem accessing the soft keyboard on a Touch-Diamond smart phone whereby I have writen a basic application with a few text boxes and deployed it to my device, I have updated the the .Net Framework and the app runs OK but I cannot enter any data as the soft keyboard isn't available. I am a newbe to all this and I am using VB.Net 2003 and I need a solution in VB - can any one help please?Anonymous
February 12, 2009
Hello! I use a tablet and I can only use the input panel when I'm browsing to a catalog or file. So i can't use it in any applications, what could be the trouble?Anonymous
February 16, 2009
Please, How to change the position of the SIP to up, not bottom? Thanks darioajr@gmail.comAnonymous
February 16, 2009
Please, How to change the position of the SIP to up, not bottom? Thanks darioajr@gmail.comAnonymous
April 11, 2009
The comment has been removed