hid: Implement support for side and extra buttons
authorNoah Bergbauer <noah@statshelix.com>
Fri, 26 Nov 2021 14:04:37 +0000 (15:04 +0100)
committerLaurent Vivier <laurent@vivier.eu>
Tue, 22 Feb 2022 16:15:36 +0000 (17:15 +0100)
Simply set the respective bits and update the descriptor accordingly.

Signed-off-by: Noah Bergbauer <noah@statshelix.com>
Acked-by: Gerd Hoffmann <kraxel@redhat.com>
Message-Id: <20211126140437.79745-1-noah@statshelix.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
hw/input/hid.c
hw/usb/dev-hid.c

index 8aab0521f405c2f8e083189da3e0d52911eceb7a..e7ecebdf8f8814ad332da8d2ae365df9d63cfd3e 100644 (file)
@@ -114,6 +114,8 @@ static void hid_pointer_event(DeviceState *dev, QemuConsole *src,
         [INPUT_BUTTON_LEFT]   = 0x01,
         [INPUT_BUTTON_RIGHT]  = 0x02,
         [INPUT_BUTTON_MIDDLE] = 0x04,
+        [INPUT_BUTTON_SIDE] = 0x08,
+        [INPUT_BUTTON_EXTRA] = 0x10,
     };
     HIDState *hs = (HIDState *)dev;
     HIDPointerEvent *e;
index 1c7ae97c3033442dba820db492bdd04cba7c6299..bdd6d1ffafe432b75a5321305c5d0193e3e27bb1 100644 (file)
@@ -461,14 +461,14 @@ static const uint8_t qemu_mouse_hid_report_descriptor[] = {
     0xa1, 0x00,                /*   Collection (Physical) */
     0x05, 0x09,                /*     Usage Page (Button) */
     0x19, 0x01,                /*     Usage Minimum (1) */
-    0x29, 0x03,                /*     Usage Maximum (3) */
+    0x29, 0x05,                /*     Usage Maximum (5) */
     0x15, 0x00,                /*     Logical Minimum (0) */
     0x25, 0x01,                /*     Logical Maximum (1) */
-    0x95, 0x03,                /*     Report Count (3) */
+    0x95, 0x05,                /*     Report Count (5) */
     0x75, 0x01,                /*     Report Size (1) */
     0x81, 0x02,                /*     Input (Data, Variable, Absolute) */
     0x95, 0x01,                /*     Report Count (1) */
-    0x75, 0x05,                /*     Report Size (5) */
+    0x75, 0x03,                /*     Report Size (3) */
     0x81, 0x01,                /*     Input (Constant) */
     0x05, 0x01,                /*     Usage Page (Generic Desktop) */
     0x09, 0x30,                /*     Usage (X) */