20#include <winpr/config.h>
24#include <winpr/input.h>
34static DWORD KEYCODE_TO_VKCODE_APPLE[256] = {
140 VK_SNAPSHOT | KBDEXT,
299static DWORD KEYCODE_TO_VKCODE_EVDEV[256] = {
397 VK_RCONTROL | KBDEXT,
399 VK_SNAPSHOT | KBDEXT,
413 VK_VOLUME_MUTE | KBDEXT,
414 VK_VOLUME_DOWN | KBDEXT,
415 VK_VOLUME_UP | KBDEXT,
457 VK_LAUNCH_MAIL | KBDEXT,
458 VK_BROWSER_FAVORITES | KBDEXT,
460 VK_BROWSER_BACK | KBDEXT,
461 VK_BROWSER_FORWARD | KBDEXT,
465 VK_MEDIA_NEXT_TRACK | KBDEXT,
466 VK_MEDIA_PLAY_PAUSE | KBDEXT,
467 VK_MEDIA_PREV_TRACK | KBDEXT,
468 VK_MEDIA_STOP | KBDEXT,
474 VK_BROWSER_HOME | KBDEXT,
475 VK_BROWSER_REFRESH | KBDEXT,
520 VK_BROWSER_SEARCH | KBDEXT,
576static DWORD KEYCODE_TO_VKCODE_XKB[256] = {
696 VK_RCONTROL | KBDEXT,
698 VK_SNAPSHOT | KBDEXT,
713 VK_VOLUME_MUTE | KBDEXT,
714 VK_VOLUME_DOWN | KBDEXT,
715 VK_VOLUME_UP | KBDEXT,
756 VK_LAUNCH_MAIL | KBDEXT,
757 VK_BROWSER_FAVORITES | KBDEXT,
759 VK_BROWSER_BACK | KBDEXT,
760 VK_BROWSER_FORWARD | KBDEXT,
764 VK_MEDIA_NEXT_TRACK | KBDEXT,
765 VK_MEDIA_PLAY_PAUSE | KBDEXT,
766 VK_MEDIA_PREV_TRACK | KBDEXT,
767 VK_MEDIA_STOP | KBDEXT,
773 VK_BROWSER_HOME | KBDEXT,
774 VK_BROWSER_REFRESH | KBDEXT,
818 VK_BROWSER_SEARCH | KBDEXT,
851DWORD GetVirtualKeyCodeFromKeycode(DWORD keycode, WINPR_KEYCODE_TYPE type)
859 case WINPR_KEYCODE_TYPE_APPLE:
861 vkcode = KEYCODE_TO_VKCODE_APPLE[keycode & 0xFF];
863 case WINPR_KEYCODE_TYPE_EVDEV:
865 vkcode = KEYCODE_TO_VKCODE_EVDEV[keycode & 0xFF];
867 case WINPR_KEYCODE_TYPE_XKB:
869 vkcode = KEYCODE_TO_VKCODE_XKB[keycode & 0xFF];
881DWORD GetKeycodeFromVirtualKeyCode(DWORD keycode, WINPR_KEYCODE_TYPE type)
883 DWORD* targetArray = NULL;
884 size_t targetSize = 0;
888 case WINPR_KEYCODE_TYPE_APPLE:
889 targetArray = KEYCODE_TO_VKCODE_APPLE;
890 targetSize = ARRAYSIZE(KEYCODE_TO_VKCODE_APPLE);
892 case WINPR_KEYCODE_TYPE_EVDEV:
893 targetArray = KEYCODE_TO_VKCODE_EVDEV;
894 targetSize = ARRAYSIZE(KEYCODE_TO_VKCODE_EVDEV);
896 case WINPR_KEYCODE_TYPE_XKB:
897 targetArray = KEYCODE_TO_VKCODE_XKB;
898 targetSize = ARRAYSIZE(KEYCODE_TO_VKCODE_XKB);
904 for (DWORD index = 0; index < targetSize; index++)
906 if (keycode == targetArray[index])