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

Reply via email to