qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] Gentlemen we have absolute movement! was:Absolute USB-H


From: Brad Campbell
Subject: Re: [Qemu-devel] Gentlemen we have absolute movement! was:Absolute USB-HID device musings (was Re: VNC Terminal Server)
Date: Mon, 10 Apr 2006 03:14:20 +0400
User-agent: Thunderbird 1.6a1 (X11/20060214)

Anthony Liguori wrote:

Final one of the night. This patch disables relative mouse reporting and disables grab automatically the first time SDL detects that the absolute mouse was enabled. Needs a lot of cleanup but I'm very happy with the user experience on this one.


Wish I'd just gone to bed now..
Heres a patch against your last one to implement wheel support.

Brad
--
"Human beings, who are almost unique in having the ability
to learn from the experience of others, are also remarkable
for their apparent disinclination to do so." -- Douglas Adams
diff -ur qemu-clean/hw/usb-hid.c qemu/hw/usb-hid.c
--- qemu-clean/hw/usb-hid.c     2006-04-10 02:57:46.000000000 +0400
+++ qemu/hw/usb-hid.c   2006-04-10 03:11:58.000000000 +0400
@@ -101,7 +101,7 @@
         0x00,        /*  u8 country_code */
         0x01,        /*  u8 num_descriptors */
         0x22,        /*  u8 type; Report */
-        53, 0,       /*  u16 len */
+        65, 0,       /*  u16 len */
 
        /* one endpoint (status change endpoint) */
        0x07,       /*  u8  ep_bLength; */
@@ -145,14 +145,15 @@
         0x09, 0x31, /* Usage Y */
         0x15, 0x00, /* Logical Minimum 0 */
         0x27, 0xFF, 0xFF, 0x00, 0x00, /* Logical Maximum 0xffff */
-        0x75, 0x10, /* Report Size 32 */
+        0x75, 0x10, /* Report Size 16 */
         0x95, 0x02, /* Report Count 2 */
         0x81, 0x02, /* Input (Data, Var, Abs) */
-//      0x09, 0x32, /* Usage Z */
-//      0x15, 0x81, /* Logical Minimum -127 */
-//      0x25, 0x7F, /* Logical Maximum 127 */
-//      0x75, 0x08, /* Report Size 8 */
-//      0x95, 0x01, /* Report Count 1 */
+        0x09, 0x38, /* Usage Wheel */
+        0x15, 0x81, /* Logical Minimum -127 */
+        0x25, 0x7F, /* Logical Maximum 127 */
+        0x75, 0x08, /* Report Size 8 */
+        0x95, 0x01, /* Report Count 1 */
+        0x81, 0x02, /* Input (Data, Var, Rel) */
         0xC0,       /* End Collection */
         0xC0,       /* End Collection */
 };
@@ -224,14 +225,18 @@
        qemu_add_mouse_event_handler(NULL, NULL);
        absolute_mouse = 1;
     }
-
+/*
     dx = int_clamp(s->dx, -128, 127);
     dy = int_clamp(s->dy, -128, 127);
-    dz = int_clamp(s->dz, -128, 127);
 
     s->dx -= dx;
     s->dy -= dy;
+*/
+
+    dz = int_clamp(s->dz, -128, 127);
     s->dz -= dz;
+/* Appears we have to invert the wheel direction */
+    dz = 0 - dz;
     b = 0;
     if (s->buttons_state & MOUSE_EVENT_LBUTTON)
         b |= 0x01;
@@ -245,7 +250,8 @@
     buf[2] = s->X >> 8;
     buf[3] = s->Y & 0xff;
     buf[4] = s->Y >> 8;
-    l = 5;
+    buf[5] = dz;
+    l = 6;
 
     return l;
 }

reply via email to

[Prev in Thread] Current Thread [Next in Thread]