From c7e4acd16459e8e5275bec1f1effa62cf84b45f2 Mon Sep 17 00:00:00 2001 From: Paul Durrant Date: Thu, 1 Feb 2018 15:38:32 +0000 Subject: [PATCH] Fix a couple of key mappings... ...which gets CTRL+ALT+DEL working This patch also adds some helpful debug code. Signed-off-by: Paul Durrant --- src/xenvkbd/ring.c | 25 ++++++++++++++++++++++++- src/xenvkbd/vkbd.h | 3 ++- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/xenvkbd/ring.c b/src/xenvkbd/ring.c index 25d97ec..bd9dc53 100644 --- a/src/xenvkbd/ring.c +++ b/src/xenvkbd/ring.c @@ -189,12 +189,13 @@ SetArray( } struct _KEY_CODE_TO_USAGE { + const CHAR *KeyName; UCHAR KeyCode; USHORT Usage; }; #define DEFINE_USAGE(_KeyCode, _Usage) \ - { _KeyCode, _Usage } + { #_KeyCode, _KeyCode, _Usage } static struct _KEY_CODE_TO_USAGE KeyCodeToUsageTable[] = { DEFINE_USAGE_TABLE @@ -217,6 +218,23 @@ static VOID RingBuildKeyCodeToUsageMapping( } } +static FORCEINLINE const CHAR * +__KeyCodeToKeyName( + ULONG KeyCode + ) +{ + ULONG Index; + + for (Index = 0; Index < ARRAYSIZE(KeyCodeToUsageTable); Index++) { + struct _KEY_CODE_TO_USAGE *Entry = &KeyCodeToUsageTable[Index]; + + if (Entry->KeyCode == KeyCode) + return Entry->KeyName; + } + + return "UNKNOWN"; +} + static FORCEINLINE USHORT __RingKeyCodeToUsage( IN PXENVKBD_RING Ring, @@ -266,6 +284,11 @@ __RingEventKeypress( } else { // map KeyCode to Usage USHORT Usage = __RingKeyCodeToUsage(Ring, KeyCode); + + Trace("%s (%02x) -> %04x (%s)\n", + __KeyCodeToKeyName(KeyCode), KeyCode, + Usage, Pressed ? "PRESSED" : "RELEASED"); + if (Usage == 0) return; // non-standard key diff --git a/src/xenvkbd/vkbd.h b/src/xenvkbd/vkbd.h index d8b2725..fa4cd7f 100644 --- a/src/xenvkbd/vkbd.h +++ b/src/xenvkbd/vkbd.h @@ -228,6 +228,7 @@ static const HID_DEVICE_ATTRIBUTES VkbdDeviceAttributes = { DEFINE_USAGE(KEY_RIGHTCTRL, 0xE4), \ DEFINE_USAGE(KEY_KPSLASH, 0x54), \ DEFINE_USAGE(KEY_SYSRQ, 0x48), \ + DEFINE_USAGE(KEY_PAUSE, 0x48), \ DEFINE_USAGE(KEY_RIGHTALT, 0xE6), \ DEFINE_USAGE(KEY_HOME, 0x4A), \ DEFINE_USAGE(KEY_UP, 0x52), \ @@ -238,7 +239,7 @@ static const HID_DEVICE_ATTRIBUTES VkbdDeviceAttributes = { DEFINE_USAGE(KEY_DOWN, 0x51), \ DEFINE_USAGE(KEY_PAGEDOWN, 0x4E), \ DEFINE_USAGE(KEY_INSERT, 0x49), \ - DEFINE_USAGE(KEY_DELETE, 0x4D), \ + DEFINE_USAGE(KEY_DELETE, 0x4C), \ DEFINE_USAGE(KEY_MUTE, 0x7F), \ DEFINE_USAGE(KEY_VOLUMEDOWN, 0x81), \ DEFINE_USAGE(KEY_VOLUMEUP, 0x80), \ -- 2.39.5