Mobile Development: another keyboard hooking tool: keyToggleCtrl

Print This Post Print This Post

This is again a keyToggle application. An application that works in background using a keyboard hook.

After keyToggleCtrl has been started, it will install a keyboard hook and watches the keyboard messages for the appearance of the toggle, or as I call it, the sticky key.

When the sticky key is detected, keyToggle Ctrl will watch the keyboard messages for the keys listed in a keytable (default is watching for presses of the number keys 0 to 9). If the pressed key matches a key in the keytable, keytogglectrl will remove the message from the window message queue and instead send the key found in CharTable with Control pressed before and released after the replaced key.

For example, you press the sticky key, the LED defined by LedID should light and if you then press 0, keyToggleCtrl will send instead Control+C to the active application.

KeyTest3AK IMAGE

Without keyToggleCtrl you have to show the SoftwareInputPanel (SIP), tap the [Ctrl] button and then the ‘C’ and then hide the SIP. With keyToggleCtrl you can just use the hardware keyboard and have Ctrl+C (Copy to Clipboard) and Ctrl+V (Paste from Clipboard) at your fingers.

After you started keyToggleControl you will only notice a small symbol on the Today Screen of your device. If you tap the symbol, you have the chance to end the keyboard hook and the keyToggleCtrl application.

KeyToggleCtrl Today Screen

Default key mapping with use of -writereg:

Keytable 0 0x30 -> 0x0043, '0 -> 'C'
Keytable 1 0x31 -> 0x0058, '1 -> 'X'
Keytable 2 0x32 -> 0x0057, '2 -> 'W'
Keytable 3 0x33 -> 0x0054, '3 -> 'T'
Keytable 4 0x34 -> 0x0045, '4 -> 'E'
Keytable 5 0x35 -> 0x0058, '5 -> 'X'
Keytable 6 0x36 -> 0x0057, '6 -> 'W'
Keytable 7 0x37 -> 0x0054, '7 -> 'T'
Keytable 8 0x38 -> 0x0045, '8 -> 'E'
Keytable 9 0x39 -> 0x0056, '9 -> 'V'

These values are the same as ANSI codes or VK_ values found in winuser.h.


  • Default sticky key is VK_PERIOD
  • Sticky timeout is 3 seconds
  • Autofallback is 0
  • LedID default is 1


To find a usable LedID you may use another tool called LED_Control. Funny, that the vibrate motor is also controlled with the same LED API calls.

LED_control IMAGE

LED_control DOWNLOAD

DOWNLOAD:LED_Control - A tool to test the LED API on Windows Mobile devices (Hits: 460, size: 11.5 kB)

keyToggleCtrl Downloads

VS2005/WM6 SDK source code solution: DOWNLOAD:keyToggleCtrl VS2005 Source (WM6 SDK) - (Hits: 565, size: 42.77 kB)

keyToggleCtrl installation CAB file: DOWNLOAD:keyToggleCtrl Installer CAB - Installs keyToggleCtrl with default values onto your Windows Mobile device. It is installed to Programs and StartUp (Hits: 492, size: 22.59 kB)


Leave a Reply