From d2cf953f244408553821c8691e19d52bad6ea31d Mon Sep 17 00:00:00 2001 From: akallabeth Date: Fri, 12 May 2023 09:19:36 +0200 Subject: [PATCH] [winpr,input] properly define keyboard types * use an enum to define the different WINPR_KEYBOARD_TYPE* * use the enum as argument for the functions instead of DWORD --- winpr/include/winpr/input.h | 13 ++++++----- winpr/libwinpr/input/keycode.c | 40 ++++++++++++++++++---------------- 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/winpr/include/winpr/input.h b/winpr/include/winpr/input.h index f14d646f4..24eb6304e 100644 --- a/winpr/include/winpr/input.h +++ b/winpr/include/winpr/input.h @@ -891,12 +891,15 @@ extern "C" WINPR_API DWORD GetVirtualScanCodeFromVirtualKeyCode(DWORD vkcode, DWORD /* WINPR_KBD_TYPE */ dwKeyboardType); -#define KEYCODE_TYPE_APPLE 0x00000001 -#define KEYCODE_TYPE_EVDEV 0x00000002 -#define KEYCODE_TYPE_XKB 0x00000003 + typedef enum + { + WINPR_KEYCODE_TYPE_APPLE = 0x00000001, + WINPR_KEYCODE_TYPE_EVDEV = 0x00000002, + WINPR_KEYCODE_TYPE_XKB = 0x00000003 + } WINPR_KEYCODE_TYPE; - WINPR_API DWORD GetVirtualKeyCodeFromKeycode(DWORD keycode, DWORD dwFlags); - WINPR_API DWORD GetKeycodeFromVirtualKeyCode(DWORD keycode, DWORD dwFlags); + WINPR_API DWORD GetVirtualKeyCodeFromKeycode(DWORD keycode, WINPR_KEYCODE_TYPE type); + WINPR_API DWORD GetKeycodeFromVirtualKeyCode(DWORD keycode, WINPR_KEYCODE_TYPE type); #ifdef __cplusplus } diff --git a/winpr/libwinpr/input/keycode.c b/winpr/libwinpr/input/keycode.c index 141b789eb..71e652f16 100644 --- a/winpr/libwinpr/input/keycode.c +++ b/winpr/libwinpr/input/keycode.c @@ -847,26 +847,28 @@ static DWORD KEYCODE_TO_VKCODE_XKB[256] = { 0 /* 255 */ }; -DWORD GetVirtualKeyCodeFromKeycode(DWORD keycode, DWORD dwFlags) +DWORD GetVirtualKeyCodeFromKeycode(DWORD keycode, WINPR_KEYCODE_TYPE type) { DWORD vkcode; vkcode = VK_NONE; - if (dwFlags & KEYCODE_TYPE_APPLE) + switch (type) { - if (keycode < 0xFF) - vkcode = KEYCODE_TO_VKCODE_APPLE[keycode & 0xFF]; - } - else if (dwFlags & KEYCODE_TYPE_EVDEV) - { - if (keycode < 0xFF) - vkcode = KEYCODE_TO_VKCODE_EVDEV[keycode & 0xFF]; - } - else if (dwFlags & KEYCODE_TYPE_XKB) - { - if (keycode < 0xFF) - vkcode = KEYCODE_TO_VKCODE_XKB[keycode & 0xFF]; + case WINPR_KEYCODE_TYPE_APPLE: + if (keycode < 0xFF) + vkcode = KEYCODE_TO_VKCODE_APPLE[keycode & 0xFF]; + break; + case WINPR_KEYCODE_TYPE_EVDEV: + if (keycode < 0xFF) + vkcode = KEYCODE_TO_VKCODE_EVDEV[keycode & 0xFF]; + break; + case WINPR_KEYCODE_TYPE_XKB: + if (keycode < 0xFF) + vkcode = KEYCODE_TO_VKCODE_XKB[keycode & 0xFF]; + break; + default: + break; } if (!vkcode) @@ -875,23 +877,23 @@ DWORD GetVirtualKeyCodeFromKeycode(DWORD keycode, DWORD dwFlags) return vkcode; } -DWORD GetKeycodeFromVirtualKeyCode(DWORD vkcode, DWORD dwFlags) +DWORD GetKeycodeFromVirtualKeyCode(DWORD vkcode, WINPR_KEYCODE_TYPE type) { DWORD index; DWORD* targetArray; size_t targetSize; - switch (dwFlags) + switch (type) { - case KEYCODE_TYPE_APPLE: + case WINPR_KEYCODE_TYPE_APPLE: targetArray = KEYCODE_TO_VKCODE_APPLE; targetSize = ARRAYSIZE(KEYCODE_TO_VKCODE_APPLE); break; - case KEYCODE_TYPE_EVDEV: + case WINPR_KEYCODE_TYPE_EVDEV: targetArray = KEYCODE_TO_VKCODE_EVDEV; targetSize = ARRAYSIZE(KEYCODE_TO_VKCODE_EVDEV); break; - case KEYCODE_TYPE_XKB: + case WINPR_KEYCODE_TYPE_XKB: targetArray = KEYCODE_TO_VKCODE_XKB; targetSize = ARRAYSIZE(KEYCODE_TO_VKCODE_XKB); break;