On Thu, Jul 18, 2013 at 09:25:46PM +0059, Jason McIntyre wrote:
> you want a space before the full stop (above)
>
> and zap this blank line
> 
> the Nd should match exactly, so either change "suuport" in the man page,
> or "devices" here

Cheers. Revised diff:

Index: share/man/man4/ums.4
===================================================================
RCS file: /cvs/src/share/man/man4/ums.4,v
retrieving revision 1.10
diff -u -p -r1.10 ums.4
--- share/man/man4/ums.4        26 Jun 2008 05:42:07 -0000      1.10
+++ share/man/man4/ums.4        19 Jul 2013 14:57:23 -0000
@@ -28,23 +28,30 @@
 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 .\" POSSIBILITY OF SUCH DAMAGE.
 .\"
-.Dd $Mdocdate: June 26 2008 $
+.Dd $Mdocdate: July 17 2013 $
 .Dt UMS 4
 .Os
 .Sh NAME
 .Nm ums
-.Nd USB mouse support
+.Nd USB HID mouse, touchscreen and digitiser devices
 .Sh SYNOPSIS
 .Cd "ums*     at uhidev?"
 .Cd "wsmouse* at ums? mux 0"
 .Sh DESCRIPTION
 The
 .Nm
-driver provides support for USB mice.
-Access to the mouse is through the
+driver provides support for USB HID mice, touchscreens and digitisers.
+Access to these devices is through the
 .Xr wscons 4
 driver.
+.Pp
+If the touchscreen sensor is poorly aligned, then
+.Xr xtsscale 1
+should be used to provide calibration results to the
+.Nm
+driver.
 .Sh SEE ALSO
+.Xr xtsscale 1 ,
 .Xr uhidev 4 ,
 .Xr usb 4 ,
 .Xr wsmouse 4
@@ -54,3 +61,15 @@ The
 driver
 first appeared in
 .Ox 2.8 .
+.Sh AUTHORS
+.An -nosplit
+HID touchscreen and digitiser support was written by
+.An Robert Nagy
+and
+.An Matthieu Herrb
+then later merged into the generic
+.Xr ums 4
+driver by
+.An Edd Barrett .
+.Sh CAVEATS
+Touchscreen and digitiser pressure sensitivity is not yet implemented.
Index: share/man/man4/usb.4
===================================================================
RCS file: /cvs/src/share/man/man4/usb.4,v
retrieving revision 1.140
diff -u -p -r1.140 usb.4
--- share/man/man4/usb.4        1 Jun 2013 17:04:57 -0000       1.140
+++ share/man/man4/usb.4        19 Jul 2013 14:57:23 -0000
@@ -252,7 +252,7 @@ HID touchscreen support
 keyboards that follow the boot protocol
 .It Xr ums 4
 .Tn USB
-mouse devices
+HID mouse, touchscreen and digitiser devices
 .It Xr uoaklux 4
 Toradex OAK USB illuminance sensor
 .It Xr uoakrh 4
Index: sys/dev/usb/hidms.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/hidms.c,v
retrieving revision 1.4
diff -u -p -r1.4 hidms.c
--- sys/dev/usb/hidms.c 19 Aug 2011 18:46:22 -0000      1.4
+++ sys/dev/usb/hidms.c 19 Jul 2013 14:57:28 -0000
@@ -194,6 +194,27 @@ hidms_setup(struct device *self, struct 
                        break;
        ms->sc_num_buttons = i - 1;
 
+       if (hid_locate(desc, dlen, HID_USAGE2(HUP_DIGITIZERS,
+           HUD_TIP_SWITCH), id, hid_input,
+           &ms->sc_loc_btn[ms->sc_num_buttons], NULL)){
+               ms->sc_flags |= HIDMS_TIP;
+               ms->sc_num_buttons++;
+       }
+
+       if (hid_locate(desc, dlen, HID_USAGE2(HUP_DIGITIZERS,
+           HUD_ERASER), id, hid_input,
+           &ms->sc_loc_btn[ms->sc_num_buttons], NULL)){
+               ms->sc_flags |= HIDMS_ERASER;
+               ms->sc_num_buttons++;
+       }
+
+       if (hid_locate(desc, dlen, HID_USAGE2(HUP_DIGITIZERS,
+           HUD_BARREL_SWITCH), id, hid_input,
+           &ms->sc_loc_btn[ms->sc_num_buttons], NULL)){
+               ms->sc_flags |= HIDMS_BARREL;
+               ms->sc_num_buttons++;
+       }
+
        /*
         * The Microsoft Wireless Notebook Optical Mouse seems to be in worse
         * shape than the Wireless Intellimouse 2.0, as its X, Y, wheel, and
@@ -216,6 +237,11 @@ hidms_setup(struct device *self, struct 
        /* Parse descriptors to get touch panel bounds */
        d = hid_start_parse(desc, dlen, hid_input);
        while (hid_get_item(d, &h)) {
+               if (h.kind != hid_input ||
+                   HID_GET_USAGE_PAGE(h.usage) != HUP_GENERIC_DESKTOP)
+                       continue;
+               DPRINTF(("hidms: usage=0x%x range %d..%d\n",
+                       h.usage, h.logical_minimum, h.logical_maximum));
                switch (HID_GET_USAGE(h.usage)) {
                case HUG_X:
                        if (ms->sc_flags & HIDMS_ABSX) {
@@ -255,6 +281,14 @@ hidms_attach(struct hidms *ms, const str
                printf(", Z and W dir");
                break;
        }
+
+       if (ms->sc_flags & HIDMS_TIP)
+               printf(", tip");
+       if (ms->sc_flags & HIDMS_BARREL)
+               printf(", barrel");
+       if (ms->sc_flags & HIDMS_ERASER)
+               printf(", eraser");
+
        printf("\n");
 
 #ifdef HIDMS_DEBUG
Index: sys/dev/usb/hidmsvar.h
===================================================================
RCS file: /cvs/src/sys/dev/usb/hidmsvar.h,v
retrieving revision 1.2
diff -u -p -r1.2 hidmsvar.h
--- sys/dev/usb/hidmsvar.h      4 Mar 2011 23:57:52 -0000       1.2
+++ sys/dev/usb/hidmsvar.h      19 Jul 2013 14:57:28 -0000
@@ -43,14 +43,17 @@ struct tsscale {
 struct hidms {
        int             sc_enabled;
        int             sc_flags;       /* device configuration */
-#define HIDMS_SPUR_BUT_UP      0x01    /* spurious button up events */
-#define HIDMS_Z                        0x02    /* Z direction available */
-#define HIDMS_REVZ             0x04    /* Z-axis is reversed */
-#define HIDMS_W                        0x08    /* W direction available */
-#define HIDMS_REVW             0x10    /* W-axis is reversed */
-#define HIDMS_LEADINGBYTE      0x20    /* Unknown leading byte */
-#define HIDMS_ABSX             0x40    /* X-axis is absolute */
-#define HIDMS_ABSY             0x80    /* Y-axis is absolute */
+#define HIDMS_SPUR_BUT_UP      0x001   /* spurious button up events */
+#define HIDMS_Z                        0x002   /* Z direction available */
+#define HIDMS_REVZ             0x004   /* Z-axis is reversed */
+#define HIDMS_W                        0x008   /* W direction available */
+#define HIDMS_REVW             0x010   /* W-axis is reversed */
+#define HIDMS_LEADINGBYTE      0x020   /* Unknown leading byte */
+#define HIDMS_ABSX             0x040   /* X-axis is absolute */
+#define HIDMS_ABSY             0x080   /* Y-axis is absolute */
+#define HIDMS_TIP              0x100   /* Tip switch on a digitiser pen */
+#define HIDMS_BARREL           0x200   /* Barrel switch on a digitiser pen */
+#define HIDMS_ERASER           0x400   /* Eraser switch on a digitiser pen */
 
        int             sc_num_buttons;
        u_int32_t       sc_buttons;     /* mouse button status */
Index: sys/dev/usb/ums.c
===================================================================
RCS file: /cvs/src/sys/dev/usb/ums.c,v
retrieving revision 1.35
diff -u -p -r1.35 ums.c
--- sys/dev/usb/ums.c   3 Jul 2011 15:47:17 -0000       1.35
+++ sys/dev/usb/ums.c   19 Jul 2013 14:57:28 -0000
@@ -100,11 +100,26 @@ ums_match(struct device *parent, void *m
        void *desc;
 
        uhidev_get_report_desc(uha->parent, &desc, &size);
-       if (!hid_is_collection(desc, size, uha->reportid,
-                              HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_MOUSE)))
-               return (UMATCH_NONE);
 
-       return (UMATCH_IFACECLASS);
+       if (hid_is_collection(desc, size, uha->reportid,
+           HID_USAGE2(HUP_GENERIC_DESKTOP, HUG_MOUSE)))
+               return (UMATCH_IFACECLASS);
+
+       /*
+        * For now return a value higher than UMATCH_IFACECLASS to make sure
+        * touchscreens and digitizers no longer attach to uhts(4).
+        */
+       if (hid_is_collection(desc, size, uha->reportid,
+           HID_USAGE2(HUP_DIGITIZERS, HUD_TOUCHSCREEN)))
+               return (UMATCH_IFACECLASS_IFACESUBCLASS); /* XXX */
+               /* return (UMATCH_IFACECLASS); */
+
+       if (hid_is_collection(desc, size, uha->reportid,
+           HID_USAGE2(HUP_DIGITIZERS, HUD_PEN)))
+               return (UMATCH_IFACECLASS_IFACESUBCLASS); /* XXX */
+               /* return (UMATCH_IFACECLASS); */
+
+       return (UMATCH_NONE);
 }
 
 void
-- 
Best Regards
Edd Barrett

http://www.theunixzoo.co.uk

Reply via email to