WiseMo Guest Component API
|
Method IWGuestCore::SendUnicode() follows closely to how keyboard input is transmitted to Host and has parameters less straightforward than other methods.
Additionally flags paramter should be translated to 32bit signed format
original value | signed 32bit format |
---|---|
0x7FFFFFFF | 2147483647 |
... | ... |
0x00000002 | 2 |
0x00000001 | 1 |
0x00000000 | 0 |
0xFFFFFFFF | -1 |
0xFFFFFFFE | -2 |
... | ... |
0x80000000 | -2147483648 |
This formula can be used for JavaScript translation:
special - always true
keycode - virtual code
flags (converted to signed 32bit)
key | virtual code | scan code | key | virtual code | scan code |
---|---|---|---|---|---|
VK_LBUTTON | 1 | 0xFF | VK_TVOLUMEDOWN | 0x76 | 0x41 |
VK_RBUTTON | 2 | 0xFF | VK_TSTAR | 0x77 | 0x42 |
VK_CANCEL | 3 | 0x46 | VK_TPOUND | 0x78 | 0x43 |
VK_MBUTTON | 4 | 0xFF | VK_TRECORD | 0x79 | 0x44 |
VK_XBUTTON1 | 5 | 0xFF | VK_SYMBOL | 0x7A | 0x57 |
VK_XBUTTON2 | 6 | 0xFF | VK_F12 | 0x7B | 0x58 |
VK_BACK | 8 | 0x0E | VK_F13 | 0x7C | 0x64 |
VK_TAB | 9 | 0x0F | VK_F14 | 0x7D | 0x65 |
VK_CLEAR | 0x0C | 0x4C | VK_F15 | 0x7E | 0x66 |
VK_RETURN | 0x0D | 0x1C | VK_F16 | 0x7F | 0x67 |
VK_SHIFT | 0x10 | 0x2A | VK_TFLIP | 0x80 | 0x68 |
VK_CONTROL | 0x11 | 0x1D | VK_TPOWER | 0x81 | 0x69 |
VK_MENU | 0x12 | 0x38 | VK_REDKEY | 0x82 | 0x6A |
VK_PAUSE | 0x13 | 0xFF | VK_ROCKER | 0x83 | 0x6B |
VK_CAPITAL | 0x14 | 0x3A | VK_DPAD | 0x84 | 0x6C |
VK_HANGUL | 0x15 | 0xFF | VK_F22 | 0x85 | 0x6D |
VK_JUNJA | 0x17 | 0xFF | VK_ACTION | 0x86 | 0x6E |
VK_FINAL | 0x18 | 0xFF | VK_F24 | 0x87 | 0x76 |
VK_KANJI | 0x19 | 0xFF | VK_NUMLOCK | 0x90 | 0x45 |
VK_TBACK | 0x1B | 0x01 | VK_SCROLL | 0x91 | 0x46 |
VK_CONVERT | 0x1C | 0xFF | VK_OEM_FJ_JISHO | 0x92 | 0xFF |
VK_NONCONVERT | 0x1D | 0xFF | VK_OEM_FJ_MASSHOU | 0x93 | 0xFF |
VK_ACCEPT | 0x1E | 0xFF | VK_OEM_FJ_TOUROKU | 0x94 | 0xFF |
VK_MODECHANGE | 0x1F | 0xFF | VK_OEM_FJ_LOYA | 0x95 | 0xFF |
VK_SPACE | 0x20 | 0x39 | VK_OEM_FJ_ROYA | 0x96 | 0xFF |
VK_PRIOR | 0x21 | 0x49 | VK_LSHIFT | 0xA0 | 0x2A |
VK_NEXT | 0x22 | 0x51 | VK_RSHIFT | 0xA1 | 0x36 |
VK_END | 0x23 | 0x4F | VK_LCONTROL | 0xA2 | 0x1D |
VK_HOME | 0x24 | 0x47 | VK_RCONTROL | 0xA3 | 0x1D |
VK_LEFT | 0x25 | 0x4B | VK_LMENU | 0xA4 | 0x8B |
VK_UP | 0x26 | 0x48 | VK_RMENU | 0xA5 | 0x38 |
VK_RIGHT | 0x27 | 0x4D | VK_BROWSER_BACK | 0xA6 | 0x6A |
VK_DOWN | 0x28 | 0x50 | VK_BROWSER_FORWARD | 0xA7 | 0x69 |
VK_SELECT | 0x29 | 0xFF | VK_BROWSER_REFRESH | 0xA8 | 0x67 |
VK_PRINT | 0x2A | 0xFF | VK_BROWSER_STOP | 0xA9 | 0x68 |
VK_EXECUTE | 0x2B | 0xFF | VK_BROWSER_SEARCH | 0xAA | 0x65 |
VK_SNAPSHOT | 0x2C | 0x54 | VK_BROWSER_FAVORITES | 0xAB | 0x66 |
VK_INSERT | 0x2D | 0x52 | VK_BROWSER_HOME | 0xAC | 0x32 |
VK_DELETE | 0x2E | 0x53 | VK_VOLUME_MUTE | 0xAD | 0x20 |
VK_HELP | 0x2F | 0x63 | VK_VOLUME_DOWN | 0xAE | 0x2E |
VK_0 | 0x30 | 0x0B | VK_VOLUME_UP | 0xAF | 0x30 |
VK_1 | 0x31 | 0x02 | VK_MEDIA_NEXT_TRACK | 0xB0 | 0x19 |
VK_2 | 0x32 | 0x03 | VK_MEDIA_PREV_TRACK | 0xB1 | 0x10 |
VK_3 | 0x33 | 0x04 | VK_MEDIA_STOP | 0xB2 | 0x24 |
VK_4 | 0x34 | 0x05 | VK_MEDIA_PLAY_PAUSE | 0xB3 | 0x22 |
VK_5 | 0x35 | 0x06 | VK_LAUNCH_MAIL | 0xB4 | 0x6C |
VK_6 | 0x36 | 0x07 | VK_LAUNCH_MEDIA_SELECT | 0xB5 | 0x6D |
VK_7 | 0x37 | 0x08 | VK_LAUNCH_APP1 | 0xB6 | 0x6B |
VK_8 | 0x38 | 0x09 | VK_LAUNCH_APP2 | 0xB7 | 0x21 |
VK_9 | 0x39 | 0x0A | VK_OEM_1 | 0xBA | 0x27 |
VK_A | 0x41 | 0x1E | VK_OEM_PLUS | 0xBB | 0x0D |
VK_B | 0x42 | 0x30 | VK_OEM_COMMA | 0xBC | 0x33 |
VK_C | 0x43 | 0x2E | VK_OEM_MINUS | 0xBD | 0x0C |
VK_D | 0x44 | 0x20 | VK_OEM_PERIOD | 0xBE | 0x34 |
VK_E | 0x45 | 0x12 | VK_OEM_2 | 0xBF | 0x35 |
VK_F | 0x46 | 0x21 | VK_OEM_3 | 0xC0 | 0x29 |
VK_G | 0x47 | 0x22 | VK_APP1 | 0xC1 | 0xFF |
VK_H | 0x48 | 0x23 | VK_APP2 | 0xC2 | 0xFF |
VK_I | 0x49 | 0x17 | VK_APP3 | 0xC3 | 0xFF |
VK_J | 0x4A | 0x24 | VK_APP4 | 0xC4 | 0xFF |
VK_K | 0x4B | 0x25 | VK_APP5 | 0xC5 | 0xFF |
VK_L | 0x4C | 0x26 | VK_APP6 | 0xC6 | 0xFF |
VK_M | 0x4D | 0x32 | VK_APP7 | 0xC7 | 0xFF |
VK_N | 0x4E | 0x31 | VK_APP8 | 0xC8 | 0xFF |
VK_O | 0x4F | 0x18 | VK_APP9 | 0xC9 | 0xFF |
VK_P | 0x50 | 0x19 | VK_APP10 | 0xCA | 0xFF |
VK_Q | 0x51 | 0x10 | VK_APP11 | 0xCB | 0xFF |
VK_R | 0x52 | 0x13 | VK_APP12 | 0xCC | 0xFF |
VK_S | 0x53 | 0x1F | VK_OEM_4 | 0xDB | 0x1A |
VK_T | 0x54 | 0x14 | VK_OEM_5 | 0xDC | 0x2B |
VK_U | 0x55 | 0x16 | VK_OEM_6 | 0xDD | 0x1B |
VK_V | 0x56 | 0x2F | VK_OEM_7 | 0xDE | 0x28 |
VK_W | 0x57 | 0x11 | VK_OEM_8 | 0xDF | 0xFF |
VK_X | 0x58 | 0x2D | VK_OEM_AX | 0xE1 | 0xFF |
VK_Y | 0x59 | 0x15 | VK_OEM_102 | 0xE2 | 0x56 |
VK_Z | 0x5A | 0x2C | VK_ICO_HELP | 0xE3 | 0xFF |
VK_THOME | 0x5B | 0x5B | VK_ICO_00 | 0xE4 | 0xFF |
VK_RWIN | 0x5C | 0x5C | VK_PROCESSKEY | 0xE5 | 0xFF |
VK_APPS | 0x5D | 0x5D | VK_ICO_CLEAR | 0xE6 | 0xFF |
VK_SLEEP | 0x5F | 0x5F | VK_PACKET | 0xE7 | 0xFF |
VK_NUMPAD0 | 0x60 | 0x52 | VK_OEM_RESET | 0xE9 | 0x71 |
VK_NUMPAD1 | 0x61 | 0x4F | VK_OEM_JUMP | 0xEA | 0x5C |
VK_NUMPAD2 | 0x62 | 0x50 | VK_OEM_PA1 | 0xEB | 0x7B |
VK_NUMPAD3 | 0x63 | 0x51 | VK_OEM_PA2 | 0xEC | 0xFF |
VK_NUMPAD4 | 0x64 | 0x4B | VK_OEM_PA3 | 0xED | 0x6F |
VK_NUMPAD5 | 0x65 | 0x4C | VK_OEM_WSCTRL | 0xEE | 0x5A |
VK_NUMPAD6 | 0x66 | 0x4D | VK_OEM_CUSEL | 0xEF | 0xFF |
VK_NUMPAD7 | 0x67 | 0x47 | VK_OEM_ATTN | 0xF0 | 0xFF |
VK_NUMPAD8 | 0x68 | 0x48 | VK_OEM_FINISH | 0xF1 | 0x5B |
VK_NUMPAD9 | 0x69 | 0x49 | VK_OEM_COPY | 0xF2 | 0xFF |
VK_MULTIPLY | 0x6A | 0x37 | VK_OEM_AUTO | 0xF3 | 0x5F |
VK_ADD | 0x6B | 0x4E | VK_OEM_ENLW | 0xF4 | 0xFF |
VK_SEPARATOR | 0x6C | 0xFF | VK_OEM_BACKTAB | 0xF5 | 0x5E |
VK_SUBTRACT | 0x6D | 0x4A | VK_ATTN | 0xF6 | 0xFF |
VK_DECIMAL | 0x6E | 0x53 | VK_CRSEL | 0xF7 | 0xFF |
VK_DIVIDE | 0x6F | 0x35 | VK_EXSEL | 0xF8 | 0xFF |
VK_TSOFT1 | 0x70 | 0x3B | VK_EREOF | 0xF9 | 0x5D |
VK_TSOFT2 | 0x71 | 0x3C | VK_PLAY | 0xFA | 0xFF |
VK_TTALK | 0x72 | 0x3D | VK_ZOOM | 0xFB | 0x62 |
VK_TEND | 0x73 | 0x3E | VK_NONAME | 0xFC | 0xFF |
VK_F5 | 0x74 | 0x3F | VK_PA1 | 0xFD | 0xFF |
VK_TVOLUMEUP | 0x75 | 0x40 | VK_OEM_CLEAR | 0xFE | 0xFF |
That is, if according to Skin Designer the button has key sequence VK_VOLUME_UP,
it can be programmaticaly sent as
and if the key sequence is (VK_SHIFT)VK_9
then it can be sent as
special - true or false
when special is false:
keycode - unicode symbol
flags (converted to signed 32bit)
when special is true:
keycode - virtual key code
flags (converted to signed 32bit)
key | special? | keycode | extended bit + scan code | key | special? | keycode | extended bit + scan code |
---|---|---|---|---|---|---|---|
Esc | 0x1b | 0x001 | LCtl | yes | 0xa2 | 0x01d | |
F1 | yes | 0x70 | 0x03b | LWin | yes | 0x5b | 0x15b |
F2 | yes | 0x71 | 0x03c | LAlt | -— | -— | -— |
F3 | yes | 0x72 | 0x03d | Space | 0x20 | 0x039 | |
F4 | yes | 0x73 | 0x03e | RAlt | -— | -— | -— |
F5 | yes | 0x74 | 0x03f | RWin | yes | 0x5c | 0x15c |
F6 | yes | 0x75 | 0x040 | Menu | yes | 0x5d | 0x15d |
F7 | yes | 0x76 | 0x041 | RCtl | yes | 0xa3 | 0x11d |
F8 | yes | 0x77 | 0x042 | PrScreen | -— | -— | -— |
F9 | yes | 0x78 | 0x043 | ScrLock | yes | 0x91 | 0x046 |
F10 | yes | 0x79 | 0x044 | Pause | -— | -— | -— |
F11 | yes | 0x7a | 0x057 | Ins | yes | 0x2d | 0x152 |
F12 | yes | 0x7b | 0x058 | Home | yes | 0x24 | 0x147 |
~ | PageUp | yes | 0x21 | 0x149 | |||
1 | Delete | yes | 0x2e | 0x153 | |||
2 | End | yes | 0x23 | 0x14f | |||
3 | PageDown | yes | 0x22 | 0x151 | |||
4 | Left | yes | 0x25 | 0x14b | |||
5 | Up | yes | 0x26 | 0x148 | |||
6 | Right | yes | 0x27 | 0x14d | |||
7 | Down | yes | 0x28 | 0x150 | |||
8 | NumLock | yes | 0x90 | 0x145 | |||
9 | numlock off | ||||||
0 | Num/ | 0x2f | 0x135 | ||||
- | Num* | 0x2a | 0x037 | ||||
= | Num- | 0x2d | 0x04a | ||||
\ | Num7 | 0x37 | 0x047 | ||||
BS | 0x08 | 0x00e | Num8 | 0x38 | 0x048 | ||
Tab | 0x09 | 0x00f | Num9 | 0x39 | 0x049 | ||
Q | Num+ | 0x2b | 0x04e | ||||
W | Num4 | 0x34 | 0x04b | ||||
E | Num5 | 0x35 | 0x04c | ||||
R | Num6 | 0x36 | 0x04d | ||||
T | Num1 | 0x31 | 0x04f | ||||
Y | Num2 | 0x32 | 0x050 | ||||
U | Num3 | 0x33 | 0x051 | ||||
I | NumEnter | 0x0d | 0x11c | ||||
O | Num0 | 0x30 | 0x052 | ||||
P | NumDel | 0x2e | 0x053 | ||||
[ | numlock on | ||||||
] | Num/ | 0x2f | 0x135 | ||||
Enter | 0x0d | 0x01c | Num* | 0x2a | 0x037 | ||
CapsLock | yes | 0x14 | 0x03a | Num- | 0x2d | 0x04a | |
A | Num7 | yes | 0x24 | 0x047 | |||
S | Num8 | yes | 0x26 | 0x048 | |||
D | Num9 | yes | 0x21 | 0x049 | |||
F | Num+ | 0x2b | 0x04e | ||||
G | Num4 | yes | 0x25 | 0x04b | |||
H | Num5 | -— | -— | -— | |||
J | Num6 | yes | 0x27 | 0x04d | |||
K | Num1 | yes | 0x23 | 0x04f | |||
L | Num2 | yes | 0x28 | 0x050 | |||
; | Num3 | yes | 0x22 | 0x051 | |||
' | NumEnter | 0x0d | 0x11c | ||||
LShift | yes | 0x10 | 0x02a | Num0 | yes | 0x2d | 0x052 |
Z | NumDel | yes | 0x2e | 0x053 | |||
X | |||||||
C | |||||||
V | |||||||
B | |||||||
N | |||||||
M | |||||||
< | |||||||
> | |||||||
? | |||||||
RShift | yes | 0x10 | 0x136 | ||||
RShift | yes | 0x10 | 0x136 | ||||
RShift | yes | 0x10 | 0x136 |
For example, to send keyboard strokes 123 <Enter>: