Author: thompsa
Date: Wed May 12 22:43:33 2010
New Revision: 208009
URL: http://svn.freebsd.org/changeset/base/208009

Log:
  Enable support for mouse panning wheels.
  
  Submitted by: Henry Hu

Modified:
  head/sys/dev/usb/input/ums.c
  head/sys/dev/usb/usbhid.h

Modified: head/sys/dev/usb/input/ums.c
==============================================================================
--- head/sys/dev/usb/input/ums.c        Wed May 12 22:42:35 2010        
(r208008)
+++ head/sys/dev/usb/input/ums.c        Wed May 12 22:43:33 2010        
(r208009)
@@ -286,6 +286,12 @@ ums_intr_callback(struct usb_xfer *xfer,
                        DPRINTFN(6, "x:%d y:%d z:%d t:%d w:%d buttons:0x%08x\n",
                            dx, dy, dz, dt, dw, buttons);
 
+                       /* translate T-axis into button presses until further */
+                       if (dt > 0)
+                               buttons |= 1UL << 3;
+                       else if (dt < 0)
+                               buttons |= 1UL << 4;
+
                        sc->sc_status.button = buttons;
                        sc->sc_status.dx += dx;
                        sc->sc_status.dy += dy;
@@ -454,6 +460,12 @@ ums_hid_parse(struct ums_softc *sc, devi
                if ((flags & MOUSE_FLAGS_MASK) == MOUSE_FLAGS) {
                        info->sc_flags |= UMS_FLAG_T_AXIS;
                }
+       } else if (hid_locate(buf, len, HID_USAGE2(HUP_CONSUMER,
+               HUC_AC_PAN), hid_input, index, &info->sc_loc_t,
+               &flags, &info->sc_iid_t)) {
+
+               if ((flags & MOUSE_FLAGS_MASK) == MOUSE_FLAGS)
+                       info->sc_flags |= UMS_FLAG_T_AXIS;
        }
        /* figure out the number of buttons */
 

Modified: head/sys/dev/usb/usbhid.h
==============================================================================
--- head/sys/dev/usb/usbhid.h   Wed May 12 22:42:35 2010        (r208008)
+++ head/sys/dev/usb/usbhid.h   Wed May 12 22:43:33 2010        (r208009)
@@ -156,6 +156,9 @@ struct usb_hid_descriptor {
 #define        HUD_ERASER              0x0045
 #define        HUD_TABLET_PICK         0x0046
 
+/* Usages, Consumer */
+#define        HUC_AC_PAN              0x0238
+
 #define        HID_USAGE2(p,u) (((p) << 16) | (u))
 
 #define        UHID_INPUT_REPORT 0x01
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to