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