]> xenbits.xensource.com Git - pvdrivers/win/xenvkbd.git/commitdiff
Fix a couple of key mappings...
authorPaul Durrant <paul.durrant@citrix.com>
Thu, 1 Feb 2018 15:38:32 +0000 (15:38 +0000)
committerPaul Durrant <paul.durrant@citrix.com>
Thu, 1 Feb 2018 15:38:32 +0000 (15:38 +0000)
...which gets CTRL+ALT+DEL working

This patch also adds some helpful debug code.

Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
src/xenvkbd/ring.c
src/xenvkbd/vkbd.h

index 25d97ecf2dc95d9546e7ccb0013751a2ea601ab2..bd9dc534622494ebb3b74fb0a7456c6e04c4b1d8 100644 (file)
@@ -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
 
index d8b2725f24454d3339a70a285ba3c9b4c16b5479..fa4cd7f38eb5ec47df3d02dac5424c9c13365717 100644 (file)
@@ -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),           \