mirror of https://github.com/FreeRDP/FreeRDP
libwinpr-input: fix virtual key code definitions
This commit is contained in:
parent
72957e39eb
commit
32d9f76c41
|
@ -148,8 +148,8 @@
|
|||
#define RDP_SCANCODE_KANA_HANGUL MAKE_RDP_SCANCODE(0x72, FALSE) /* VK_KANA / VK_HANGUL (undocumented?) */
|
||||
#define RDP_SCANCODE_ABNT_C1 MAKE_RDP_SCANCODE(0x73, FALSE) /* VK_ABNT_C1 JP OEM_102 */
|
||||
#define RDP_SCANCODE_F24_JP MAKE_RDP_SCANCODE(0x76, FALSE) /* JP F24 */
|
||||
#define RDP_SCANCODE_CONVERT_JP MAKE_RDP_SCANCODE(0x79, FALSE) /* JP CONVERT */
|
||||
#define RDP_SCANCODE_NONCONVERT_JP MAKE_RDP_SCANCODE(0x7B, FALSE) /* JP NONCONVERT */
|
||||
#define RDP_SCANCODE_CONVERT_JP MAKE_RDP_SCANCODE(0x79, FALSE) /* JP VK_CONVERT */
|
||||
#define RDP_SCANCODE_NONCONVERT_JP MAKE_RDP_SCANCODE(0x7B, FALSE) /* JP VK_NONCONVERT */
|
||||
#define RDP_SCANCODE_TAB_JP MAKE_RDP_SCANCODE(0x7C, FALSE) /* JP TAB */
|
||||
#define RDP_SCANCODE_BACKSLASH_JP MAKE_RDP_SCANCODE(0x7D, FALSE) /* JP OEM_5 ('\') */
|
||||
#define RDP_SCANCODE_ABNT_C2 MAKE_RDP_SCANCODE(0x7E, FALSE) /* VK_ABNT_C2, JP */
|
||||
|
|
|
@ -42,8 +42,8 @@
|
|||
|
||||
#endif
|
||||
|
||||
DWORD RDP_SCANCODE_TO_X11_KEYCODE[256][2];
|
||||
DWORD X11_KEYCODE_TO_RDP_SCANCODE[256];
|
||||
DWORD VIRTUAL_SCANCODE_TO_X11_KEYCODE[256][2];
|
||||
DWORD X11_KEYCODE_TO_VIRTUAL_SCANCODE[256];
|
||||
|
||||
int freerdp_detect_keyboard(DWORD* keyboardLayoutId)
|
||||
{
|
||||
|
@ -100,30 +100,30 @@ DWORD freerdp_keyboard_init(DWORD keyboardLayoutId)
|
|||
|
||||
#ifdef __APPLE__
|
||||
if (status < 0)
|
||||
status = freerdp_keyboard_init_apple(&keyboardLayoutId, X11_KEYCODE_TO_RDP_SCANCODE);
|
||||
status = freerdp_keyboard_init_apple(&keyboardLayoutId, X11_KEYCODE_TO_VIRTUAL_SCANCODE);
|
||||
#endif
|
||||
|
||||
#ifdef WITH_X11
|
||||
|
||||
#ifdef WITH_XKBFILE
|
||||
if (status < 0)
|
||||
status = freerdp_keyboard_init_xkbfile(&keyboardLayoutId, X11_KEYCODE_TO_RDP_SCANCODE);
|
||||
status = freerdp_keyboard_init_xkbfile(&keyboardLayoutId, X11_KEYCODE_TO_VIRTUAL_SCANCODE);
|
||||
#endif
|
||||
|
||||
if (status < 0)
|
||||
status = freerdp_keyboard_init_x11_evdev(&keyboardLayoutId, X11_KEYCODE_TO_RDP_SCANCODE);
|
||||
status = freerdp_keyboard_init_x11_evdev(&keyboardLayoutId, X11_KEYCODE_TO_VIRTUAL_SCANCODE);
|
||||
|
||||
#endif
|
||||
|
||||
freerdp_detect_keyboard(&keyboardLayoutId);
|
||||
|
||||
ZeroMemory(RDP_SCANCODE_TO_X11_KEYCODE, sizeof(RDP_SCANCODE_TO_X11_KEYCODE));
|
||||
ZeroMemory(VIRTUAL_SCANCODE_TO_X11_KEYCODE, sizeof(VIRTUAL_SCANCODE_TO_X11_KEYCODE));
|
||||
|
||||
for (keycode = 0; keycode < ARRAYSIZE(RDP_SCANCODE_TO_X11_KEYCODE); keycode++)
|
||||
for (keycode = 0; keycode < ARRAYSIZE(VIRTUAL_SCANCODE_TO_X11_KEYCODE); keycode++)
|
||||
{
|
||||
RDP_SCANCODE_TO_X11_KEYCODE
|
||||
[RDP_SCANCODE_CODE(X11_KEYCODE_TO_RDP_SCANCODE[keycode])]
|
||||
[RDP_SCANCODE_EXTENDED(X11_KEYCODE_TO_RDP_SCANCODE[keycode]) ? 1 : 0] = keycode;
|
||||
VIRTUAL_SCANCODE_TO_X11_KEYCODE
|
||||
[RDP_SCANCODE_CODE(X11_KEYCODE_TO_VIRTUAL_SCANCODE[keycode])]
|
||||
[RDP_SCANCODE_EXTENDED(X11_KEYCODE_TO_VIRTUAL_SCANCODE[keycode]) ? 1 : 0] = keycode;
|
||||
}
|
||||
|
||||
return keyboardLayoutId;
|
||||
|
@ -132,16 +132,16 @@ DWORD freerdp_keyboard_init(DWORD keyboardLayoutId)
|
|||
DWORD freerdp_keyboard_get_rdp_scancode_from_x11_keycode(DWORD keycode)
|
||||
{
|
||||
DEBUG_KBD("x11 keycode: %02X -> rdp code: %02X%s", keycode,
|
||||
RDP_SCANCODE_CODE(X11_KEYCODE_TO_RDP_SCANCODE[keycode]),
|
||||
RDP_SCANCODE_EXTENDED(X11_KEYCODE_TO_RDP_SCANCODE[keycode]) ? " extended" : "");
|
||||
RDP_SCANCODE_CODE(X11_KEYCODE_TO_VIRTUAL_SCANCODE[keycode]),
|
||||
RDP_SCANCODE_EXTENDED(X11_KEYCODE_TO_VIRTUAL_SCANCODE[keycode]) ? " extended" : "");
|
||||
|
||||
return X11_KEYCODE_TO_RDP_SCANCODE[keycode];
|
||||
return X11_KEYCODE_TO_VIRTUAL_SCANCODE[keycode];
|
||||
}
|
||||
|
||||
DWORD freerdp_keyboard_get_x11_keycode_from_rdp_scancode(DWORD scancode, BOOL extended)
|
||||
{
|
||||
if (extended)
|
||||
return RDP_SCANCODE_TO_X11_KEYCODE[scancode][1];
|
||||
return VIRTUAL_SCANCODE_TO_X11_KEYCODE[scancode][1];
|
||||
else
|
||||
return RDP_SCANCODE_TO_X11_KEYCODE[scancode][0];
|
||||
return VIRTUAL_SCANCODE_TO_X11_KEYCODE[scancode][0];
|
||||
}
|
||||
|
|
|
@ -154,6 +154,8 @@
|
|||
|
||||
/* 0x5E is reserved */
|
||||
|
||||
#define VK_POWER 0x5E /* Power key */
|
||||
|
||||
#define VK_SLEEP 0x5F /* Computer Sleep key */
|
||||
|
||||
/* Numeric keypad digits, the last four bits of the code represent the corresponding digit */
|
||||
|
@ -249,6 +251,7 @@
|
|||
|
||||
#define VK_LAUNCH_MAIL 0xB4 /* Windows 2000/XP: Start Mail key */
|
||||
#define VK_MEDIA_SELECT 0xB5 /* Windows 2000/XP: Select Media key */
|
||||
#define VK_LAUNCH_MEDIA_SELECT 0xB5 /* Windows 2000/XP: Select Media key */
|
||||
#define VK_LAUNCH_APP1 0xB6 /* Windows 2000/XP: Start Application 1 key */
|
||||
#define VK_LAUNCH_APP2 0xB7 /* Windows 2000/XP: Start Application 2 key */
|
||||
|
||||
|
@ -311,18 +314,31 @@
|
|||
/* 0xE8 is unassigned */
|
||||
/* 0xE9 to 0xF5 are OEM specific */
|
||||
|
||||
#define VK_ATTN 0xF6 /* Attn key */
|
||||
#define VK_CRSEL 0xF7 /* CrSel key */
|
||||
#define VK_EXSEL 0xF8 /* ExSel key */
|
||||
#define VK_EREOF 0xF9 /* Erase EOF key */
|
||||
#define VK_PLAY 0xFA /* Play key */
|
||||
#define VK_ZOOM 0xFB /* Zoom key */
|
||||
#define VK_NONAME 0xFC /* Reserved */
|
||||
#define VK_PA1 0xFD /* PA1 key */
|
||||
#define VK_OEM_PA1 0xFD /* PA1 key */
|
||||
#define VK_OEM_CLEAR 0xFE /* Clear key */
|
||||
#define VK_OEM_RESET 0xE9
|
||||
#define VK_OEM_JUMP 0xEA
|
||||
#define VK_OEM_PA1 0xEB
|
||||
#define VK_OEM_PA2 0xEC
|
||||
#define VK_OEM_PA3 0xED
|
||||
#define VK_OEM_WSCTRL 0xEE
|
||||
#define VK_OEM_CUSEL 0xEF
|
||||
#define VK_OEM_ATTN 0xF0
|
||||
#define VK_OEM_FINISH 0xF1
|
||||
#define VK_OEM_COPY 0xF2
|
||||
#define VK_OEM_AUTO 0xF3
|
||||
#define VK_OEM_ENLW 0xF4
|
||||
#define VK_OEM_BACKTAB 0xF5
|
||||
|
||||
#define VK_NONE 0xFF /* no key */
|
||||
#define VK_ATTN 0xF6 /* Attn key */
|
||||
#define VK_CRSEL 0xF7 /* CrSel key */
|
||||
#define VK_EXSEL 0xF8 /* ExSel key */
|
||||
#define VK_EREOF 0xF9 /* Erase EOF key */
|
||||
#define VK_PLAY 0xFA /* Play key */
|
||||
#define VK_ZOOM 0xFB /* Zoom key */
|
||||
#define VK_NONAME 0xFC /* Reserved */
|
||||
#define VK_PA1 0xFD /* PA1 key */
|
||||
#define VK_OEM_CLEAR 0xFE /* Clear key */
|
||||
|
||||
#define VK_NONE 0xFF /* no key */
|
||||
|
||||
/**
|
||||
* For East Asian Input Method Editors (IMEs)
|
||||
|
@ -342,21 +358,6 @@
|
|||
#define VK_DBE_CODEINPUT 0xFA /* Changes the mode to code input. */
|
||||
#define VK_DBE_NOCODEINPUT 0xFB /* Changes the mode to no-code input. */
|
||||
|
||||
/**
|
||||
* TODO: fix the following definitions
|
||||
*/
|
||||
|
||||
#define VK_OEM_WSCTRL 0xFF
|
||||
#define VK_OEM_FINISH 0xFF
|
||||
#define VK_OEM_JUMP 0xFF
|
||||
#define VK_OEM_BACKTAB 0xFF
|
||||
#define VK_OEM_AUTO 0xFF
|
||||
#define VK_OEM_PA3 0xFF
|
||||
#define VK_OEM_RESET 0xFF
|
||||
#define VK_OEM_PA2 0xFF
|
||||
#define VK_POWER 0xFF
|
||||
#define VK_LAUNCH_MEDIA_SELECT 0xFF
|
||||
|
||||
/*
|
||||
* Virtual Scan Codes
|
||||
*/
|
||||
|
|
|
@ -411,11 +411,15 @@ XKB_KEYNAME XKB_KEYNAME_TABLE[] =
|
|||
{ "COMP", VK_APPS | KBDEXT },
|
||||
{ "KPDV", VK_DIVIDE | KBDEXT },
|
||||
{ "RCTL", VK_RCONTROL | KBDEXT },
|
||||
{ "RALT", VK_RMENU | KBDEXT }
|
||||
{ "RALT", VK_RMENU | KBDEXT },
|
||||
|
||||
/* Japanese */
|
||||
|
||||
{ "HENK", VK_CONVERT },
|
||||
{ "MUHE", VK_NONCONVERT },
|
||||
{ "HKTG", VK_DBE_KATAKANA },
|
||||
|
||||
// { "AE13", VK_BACKSLASH_JP }, // JP
|
||||
// { "HKTG", VK_HIRAGANA }, // JP
|
||||
// { "HENK", VK_CONVERT_JP }, // JP
|
||||
// { "MUHE", VK_NONCONVERT_JP } // JP
|
||||
// { "LVL3", 0x54}
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in New Issue