Use FuncKey to free up your FunctionKeys on Windows Mobile


Updated on 10. feb 2010

I finished a toolset to free the function keys on windows mobile devices. That means a tool set that will give you back the function keys. Instead of F3 launching the phone app, you can free the F3 key and use it in your app.

The tool set consists of three files:

  • FuncKeysCPL a control panel applet that will launch the second tool FuncKeys.
  • FuncKeys will enable you to define the function keys to free up.
  • FuncKeysUnReg, the tool that will apply your settings during startup of the device.

For some more information see the html help inside FuncKeys (use the [?] button).

The only disadvantage with the tool is that it cannot free VK_LWIN as GXOpenInput() or AllKeys() can do.


[Download not found]

[Download not found]

UPDATE: new version with definable delay at github

Update feb 2015: new version with support for F11 and F12: [Download not found]


  1. Jason says:


    Do you have installer for Win CE 5/6 devices?

    Thanks and Regards,


  2. admin says:

    I am sorry, I do not provide special installers. You just need to copy all files to the windows dir of the dvice and you are done.

    regards, Josef

  3. […] you are not the coder you may use UnregisterFunc1 (see my post “Freedom for Function Keys“). But be warned, there are applications that even then will not process Function Keys or do […]

  4. Ng says:

    Hi Josef,

    Thanks for posting the Function key program. I am trying to free up F1- F12.
    However, the current application could only Free up from F1 – F11.

    Kindly help if you could send me a updated version fro F1- F12.


    Best Regards,

  5. Ryan B. says:

    This is a great tool for fixing function keys in IBM’s J9 2.1 emulator running on WM6.5

  6. Walter Wong says:

    I heard the tool is able to fixing function keys in J9. But after I install the tool and unregister F1, F2, F3 and F4 key, only F1 and F2 key works in MCSA under J9. Is there any hidden trick? Thanks for help.

  7. admin says:

    What is MCSA?

    What device? Does it have real F-Keys? Please check with Keytest3AK, if the keys are free after using UnregisterFunc. Keytest3AK will show the key values for pressed keys.

  8. Andy says:

    Just installed this software on motorola mc-9190 running wm6.5, after going to settings-system-FuncKeys nothing happens, no window opens and I`m unable to change what keys to “free”.
    What am I doing wrong?

  9. admin says:

    This is a developer side. Possibly you can just run the code with debugger and look what is going wrong on your device.

    The FuncKeys cpl file itself does simply launch FuncKeys.exe. If the exe is not there, nothing will happen when you click the applet. This can be easily seen in the source code:

    if ( CreateProcess(L”\\Windows\\FuncKeys.exe”,L””,0,0,0,0,0,0,0,&pi) )

    regards and good luck


  10. Tomas says:

    can i use that with windows embedded 6.0?? because i’ve troubles using the function keys

  11. josef says:

    I have never heard of Windows embdded 6.0. Do you mean Windows CE 6.0?

    Oh god, all thes MS confusing and changing version numbers and product namings.

  12. Tomas says:

    Windows mobile embedded 6.5 for handhelds, in this page you can check it.

  13. JK says:

    It’s Great!.
    I want to distribute these FuncKeys with my applications.
    I use the f1-f10 func keys in my apps but it can not windows mobile.
    So, Is it possible to distribute with apps?
    Please permit me.

  14. josef says:

    Hi JK

    yes, please feel free to use it anywhere.

    But using the AllKeys(TRUE) api call would be more effective in your app.


  15. JK says:

    I appreciate you.

  16. josef says:

    Hello Thomas

    When pressing the ALPHA key (what device model code are you using?) a flag is set which is documented by KeyTest3AK.

    RDP protocol has a separate message to transmit the NUM_LOCK state flag.

    rdesktopce only honors the CAPS_LOCK flag when processing a KEY_DOWN or KEY_UP event.

    As you say it works OK if the device’s ALPHA key has been pressed before, the separate NUM_LOCK message has been send to the server and the following scan codes are interpreted with the NUM_LOCK flag set on the server side.

    Can not say anything more specific without knowing the device.


  17. Lelya says:

    Does the program works under Win CE 6.0?
    I’ve installed last version from githib placing files into windows and startup, checked buttons F5 F6 F7 to unreg them.. Warmboot..Waiting.. but all buttons still continue working in IE.

  18. josef says:

    Hello Lelya

    unregister funckeys is for windows mobile only. Windows CE does not register global function keys. Possibly you have to use one of the IE browser techniques to be able to use function keys in html code (or is this not what you are looking for?).

  19. Lelya says:

    >>Possibly you have to use one of the IE browser techniques
    Could you please give me some details?
    We’vw got the same problem in EWM with F6 F7 buttons
    Now It’s workaround with ActiveHotkeys
    If you can give me anoter hint – I’ll be very happy!

  20. josef says:

    Sorry, but without more details I can not suggest a solution. What EWM? What ActiveHotkeys?

    The iHookIE solution catches the function keys before OS and sends them directly into the IE window. If an app is not aware of function keys, this will not work and there is no other solution.

    FuncKeys itself does only free the function keys from there registration with OS functions (different apps that use RegisterHotkey API).

  21. Christian Gut says:

    So you have any experience with the function keys in Remote Desktop? We have unregistered the keys correctly (i.e. F5 does not change Volume any more). But in an Application in Remote Desktop no function keys work…

  22. josef says:

    F5 is never used to control the volume (F6/F7 control volume up/down).

    AFAIK RDM does ignores function key input totally, it just ignores the VK_Fxx values.

    There is a trick to map function key values to unused VK_ values and then remap those VK_ values to function key scan codes. In example: map F1 to issue the VK_COMMA value and in tscscan.txt map VK_COMMA to the PS/2 scan code for function key F1.

    The problem is that you might have no app to map hardware keys to anything else. Depends on your device.
    One could rewrite iHook to map F keys to other values.

Leave a Reply