The new input-processing functions of wsmouse seem to work well
for touchpads, and it might be time to update the mouse drivers
now. I start with the two drivers that I could test myself, hidms
(ums) and pms.

Please note that hidms can mix, in principle, absolute and relative
coordinates. The new version doesn't change this property. I don't
know whether it is really necessary.

OK?


Index: dev/hid/hidms.c
===================================================================
RCS file: /cvs/src/sys/dev/hid/hidms.c,v
retrieving revision 1.2
diff -u -p -r1.2 hidms.c
--- dev/hid/hidms.c     10 Feb 2016 05:49:50 -0000      1.2
+++ dev/hid/hidms.c     14 May 2016 13:47:06 -0000
@@ -331,7 +331,6 @@ hidms_input(struct hidms *ms, uint8_t *d
 {
        int dx, dy, dz, dw;
        u_int32_t buttons = 0;
-       int flags;
        int i, s;
 
        DPRINTFN(5,("hidms_input: len=%d\n", len));
@@ -358,12 +357,6 @@ hidms_input(struct hidms *ms, uint8_t *d
                        return;
        }
 
-       flags = WSMOUSE_INPUT_DELTA;
-       if (ms->sc_flags & HIDMS_ABSX)
-               flags |= WSMOUSE_INPUT_ABSOLUTE_X;
-       if (ms->sc_flags & HIDMS_ABSY)
-               flags |= WSMOUSE_INPUT_ABSOLUTE_Y;
-
        dx =  hid_get_data(data, len, &ms->sc_loc_x);
        dy = -hid_get_data(data, len, &ms->sc_loc_y);
        dz =  hid_get_data(data, len, &ms->sc_loc_z);
@@ -403,8 +396,18 @@ hidms_input(struct hidms *ms, uint8_t *d
                ms->sc_buttons = buttons;
                if (ms->sc_wsmousedev != NULL) {
                        s = spltty();
-                       wsmouse_input(ms->sc_wsmousedev, buttons,
-                           dx, dy, dz, dw, flags);
+                       if (ms->sc_flags & HIDMS_ABSX) {
+                               wsmouse_set(ms->sc_wsmousedev,
+                                   WSMOUSE_ABS_X, dx, 0);
+                               dx = 0;
+                       }
+                       if (ms->sc_flags & HIDMS_ABSY) {
+                               wsmouse_set(ms->sc_wsmousedev,
+                                   WSMOUSE_ABS_Y, dy, 0);
+                               dy = 0;
+                       }
+                       WSMOUSE_INPUT(ms->sc_wsmousedev,
+                           buttons, dx, dy, dz, dw);
                        splx(s);
                }
        }
Index: dev/pckbc/pms.c
===================================================================
RCS file: /cvs/src/sys/dev/pckbc/pms.c,v
retrieving revision 1.69
diff -u -p -r1.69 pms.c
--- dev/pckbc/pms.c     30 Mar 2016 23:34:12 -0000      1.69
+++ dev/pckbc/pms.c     14 May 2016 13:47:06 -0000
@@ -632,8 +632,7 @@ pms_proc_mouse(struct pms_softc *sc)
        else
                dz = 0;
 
-       wsmouse_input(sc->sc_wsmousedev,
-           buttons, dx, dy, dz, 0, WSMOUSE_INPUT_DELTA);
+       WSMOUSE_INPUT(sc->sc_wsmousedev, buttons, dx, dy, dz, 0);
 }
 
 int

Reply via email to