]> xenbits.xensource.com Git - pvdrivers/win/xenvkbd.git/commitdiff
Fix line endings
authorPaul Durrant <paul.durrant@citrix.com>
Wed, 31 Jan 2018 16:56:19 +0000 (16:56 +0000)
committerPaul Durrant <paul.durrant@citrix.com>
Wed, 31 Jan 2018 16:56:19 +0000 (16:56 +0000)
Signed-off-by: Paul Durrant <paul.durrant@citrix.com>
INTERFACES.md
include/hid_interface.h
src/xenvkbd/vkbd.h

index 9d296d570ab3adbc51a6dd8603644a9ad89ae33a..077d88990598c4e334afb411743ca3d0b7fbe786 100644 (file)
@@ -1,33 +1,33 @@
-Interface Versions and PDO Revisions\r
-====================================\r
-\r
-It is important that introduction of a new API, introduction of a new\r
-version of an existing API or retirement of an old version of an API is\r
-managed carefully to avoid incompatibilities between clients and\r
-providers. The general API versioning policy is described below:\r
-\r
-Each distinct set of API versions exported by a bus driver maps to a PDO\r
-revision. The DeviceID of each PDO created will specify the latest\r
-revision supported and all others will be contained within the\r
-HardwareIDs and CompatibleIDs. When a new version of an API is added,\r
-a new PDO revision must be added. When a version of an API is removed\r
-then ALL revisions that API version maps to must be removed. The mapping\r
-of interface versions to PDO revisions is specified in the header file\r
-include/revision.h in the bus driver source repository.\r
-\r
-Whe introducing a new version of an interface in a bus driver it is good\r
-practice to continue to support the previous version so it is not\r
-necessary to simultaneously introduce a new PDO revision and retire a\r
-previous one that child drivers may still be binding to.\r
-Child drivers should, of course, always be built to use the latest\r
-interface versions (which can be copied from the include directory in the\r
-source repository of the bus driver providing them) but it may take\r
-some time to make the necessary changes and deploy new builds of child\r
-drivers and so some overlap is desirable.\r
-\r
-To try to avoid installation of a version of a bus driver that is\r
-incompatible with child drivers installed on a system. There is a check\r
-in the pre-install phase in the co-intaller which compares the\r
-MatchingDeviceId values for each child driver against the table in\r
-include/revision.h in the bus driver source to make sure that the\r
-matching revision number is present.\r
+Interface Versions and PDO Revisions
+====================================
+
+It is important that introduction of a new API, introduction of a new
+version of an existing API or retirement of an old version of an API is
+managed carefully to avoid incompatibilities between clients and
+providers. The general API versioning policy is described below:
+
+Each distinct set of API versions exported by a bus driver maps to a PDO
+revision. The DeviceID of each PDO created will specify the latest
+revision supported and all others will be contained within the
+HardwareIDs and CompatibleIDs. When a new version of an API is added,
+a new PDO revision must be added. When a version of an API is removed
+then ALL revisions that API version maps to must be removed. The mapping
+of interface versions to PDO revisions is specified in the header file
+include/revision.h in the bus driver source repository.
+
+Whe introducing a new version of an interface in a bus driver it is good
+practice to continue to support the previous version so it is not
+necessary to simultaneously introduce a new PDO revision and retire a
+previous one that child drivers may still be binding to.
+Child drivers should, of course, always be built to use the latest
+interface versions (which can be copied from the include directory in the
+source repository of the bus driver providing them) but it may take
+some time to make the necessary changes and deploy new builds of child
+drivers and so some overlap is desirable.
+
+To try to avoid installation of a version of a bus driver that is
+incompatible with child drivers installed on a system. There is a check
+in the pre-install phase in the co-intaller which compares the
+MatchingDeviceId values for each child driver against the table in
+include/revision.h in the bus driver source to make sure that the
+matching revision number is present.
index 08be5e0f9febc4a692e4853d4923f7104ace521a..93a88510929662e9f571d89347b1ea53ed6a8237 100644 (file)
@@ -280,9 +280,9 @@ typedef NTSTATUS
     IN  ULONG           Length
     );
 
-// {D215E1B5-8C38-420A-AEA6-02520DF3A621}\r
-DEFINE_GUID(GUID_XENHID_HID_INTERFACE,\r
-0xd215e1b5, 0x8c38, 0x420a, 0xae, 0xa6, 0x2, 0x52, 0xd, 0xf3, 0xa6, 0x21);\r
+// {D215E1B5-8C38-420A-AEA6-02520DF3A621}
+DEFINE_GUID(GUID_XENHID_HID_INTERFACE,
+0xd215e1b5, 0x8c38, 0x420a, 0xae, 0xa6, 0x2, 0x52, 0xd, 0xf3, 0xa6, 0x21);
 
 /*! \struct _XENHID_HID_INTERFACE_V1
     \brief HID interface version 1
index 01052384c8a4308a36618c3293acca7a400868a7..eacc39b488b6a2ae1dcd450f5d9ab1b2fa4a340c 100644 (file)
@@ -51,61 +51,61 @@ typedef struct _XENVKBD_HID_ABSMOUSE {
 
 static const UCHAR VkbdReportDescriptor[] = {
     /* ReportId 1 : Keyboard                                               */
-    0x05, 0x01,         /* USAGE_PAGE (Generic Desktop)                    */\r
-    0x09, 0x06,         /* USAGE (Keyboard 6)                              */\r
-    0xa1, 0x01,         /* COLLECTION (Application)                        */\r
-    0x85, 0x01,         /*   REPORT_ID (1)                                 */\r
-    0x05, 0x07,         /*   USAGE_PAGE (Keyboard)                         */\r
-    0x19, 0xe0,         /*   USAGE_MINIMUM (Keyboard LeftControl)          */\r
-    0x29, 0xe7,         /*   USAGE_MAXIMUM (Keyboard Right GUI)            */\r
-    0x15, 0x00,         /*   LOGICAL_MINIMUM (0)                           */\r
-    0x25, 0x01,         /*   LOGICAL_MAXIMUM (1)                           */\r
-    0x75, 0x01,         /*   REPORT_SIZE (1)                               */\r
-    0x95, 0x08,         /*   REPORT_COUNT (8)                              */\r
-    0x81, 0x02,         /*   INPUT (Data,Var,Abs)                          */\r
-    0x95, 0x06,         /*   REPORT_COUNT (6)                              */\r
-    0x75, 0x08,         /*   REPORT_SIZE (8)                               */\r
-    0x15, 0x00,         /*   LOGICAL_MINIMUM (0)                           */\r
-    0x25, 0x65,         /*   LOGICAL_MAXIMUM (101)                         */\r
-    0x05, 0x07,         /*   USAGE_PAGE (Keyboard)                         */\r
-    0x19, 0x00,         /*   USAGE_MINIMUM (Reserved (no event indicated)) */\r
-    0x29, 0x65,         /*   USAGE_MAXIMUM (Keyboard Application)          */\r
-    0x81, 0x00,         /*   INPUT (Data,Ary,Abs)                          */\r
+    0x05, 0x01,         /* USAGE_PAGE (Generic Desktop)                    */
+    0x09, 0x06,         /* USAGE (Keyboard 6)                              */
+    0xa1, 0x01,         /* COLLECTION (Application)                        */
+    0x85, 0x01,         /*   REPORT_ID (1)                                 */
+    0x05, 0x07,         /*   USAGE_PAGE (Keyboard)                         */
+    0x19, 0xe0,         /*   USAGE_MINIMUM (Keyboard LeftControl)          */
+    0x29, 0xe7,         /*   USAGE_MAXIMUM (Keyboard Right GUI)            */
+    0x15, 0x00,         /*   LOGICAL_MINIMUM (0)                           */
+    0x25, 0x01,         /*   LOGICAL_MAXIMUM (1)                           */
+    0x75, 0x01,         /*   REPORT_SIZE (1)                               */
+    0x95, 0x08,         /*   REPORT_COUNT (8)                              */
+    0x81, 0x02,         /*   INPUT (Data,Var,Abs)                          */
+    0x95, 0x06,         /*   REPORT_COUNT (6)                              */
+    0x75, 0x08,         /*   REPORT_SIZE (8)                               */
+    0x15, 0x00,         /*   LOGICAL_MINIMUM (0)                           */
+    0x25, 0x65,         /*   LOGICAL_MAXIMUM (101)                         */
+    0x05, 0x07,         /*   USAGE_PAGE (Keyboard)                         */
+    0x19, 0x00,         /*   USAGE_MINIMUM (Reserved (no event indicated)) */
+    0x29, 0x65,         /*   USAGE_MAXIMUM (Keyboard Application)          */
+    0x81, 0x00,         /*   INPUT (Data,Ary,Abs)                          */
     0xc0,               /* END_COLLECTION                                  */
     /* Report Id 2 : Absolute Mouse                                        */
-    0x05, 0x01,         /* USAGE_PAGE (Generic Desktop)                    */\r
-    0x09, 0x02,         /* USAGE (Mouse 2)                                 */\r
-    0xa1, 0x01,         /* COLLECTION (Application)                        */\r
-    0x85, 0x02,         /*   REPORT_ID (2)                                 */\r
-    0x09, 0x01,         /*   USAGE (Pointer)                               */\r
-    0xa1, 0x00,         /*   COLLECTION (Physical)                         */\r
-    0x05, 0x09,         /*     USAGE_PAGE (Button)                         */\r
-    0x19, 0x01,         /*     USAGE_MINIMUM (Button 1)                    */\r
-    0x29, 0x05,         /*     USAGE_MAXIMUM (Button 5)                    */\r
-    0x15, 0x00,         /*     LOGICAL_MINIMUM (0)                         */\r
-    0x25, 0x01,         /*     LOGICAL_MAXIMUM (1)                         */\r
-    0x95, 0x05,         /*     REPORT_COUNT (5)                            */\r
-    0x75, 0x01,         /*     REPORT_SIZE (1)                             */\r
-    0x81, 0x02,         /*     INPUT (Data,Var,Abs)                        */\r
-    0x95, 0x01,         /*     REPORT_COUNT (1)                            */\r
-    0x75, 0x03,         /*     REPORT_SIZE (3)                             */\r
-    0x81, 0x03,         /*     INPUT (Cnst,Var,Abs)                        */\r
-    0x05, 0x01,         /*     USAGE_PAGE (Generic Desktop)                */\r
-    0x09, 0x30,         /*     USAGE (X)                                   */\r
-    0x09, 0x31,         /*     USAGE (Y)                                   */\r
-    0x16, 0x00, 0x00,   /*     LOGICAL_MINIMUM (0)                         */\r
-    0x26, 0xff, 0x7f,   /*     LOGICAL_MAXIMUM (32767)                     */\r
-    0x75, 0x10,         /*     REPORT_SIZE (16)                            */\r
-    0x95, 0x02,         /*     REPORT_COUNT (2)                            */\r
-    0x81, 0x02,         /*     INPUT (Data,Var,Abs)                        */\r
-    0x09, 0x38,         /*     USAGE (Z)                                   */\r
-    0x15, 0x81,         /*     LOGICAL_MINIMUM (-127)                      */\r
-    0x25, 0x7f,         /*     LOGICAL_MAXIMUM (127)                       */\r
-    0x75, 0x08,         /*     REPORT_SIZE (8)                             */\r
-    0x95, 0x01,         /*     REPORT_COUNT (1)                            */\r
-    0x81, 0x06,         /*     INPUT (Data,Var,Rel)                        */\r
-    0xc0,               /*   END_COLLECTION                                */\r
-    0xc0                /* END_COLLECTION                                  */\r
+    0x05, 0x01,         /* USAGE_PAGE (Generic Desktop)                    */
+    0x09, 0x02,         /* USAGE (Mouse 2)                                 */
+    0xa1, 0x01,         /* COLLECTION (Application)                        */
+    0x85, 0x02,         /*   REPORT_ID (2)                                 */
+    0x09, 0x01,         /*   USAGE (Pointer)                               */
+    0xa1, 0x00,         /*   COLLECTION (Physical)                         */
+    0x05, 0x09,         /*     USAGE_PAGE (Button)                         */
+    0x19, 0x01,         /*     USAGE_MINIMUM (Button 1)                    */
+    0x29, 0x05,         /*     USAGE_MAXIMUM (Button 5)                    */
+    0x15, 0x00,         /*     LOGICAL_MINIMUM (0)                         */
+    0x25, 0x01,         /*     LOGICAL_MAXIMUM (1)                         */
+    0x95, 0x05,         /*     REPORT_COUNT (5)                            */
+    0x75, 0x01,         /*     REPORT_SIZE (1)                             */
+    0x81, 0x02,         /*     INPUT (Data,Var,Abs)                        */
+    0x95, 0x01,         /*     REPORT_COUNT (1)                            */
+    0x75, 0x03,         /*     REPORT_SIZE (3)                             */
+    0x81, 0x03,         /*     INPUT (Cnst,Var,Abs)                        */
+    0x05, 0x01,         /*     USAGE_PAGE (Generic Desktop)                */
+    0x09, 0x30,         /*     USAGE (X)                                   */
+    0x09, 0x31,         /*     USAGE (Y)                                   */
+    0x16, 0x00, 0x00,   /*     LOGICAL_MINIMUM (0)                         */
+    0x26, 0xff, 0x7f,   /*     LOGICAL_MAXIMUM (32767)                     */
+    0x75, 0x10,         /*     REPORT_SIZE (16)                            */
+    0x95, 0x02,         /*     REPORT_COUNT (2)                            */
+    0x81, 0x02,         /*     INPUT (Data,Var,Abs)                        */
+    0x09, 0x38,         /*     USAGE (Z)                                   */
+    0x15, 0x81,         /*     LOGICAL_MINIMUM (-127)                      */
+    0x25, 0x7f,         /*     LOGICAL_MAXIMUM (127)                       */
+    0x75, 0x08,         /*     REPORT_SIZE (8)                             */
+    0x95, 0x01,         /*     REPORT_COUNT (1)                            */
+    0x81, 0x06,         /*     INPUT (Data,Var,Rel)                        */
+    0xc0,               /*   END_COLLECTION                                */
+    0xc0                /* END_COLLECTION                                  */
 
 };
 
@@ -126,134 +126,134 @@ static const HID_DEVICE_ATTRIBUTES VkbdDeviceAttributes = {
 };
 
 static const USHORT VkbdKeyCodeToUsage[] = {
-    0x00, // KEY_RESERVED\r
-    0x29, // KEY_ESC\r
-    0x1E, // KEY_1\r
-    0x1F, // KEY_2\r
-    0x20, // KEY_3\r
-    0x21, // KEY_4\r
-    0x22, // KEY_5\r
-    0x23, // KEY_6\r
-    0x24, // KEY_7\r
-    0x25, // KEY_8\r
-    0x26, // KEY_9\r
-    0x27, // KEY_0\r
-    0x2D, // KEY_MINUS\r
-    0x2E, // KEY_EQUAL\r
-    0x2A, // KEY_BACKSPACE\r
-    0x2B, // KEY_TAB\r
-    0x14, // KEY_Q\r
-    0x1A, // KEY_W\r
-    0x08, // KEY_E\r
-    0x15, // KEY_R\r
-    0x17, // KEY_T\r
-    0x1C, // KEY_Y\r
-    0x18, // KEY_U\r
-    0x0C, // KEY_I\r
-    0x12, // KEY_O\r
-    0x13, // KEY_P\r
-    0x2F, // KEY_LEFTBRACE\r
-    0x30, // KEY_RIGHTBRACE\r
-    0x29, // KEY_ENTER\r
-    0xE0, // KEY_LEFTCTRL\r
-    0x04, // KEY_A\r
-    0x16, // KEY_S\r
-    0x07, // KEY_D\r
-    0x09, // KEY_F\r
-    0x0A, // KEY_G\r
-    0x0B, // KEY_H\r
-    0x0D, // KEY_J\r
-    0x0E, // KEY_K\r
-    0x0F, // KEY_L\r
-    0x33, // KEY_SEMICOLON\r
-    0x24, // KEY_APOSTROPHE\r
-    0x35, // KEY_GRAVE\r
-    0xE1, // KEY_LEFTSHIFT\r
-    0x31, // KEY_BACKSLASH\r
-    0x1D, // KEY_Z\r
-    0x1B, // KEY_X\r
-    0x06, // KEY_C\r
-    0x19, // KEY_V\r
-    0x05, // KEY_B\r
-    0x11, // KEY_N\r
-    0x10, // KEY_M\r
-    0x36, // KEY_COMMA\r
-    0x37, // KEY_DOT\r
-    0x38, // KEY_SLASH\r
-    0xE5, // KEY_RIGHTSHIFT\r
-    0x55, // KEY_KPASTERISK\r
-    0xE2, // KEY_LEFTALT\r
-    0x2C, // KEY_SPACE\r
-    0x39, // KEY_CAPSLOCK\r
-    0x3A, // KEY_F1\r
-    0x3B, // KEY_F2\r
-    0x3C, // KEY_F3\r
-    0x3D, // KEY_F4\r
-    0x3E, // KEY_F5\r
-    0x3F, // KEY_F6\r
-    0x40, // KEY_F7\r
-    0x41, // KEY_F8\r
-    0x42, // KEY_F9\r
-    0x43, // KEY_F10\r
-    0x53, // KEY_NUMLOCK\r
-    0x47, // KEY_SCROLLLOCK\r
-    0x5F, // KEY_KP7\r
-    0x60, // KEY_KP8\r
-    0x61, // KEY_KP9\r
-    0x56, // KEY_KPMINUS\r
-    0x5C, // KEY_KP4\r
-    0x5D, // KEY_KP5\r
-    0x5E, // KEY_KP6\r
-    0x57, // KEY_KPPLUS\r
-    0x59, // KEY_KP1\r
-    0x5A, // KEY_KP2\r
-    0x5B, // KEY_KP3\r
-    0x62, // KEY_KP0\r
-    0x63, // KEY_KPDOT\r
-    0x00, // gap in sequence\r
-    0x8F, // KEY_ZENKAKUHANKAKU\r
-    0x64, // KEY_102ND\r
-    0x44, // KEY_F11\r
-    0x45, // KEY_F12\r
-    0x87, // KEY_RO\r
-    0x88, // KEY_KATAKANA\r
-    0x8A, // KEY_HIRAGANA\r
-    0x8B, // KEY_HENKAN\r
-    0x8C, // KEY_KATAKANAHIRAGANA\r
-    0x8D, // KEY_MUHENKAN\r
-    0x8E, // KEY_KPJPCOMMA\r
-    0x58, // KEY_KPENTER\r
-    0xE4, // KEY_RIGHTCTRL\r
-    0x54, // KEY_KPSLASH\r
-    0x48, // KEY_SYSRQ\r
-    0xE6, // KEY_RIGHTALT\r
-    0x00, // gap in sequence\r
-    0x4A, // KEY_HOME\r
-    0x52, // KEY_UP\r
-    0x4B, // KEY_PAGEUP\r
-    0x50, // KEY_LEFT\r
-    0x4F, // KEY_RIGHT\r
-    0x4D, // KEY_END\r
-    0x51, // KEY_DOWN\r
-    0x4E, // KEY_PAGEDOWN\r
-    0x49, // KEY_INSERT\r
-    0x4D, // KEY_DELETE\r
-    0x00, // gap in sequence\r
-    0x7F, // KEY_MUTE\r
-    0x81, // KEY_VOLUMEDOWN\r
-    0x80, // KEY_VOLUMEUP\r
-    0x66, // KEY_POWER\r
-    0x67, // KEY_KPEQUAL\r
-    0x00, // KEY_KPPLUSMINUS\r
-    0x00, // gap in sequence\r
-    0x00, // gap in sequence\r
-    0x00, // gap in sequence\r
-    0x85, // KEY_KPCOMMA\r
-    0x90, // KEY_HANGEUL\r
-    0x91, // KEY_HANJA\r
-    0x89, // KEY_YEN\r
-    0xE3, // KEY_LEFTMETA\r
-    0xE7, // KEY_RIGHTMETA\r
+    0x00, // KEY_RESERVED
+    0x29, // KEY_ESC
+    0x1E, // KEY_1
+    0x1F, // KEY_2
+    0x20, // KEY_3
+    0x21, // KEY_4
+    0x22, // KEY_5
+    0x23, // KEY_6
+    0x24, // KEY_7
+    0x25, // KEY_8
+    0x26, // KEY_9
+    0x27, // KEY_0
+    0x2D, // KEY_MINUS
+    0x2E, // KEY_EQUAL
+    0x2A, // KEY_BACKSPACE
+    0x2B, // KEY_TAB
+    0x14, // KEY_Q
+    0x1A, // KEY_W
+    0x08, // KEY_E
+    0x15, // KEY_R
+    0x17, // KEY_T
+    0x1C, // KEY_Y
+    0x18, // KEY_U
+    0x0C, // KEY_I
+    0x12, // KEY_O
+    0x13, // KEY_P
+    0x2F, // KEY_LEFTBRACE
+    0x30, // KEY_RIGHTBRACE
+    0x29, // KEY_ENTER
+    0xE0, // KEY_LEFTCTRL
+    0x04, // KEY_A
+    0x16, // KEY_S
+    0x07, // KEY_D
+    0x09, // KEY_F
+    0x0A, // KEY_G
+    0x0B, // KEY_H
+    0x0D, // KEY_J
+    0x0E, // KEY_K
+    0x0F, // KEY_L
+    0x33, // KEY_SEMICOLON
+    0x24, // KEY_APOSTROPHE
+    0x35, // KEY_GRAVE
+    0xE1, // KEY_LEFTSHIFT
+    0x31, // KEY_BACKSLASH
+    0x1D, // KEY_Z
+    0x1B, // KEY_X
+    0x06, // KEY_C
+    0x19, // KEY_V
+    0x05, // KEY_B
+    0x11, // KEY_N
+    0x10, // KEY_M
+    0x36, // KEY_COMMA
+    0x37, // KEY_DOT
+    0x38, // KEY_SLASH
+    0xE5, // KEY_RIGHTSHIFT
+    0x55, // KEY_KPASTERISK
+    0xE2, // KEY_LEFTALT
+    0x2C, // KEY_SPACE
+    0x39, // KEY_CAPSLOCK
+    0x3A, // KEY_F1
+    0x3B, // KEY_F2
+    0x3C, // KEY_F3
+    0x3D, // KEY_F4
+    0x3E, // KEY_F5
+    0x3F, // KEY_F6
+    0x40, // KEY_F7
+    0x41, // KEY_F8
+    0x42, // KEY_F9
+    0x43, // KEY_F10
+    0x53, // KEY_NUMLOCK
+    0x47, // KEY_SCROLLLOCK
+    0x5F, // KEY_KP7
+    0x60, // KEY_KP8
+    0x61, // KEY_KP9
+    0x56, // KEY_KPMINUS
+    0x5C, // KEY_KP4
+    0x5D, // KEY_KP5
+    0x5E, // KEY_KP6
+    0x57, // KEY_KPPLUS
+    0x59, // KEY_KP1
+    0x5A, // KEY_KP2
+    0x5B, // KEY_KP3
+    0x62, // KEY_KP0
+    0x63, // KEY_KPDOT
+    0x00, // gap in sequence
+    0x8F, // KEY_ZENKAKUHANKAKU
+    0x64, // KEY_102ND
+    0x44, // KEY_F11
+    0x45, // KEY_F12
+    0x87, // KEY_RO
+    0x88, // KEY_KATAKANA
+    0x8A, // KEY_HIRAGANA
+    0x8B, // KEY_HENKAN
+    0x8C, // KEY_KATAKANAHIRAGANA
+    0x8D, // KEY_MUHENKAN
+    0x8E, // KEY_KPJPCOMMA
+    0x58, // KEY_KPENTER
+    0xE4, // KEY_RIGHTCTRL
+    0x54, // KEY_KPSLASH
+    0x48, // KEY_SYSRQ
+    0xE6, // KEY_RIGHTALT
+    0x00, // gap in sequence
+    0x4A, // KEY_HOME
+    0x52, // KEY_UP
+    0x4B, // KEY_PAGEUP
+    0x50, // KEY_LEFT
+    0x4F, // KEY_RIGHT
+    0x4D, // KEY_END
+    0x51, // KEY_DOWN
+    0x4E, // KEY_PAGEDOWN
+    0x49, // KEY_INSERT
+    0x4D, // KEY_DELETE
+    0x00, // gap in sequence
+    0x7F, // KEY_MUTE
+    0x81, // KEY_VOLUMEDOWN
+    0x80, // KEY_VOLUMEUP
+    0x66, // KEY_POWER
+    0x67, // KEY_KPEQUAL
+    0x00, // KEY_KPPLUSMINUS
+    0x00, // gap in sequence
+    0x00, // gap in sequence
+    0x00, // gap in sequence
+    0x85, // KEY_KPCOMMA
+    0x90, // KEY_HANGEUL
+    0x91, // KEY_HANJA
+    0x89, // KEY_YEN
+    0xE3, // KEY_LEFTMETA
+    0xE7, // KEY_RIGHTMETA
 };
 
 #endif  // _XENVKBD_VKBD_H