On Thu, Jun 02, 2011 at 09:19:34AM -0500, Chris Bagwell wrote: > For the Fujitsu table, I'm thinking we should set it WACOM vendor_id > because we are setting tablet_id to values only meaningful when > product_id is WACOM.
are the tablets 100% compatible though? > Or if we set vendor_id to fujitsu then we should probably set > tablet_id to the value pulled out of that string... but we can't use > this option until we make a way for wcmDeviceTypeKeys() to detect > touchscreen vs. touchpad without looking at tablet_id. > > Related to this, I think we probably should wrap the tablet_id case > statement in wcmDeviceTypeKeys() with an "if (vendor_id==WACOM)" check > so that we can expose real tablet_id's/product_id's to user in all > cases. My goal is to make the case statement unneeded anyways. > > I think we are just getting lucky today that waltop/ntrig/levono USB > devices are not using an overlapping tablet_id but our luck could run > out. > > Anyways, I Ack this patch series without any of above changes because > it works as-is and we may want to incrementally fix ISDV4 and USB > issues. > > Reviewed-by: Chris Bagwell <[email protected]> yeah, quite frankly, I'd rather have this incrementally fixed too. fwiw, the USB tablets is where it's at, imo. Now that we see built-in usb tablets as well, I hope that serial tablets go the way of the dodo. the isdv4 tablet_id handling is rather atrocious but maybe we can just start ignoring that in a few months time. Cheers, Peter > On Wed, Jun 1, 2011 at 9:44 PM, Peter Hutterer <[email protected]> > wrote: > > This property is now used in input drivers to export product/vendor ID to > > clients. > > > > Note that this patch has a minor other change: together with the new > > vendor_id, tablet_id is now set on the common struct during ProbeKeys. > > Before, the tablet_id was only returned. This choice was for consistency and > > should have no functional effect since the first thing we did with the > > returned tablet_id was to set it anyway. > > > > Signed-off-by: Peter Hutterer <[email protected]> > > --- > > > > If anyone happens to know the vendor ID for Fujitsu, that'd be much > > appreciated > > > > src/wcmISDV4.c | 15 +++++++++++---- > > src/wcmUSB.c | 3 +++ > > src/wcmXCommand.c | 10 +++++++++- > > src/xf86WacomDefs.h | 1 + > > 4 files changed, 24 insertions(+), 5 deletions(-) > > > > diff --git a/src/wcmISDV4.c b/src/wcmISDV4.c > > index db0d83e..e199521 100644 > > --- a/src/wcmISDV4.c > > +++ b/src/wcmISDV4.c > > @@ -881,14 +881,15 @@ static int set_keybits_fujitsu(int id, unsigned long > > *keys) > > > > typedef struct { > > const char *pattern; /* sscanf matching pattern to extract ID */ > > + const int vendor_id; > > /* set the bits in the given keys array based on the id. return the > > * tablet_id or the closest guess anyway */ > > int (*set_bits)(int id, unsigned long* keys); > > } ISDV4ModelDesc; > > > > static ISDV4ModelDesc isdv4_models[] = { > > - { "WACf%x", set_keybits_wacom }, > > - { "FUJ%x", set_keybits_fujitsu }, > > + { "WACf%x", WACOM_VENDOR_ID, set_keybits_wacom }, > > + { "FUJ%x", 0 /* FIXME: */, set_keybits_fujitsu }, > > { NULL, 0 } > > }; > > > > @@ -989,12 +990,18 @@ static int isdv4ProbeKeys(InputInfoPtr pInfo) > > SETBIT(common->wcmKeys, BTN_TOOL_PEN); > > SETBIT(common->wcmKeys, BTN_TOOL_RUBBER); > > > > - if (model && model->set_bits) > > - tablet_id = model->set_bits(id, common->wcmKeys); > > + if (model) > > + { > > + common->vendor_id = model->vendor_id; > > + if (model->set_bits) > > + tablet_id = model->set_bits(id, common->wcmKeys); > > + } > > > > /* Change to generic protocol to match USB MT format */ > > common->wcmProtocolLevel = WCM_PROTOCOL_GENERIC; > > > > + common->tablet_id = tablet_id; > > + > > return tablet_id; > > } > > > > diff --git a/src/wcmUSB.c b/src/wcmUSB.c > > index dece422..0ea7737 100644 > > --- a/src/wcmUSB.c > > +++ b/src/wcmUSB.c > > @@ -1675,6 +1675,9 @@ static int usbProbeKeys(InputInfoPtr pInfo) > > usbGenericTouchscreenQuirks(common->wcmKeys, abs); > > } > > > > + common->vendor_id = wacom_id.vendor; > > + common->tablet_id = wacom_id.product; > > + > > return wacom_id.product; > > } > > > > diff --git a/src/wcmXCommand.c b/src/wcmXCommand.c > > index 65854b0..d16ac2b 100644 > > --- a/src/wcmXCommand.c > > +++ b/src/wcmXCommand.c > > @@ -29,6 +29,9 @@ > > #ifndef XI_PROP_DEVNODE > > #define XI_PROP_DEVNODE "Device Node" > > #endif > > +#ifndef XI_PROP_PRODUCT_ID > > +#define XI_PROP_PRODUCT_ID "Device Product ID" > > +#endif > > > > static void wcmBindToSerial(InputInfoPtr pInfo, unsigned int serial); > > > > @@ -95,6 +98,7 @@ Atom prop_gesture_param; > > Atom prop_hover; > > Atom prop_tooltype; > > Atom prop_btnactions; > > +Atom prop_product_id; > > #ifdef DEBUG > > Atom prop_debuglevels; > > #endif > > @@ -232,6 +236,10 @@ void InitWcmDeviceProperties(InputInfoPtr pInfo) > > prop_wheel_buttons = InitWcmAtom(pInfo->dev, > > WACOM_PROP_WHEELBUTTONS, -32, 4, values); > > } > > > > + values[0] = common->vendor_id; > > + values[1] = common->tablet_id; > > + prop_product_id = InitWcmAtom(pInfo->dev, XI_PROP_PRODUCT_ID, 32, > > 2, values); > > + > > #ifdef DEBUG > > values[0] = priv->debugLevel; > > values[1] = common->debugLevel; > > @@ -608,7 +616,7 @@ int wcmSetProperty(DeviceIntPtr dev, Atom property, > > XIPropertyValuePtr prop, > > > > DBG(10, priv, "\n"); > > > > - if (property == prop_devnode) > > + if (property == prop_devnode || property == prop_product_id) > > return BadValue; /* Read-only */ > > else if (property == prop_tablet_area) > > { > > diff --git a/src/xf86WacomDefs.h b/src/xf86WacomDefs.h > > index 7b6b80b..f054d2c 100644 > > --- a/src/xf86WacomDefs.h > > +++ b/src/xf86WacomDefs.h > > @@ -434,6 +434,7 @@ struct _WacomCommonRec > > dev_t min_maj; /* minor/major number */ > > unsigned char wcmFlags; /* various flags (handle tilt) */ > > int debugLevel; > > + int vendor_id; /* Vendor ID */ > > int tablet_id; /* USB tablet ID */ > > int tablet_type; /* bitmask of tablet features (WCM_LCD, > > WCM_PEN, etc) */ > > int fd; /* file descriptor to tablet */ > > -- > > 1.7.5.1 > > > > > > ------------------------------------------------------------------------------ > > Simplify data backup and recovery for your virtual environment with vRanger. > > Installation's a snap, and flexible recovery options mean your data is safe, > > secure and there when you need it. Data protection magic? > > Nope - It's vRanger. Get your free trial download today. > > http://p.sf.net/sfu/quest-sfdev2dev > > _______________________________________________ > > Linuxwacom-devel mailing list > > [email protected] > > https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel > > > ------------------------------------------------------------------------------ Simplify data backup and recovery for your virtual environment with vRanger. Installation's a snap, and flexible recovery options mean your data is safe, secure and there when you need it. Discover what all the cheering's about. Get your free trial download today. http://p.sf.net/sfu/quest-dev2dev2 _______________________________________________ Linuxwacom-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel
