On Tue, Dec 13, 2011 at 01:59:01PM -0800, Jason Gerecke wrote: > This patch expands the number of valuators reported by devices to > seven. The new seventh valuator reports the raw value provided from > the kernel for the second touch ring. > > Signed-off-by: Jason Gerecke <killert...@gmail.com>
Reviewed-by: Peter Hutterer <peter.hutte...@who-t.net> > --- > src/wcmCommon.c | 11 +++++++---- > src/xf86Wacom.c | 28 ++++++++++++++++++++++++++-- > 2 files changed, 33 insertions(+), 6 deletions(-) > > diff --git a/src/wcmCommon.c b/src/wcmCommon.c > index 57a1826..0e719cf 100644 > --- a/src/wcmCommon.c > +++ b/src/wcmCommon.c > @@ -606,6 +606,7 @@ wcmSendNonPadEvents(InputInfoPtr pInfo, const > WacomDeviceState *ds, > valuators[4] -= priv->oldTiltY; > } > valuators[5] -= priv->oldWheel; > + valuators[6] -= priv->oldWheel2; > } > > /* coordinates are ready we can send events */ > @@ -685,7 +686,7 @@ void wcmSendEvents(InputInfoPtr pInfo, const > WacomDeviceState* ds) > int tx = ds->tiltx; > int ty = ds->tilty; > WacomDevicePtr priv = (WacomDevicePtr) pInfo->private; > - int v3, v4, v5; > + int v3, v4, v5, v6; > int valuators[priv->naxes]; > > if (priv->serial && serial != priv->serial) > @@ -735,6 +736,7 @@ void wcmSendEvents(InputInfoPtr pInfo, const > WacomDeviceState* ds) > } > > v5 = ds->abswheel; > + v6 = ds->abswheel2; > if (IsStylus(priv) && !IsArtPen(ds)) > { > /* Normalize abswheel airbrush data to Art Pen rotation range. > @@ -745,11 +747,11 @@ void wcmSendEvents(InputInfoPtr pInfo, const > WacomDeviceState* ds) > } > > DBG(6, priv, "%s prox=%d\tx=%d" > - "\ty=%d\tz=%d\tv3=%d\tv4=%d\tv5=%d\tid=%d" > + "\ty=%d\tz=%d\tv3=%d\tv4=%d\tv5=%d\tv6=%d\tid=%d" > "\tserial=%u\tbutton=%s\tbuttons=%d\n", > is_absolute(pInfo) ? "abs" : "rel", > ds->proximity, > - x, y, z, v3, v4, v5, id, serial, > + x, y, z, v3, v4, v5, v6, id, serial, > is_button ? "true" : "false", ds->buttons); > > priv->currentX = x; > @@ -768,9 +770,10 @@ void wcmSendEvents(InputInfoPtr pInfo, const > WacomDeviceState* ds) > valuators[3] = v3; > valuators[4] = v4; > valuators[5] = v5; > + valuators[6] = v6; > > if (type == PAD_ID) > - wcmSendPadEvents(pInfo, ds, 3, 3, &valuators[3]); /* pad > doesn't post x/y/z */ > + wcmSendPadEvents(pInfo, ds, 3, priv->naxes - 3, &valuators[3]); > /* pad doesn't post x/y/z */ > else > wcmSendNonPadEvents(pInfo, ds, 0, priv->naxes, valuators); > > diff --git a/src/xf86Wacom.c b/src/xf86Wacom.c > index 16561b5..d1c149f 100644 > --- a/src/xf86Wacom.c > +++ b/src/xf86Wacom.c > @@ -322,6 +322,27 @@ wcmInitAxes(DeviceIntPtr pWcm) > #endif > ); > > + /* seventh valuator: abswheel2 */ > + if ((TabletHasFeature(common, WCM_DUALRING)) && IsPad(priv)) > + { > + /* Second touch ring */ > + label = None; > + min = MIN_PAD_RING; > + max = MAX_PAD_RING; > + min_res = max_res = res = 1; > + mode = Absolute; > + > + InitValuatorAxisStruct(pInfo->dev, 6, > +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7 > + label, > +#endif > + min, max, res, min_res, max_res > +#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 12 > + , mode > +#endif > + ); > + } > + > return TRUE; > } > > @@ -349,6 +370,9 @@ static int wcmDevInit(DeviceIntPtr pWcm) > nbaxes = priv->naxes; /* X, Y, Pressure, Tilt-X, Tilt-Y, Wheel */ > nbbuttons = priv->nbuttons; /* Use actual number of buttons, if > possible */ > > + if (IsPad(priv) && TabletHasFeature(priv->common, WCM_DUALRING)) > + nbaxes = priv->naxes = nbaxes + 1; /* ABS wheel 2 */ > + > /* if more than 3 buttons, offset by the four scroll buttons, > * otherwise, alloc 7 buttons for scroll wheel. */ > nbbuttons = (nbbuttons > 3) ? nbbuttons + 4 : 7; > @@ -404,8 +428,8 @@ static int wcmDevInit(DeviceIntPtr pWcm) > return FALSE; > } > > - if (!nbaxes || nbaxes > 6) > - nbaxes = priv->naxes = 6; > + if (!nbaxes || nbaxes > 7) > + nbaxes = priv->naxes = 7; > > /* axis_labels is just zeros, we set up each valuator with the > * correct property later */ > -- > 1.7.7.3 > > > ------------------------------------------------------------------------------ > Systems Optimization Self Assessment > Improve efficiency and utilization of IT resources. Drive out cost and > improve service delivery. Take 5 minutes to use this Systems Optimization > Self Assessment. http://www.accelacomm.com/jaw/sdnl/114/51450054/ > _______________________________________________ > Linuxwacom-devel mailing list > Linuxwacom-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel > ------------------------------------------------------------------------------ Learn Windows Azure Live! Tuesday, Dec 13, 2011 Microsoft is holding a special Learn Windows Azure training event for developers. It will provide a great way to learn Windows Azure and what it provides. You can attend the event by watching it streamed LIVE online. Learn more at http://p.sf.net/sfu/ms-windowsazure _______________________________________________ Linuxwacom-devel mailing list Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel