Index: /trunk/src/VBox/Devices/Input/UsbMouse.cpp
===================================================================
--- /trunk/src/VBox/Devices/Input/UsbMouse.cpp	(revision 46515)
+++ /trunk/src/VBox/Devices/Input/UsbMouse.cpp	(revision 46516)
@@ -197,6 +197,8 @@
 typedef struct USBHIDT_REPORT
 {
+    uint8_t     rid;
     uint8_t     btn;
     int8_t      dz;
+    int8_t      dummy;
     uint16_t    cx;
     uint16_t    cy;
@@ -300,4 +302,6 @@
  * properly.
  */
+#define REPORTID_MOUSE 1
+
 static const uint8_t g_UsbHidTReportDesc[] =
 {
@@ -305,4 +309,5 @@
     /* Usage */                     0x09, 0x02,     /* Mouse */
     /* Collection */                0xA1, 0x01,     /* Application */
+    /* Report ID */                 0x85, REPORTID_MOUSE,
     /* Usage */                     0x09, 0x01,     /* Pointer */
     /* Collection */                0xA1, 0x00,     /* Physical */
@@ -325,4 +330,6 @@
     /* Report Count */              0x95, 0x01,     /* 1 */
     /* Input */                     0x81, 0x06,     /* Data, Value, Relative, Bit field */
+    /* Report Count */              0x95, 0x01,     /* 1 (padding byte) */
+    /* Input */                     0x81, 0x03,     /* Constant, Value, Absolute, Bit field */
     /* Usage Page */                0x05, 0x01,     /* Generic Desktop */
     /* Usage */                     0x09, 0x30,     /* X */
@@ -725,4 +732,5 @@
     if (isAbsolute)
     {
+        pReport->t.rid = REPORTID_MOUSE;
         pReport->t.btn = pAccumulated->btn;
         pReport->t.cx  = pAccumulated->dX;
