Keyboard Map for the Device Emulator

Here are some desktop keyboard shortcuts you can use on the Device Emulator. Learning these keys should make debugging your Windows Mobile applications a lot faster! If you're not a developer but simply interested in playing around with Windows Mobile, you can always download the free standalone emulator to take our OS for a test drive.

Pocket PC Device Emulator
Hardware Button: Maps To:
Soft Key 1 F1
Soft Key 2 F2
Volume Up F6
Volume Down F7
Action Enter
Back Backspace
Start Menu Windows key
1-9 (Phone Keypad) 1-9 (NOT NumPad)
A-Z A-Z (Keyboard)

Smartphone Device Emulator
Hardware Button: Maps To:
Soft Key 1 F1
Soft Key 2 F2
Talk F3
End F4
Volume Up F6
Volume Down F7
* F8
# F9
Action Enter
Back Escape
Home Windows key
1-9 (Phone Keypad) 1-9 (NOT NumPad)
A-Z A-Z (Keyboard)

Comments (13)

  1. says:

    If you want to run a simulated Windows Mobile device, installing the Windows Mobile 5.0 SDK can be a challenge. For starters, the SDK is about 175MB, then there’s the fact that it only works with Visual Studio 2005. If…

  2. David says:

    Why can we have SEND & END key mapping in Pocket PC DEs?

  3. Andy Briggs says:

    Is there anyway of removing the F6 F7 (Volume Control) keys in Windows Mobile?

    If so please could you e-mail these to me, or at least remind me of this thread – I’ve looked everywhere and they seem to be hardcoded and connot be changed, I’m sure they can somehow! 😉

    Many thanks

    Andy Briggs

  4. Brad Burns says:

    I also am looking for a way of re-mapping the F1, F2 as well as the volume controls.  I am running a Terminal Server and having PPC 5.0 remote into this TS to access SAP.  Opera is the browser that I am having connect to the SAP webconsole because Opera support key mapping.  When I run the console on my laptop, the F1 and F2 work fine, however it does not work on the PPC.  

  5. Koterpillar says:

    Is there any mapping for FN on QWERTY smartphone? Seems like it’s the only way to enter a slash (/), because "?/" key on the PC doesn’t enter "/" no matter what the shift state is.

  6. Joseph Morin says:

    Those mappings also work if connect a BlueTooth keyboard to a WM6 Smartphone.  (Yeah, I tried it for kicks.  Sure made emails easier!)

  7. Varun Prakash Shrivastava says:


    I am using windows mobile 6 professional device. The device has side keys for volume up and down.

    I was to know how can I capture the events thrown by the side keys.

    Here is the snippet of the code I wrote(it didn’t work )

    private void Form1_KeyDown(object sender, KeyEventArgs e)


               MessageBox.Show("Key Downn" + e.KeyCode);


           private void Form1_KeyPress(object sender, KeyPressEventArgs e)


               MessageBox.Show("Key Pressn" + e.KeyChar);


           private void Form1_KeyUp(object sender, KeyEventArgs e)


               MessageBox.Show("Key Upn" + e.KeyCode);


    Please suggest me how should I proceed.

  8. Jack says:

    How can input Tab in the Device Emulator

  9. Francisco says:

    I would like to know if there is any bluetooth keyboard remapper to map the keyboard to a simbol.

    FOr example I’ve bouhgt a japanese bluetooth keyboard and I would like to put some language symbols as:

    Ñ  when I press ´, etc…

    It have to be a very easy application cause I can’t find how to remap the bluetooth keyboard for my pda to my language.

    Thanks and please write me at


  10. hjgode says:

    For all those that would like to use the function keys in a standard matter (no special OS function, no mapping the softkey or volume up/down): I always use the deprecated Game API. Just link or load gx.dll, gx.lib, gx.h andd then use GXOpenInput() and GXCloseInput. Although deprecated it works since MS did introduce the ‘soft keys’ any time during Windows Mobile 2003 releases.

    GXXOpenInput and GXCloseInput reside in gx.dll with mangled names. So fi you use dynamic load (LoadLibrary and GetProcAddress). Here is the c# code I use:

       class GX_WM


           //nice mangled names

           //?GXCloseInput@@YAHXZ or use "#3"

           [DllImport("gx.dll", EntryPoint="?GXCloseInput@@YAHXZ")]

           extern private static Int16 GXOpenInput();

           //?GXOpenInput@@YAHXZ or use "#9"

           [DllImport("gx.dll", EntryPoint="?GXOpenInput@@YAHXZ")]

           extern private static Int16 GXCloseInput();

           public void GXopen(){




           public void GXclose()






    Just call GXOpenInput() at start of your app and you will get ALL function keys directly routed to your APP. No volume up/down and other softkey functions are then active.



  11. We’re discussing this and other mobile development issues and providing answers on the new Intermec Developers Forum at  Come take a look, and register (it’s free) if you like what you see.

  12. hjgode says:

    NOTICE for WM6:

    It looks like MS has now unlinked the code behind GXOpenInput() for windows mobile 6 and 6.1

    My apps are no longer able to catch all hardware buttons with the use of GXOpenInpu().

    Yes, GXOpenInput() was deprecated since after wm2003, but it worked fine with WM5. But for WM6 we have to use another approach (undocumented): UnregisterFunc1() and RegisterHotKeys() from CoreDll. But these functions dont let you takeover control of the Win key (VK_LWIN).

    PLEASE PLEASE Microsoft, change the use of function key values for OS buttons. PLEASE free VK_F1, VK_F3, VK_F4 and all the others!

    PLEASE think of all the users of TSC, they cant use VK_F1 for help, VK_F3 will not show a search and so on.

    PLEASE free the function keys



  13. MSDNArchive says:

    As far as I know, GXOpenInput() should still be supported in WM 6 and 6.1.  Can you post more details? (Device, development enviroment version, etc.)

    As an aside, there is a (soon to be documented) call AllKeys() that you can use to replace GXOpenInput.

    AllKeys(0) is the default state

    AllKeys(1) allows additional button presses to  be passed to your application.

    GXOpenInput is (as I understand it) a wrapper for AllKeys, so AllKeys should be able to function as a direct replacement for GXOpenInput().

    AllKeys() is supported in 5.0 through 6.1, and may be supported in previous versions as well.

Skip to main content