NetBSD-Bugs archive

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

Re: kern/55161 (Add support for Microsoft Wireless Desktop 900 Mouse)



The following reply was made to PR kern/55161; it has been noted by GNATS.

From: MB <code%boerschig.net@localhost>
To: gnats-bugs%netbsd.org@localhost, kern-bug-people%netbsd.org@localhost,
 netbsd-bugs%netbsd.org@localhost, gnats-admin%netbsd.org@localhost, jdolecek%NetBSD.org@localhost
Cc: 
Subject: Re: kern/55161 (Add support for Microsoft Wireless Desktop 900 Mouse)
Date: Sat, 11 Apr 2020 20:13:39 +0200

 On 11.04.20 08:58, jdolecek%NetBSD.org@localhost wrote:
 > Synopsis: Add support for Microsoft Wireless Desktop 900 Mouse
 > 
 > State-Changed-From-To: open->closed
 > State-Changed-By: jdolecek%NetBSD.org@localhost
 > State-Changed-When: Sat, 11 Apr 2020 06:58:18 +0000
 > State-Changed-Why:
 > Applied, thanks.
 > 
 > 
 > 
 
 Sorry, I was a bit quick to submit the patch.
 I tested with TWM and everything seemed to work.
 However, after building XFCE4 it showed that x/y mouse movement also
 triggered mouse wheel events.
 
 So,I dumped the raw hidms_intr buffer with test input of the separate
 axes, wheel and buttons and double checked that the offsets are right.
 The device uses reports with sizes of 16, so Z and W were way off.
 The patch below introduces woffset, because otherwise W would start at
 Z+8 instead of Z+16 (the wrong offset doesn't seem to do any harm, but
 just to be correct).
 It now attaches as:
 [     8.414956] hidms_attach: X 8/16
 [     8.414956] hidms_attach: Y 24/16
 [     8.414956] hidms_attach: Z 40/16
 [     8.414956] hidms_attach: W 56/16
 
 
 Sorry for the hassle.
 
 diff --git a/sys/dev/usb/ums.c b/sys/dev/usb/ums.c
 index 2cac7cd1f1ee..14d2538e7df5 100644
 --- a/sys/dev/usb/ums.c
 +++ b/sys/dev/usb/ums.c
 @@ -164,6 +164,7 @@ ums_attach(device_t parent, device_t self, void *aux)
 
         if (uha->uiaa->uiaa_vendor == USB_VENDOR_MICROSOFT) {
                 int fixpos;
 +               int woffset=8;
                 /*
                  * The Microsoft Wireless Laser Mouse 6000 v2.0 and the
                  * Microsoft Comfort Mouse 2.0 report a bad position for
 @@ -176,6 +177,10 @@ ums_attach(device_t parent, device_t self, void *aux)
                 case USB_PRODUCT_MICROSOFT_NATURAL_6000:
                         fixpos = 24;
                         break;
 +               case USB_PRODUCT_MICROSOFT_24GHZ_XCVR80:
 +                       fixpos = 40;
 +                       woffset = sc->sc_ms.hidms_loc_z.size;
 +                       break;
                 case USB_PRODUCT_MICROSOFT_CM6000:
                         fixpos = 40;
                         break;
 @@ -190,7 +195,7 @@ ums_attach(device_t parent, device_t self, void *aux)
                         if ((sc->sc_ms.flags & HIDMS_W) &&
                             sc->sc_ms.hidms_loc_w.pos == 0)
                                 sc->sc_ms.hidms_loc_w.pos =
 -                                   sc->sc_ms.hidms_loc_z.pos + 8;
 +                                   sc->sc_ms.hidms_loc_z.pos + woffset;
                 }
         }
 



Home | Main Index | Thread Index | Old Index