On Fri, Oct 21, 2011 at 06:37:26PM -0700, 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> > --- > src/wcmCommon.c | 11 +++++++---- > src/wcmConfig.c | 2 +- > src/xf86Wacom.c | 33 +++++++++++++++++++++++++++++++-- > 3 files changed, 39 insertions(+), 7 deletions(-) > > diff --git a/src/wcmCommon.c b/src/wcmCommon.c > index a6c55b9..20cff5f 100644 > --- a/src/wcmCommon.c > +++ b/src/wcmCommon.c > @@ -608,6 +608,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 */ > @@ -687,7 +688,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) > @@ -737,6 +738,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. > @@ -747,11 +749,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; > @@ -770,9 +772,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, 4, &valuators[3]); /* pad > doesn't post x/y/z */ > else > wcmSendNonPadEvents(pInfo, ds, 0, priv->naxes, valuators); > > diff --git a/src/wcmConfig.c b/src/wcmConfig.c > index 567c3e7..f2ee279 100644 > --- a/src/wcmConfig.c > +++ b/src/wcmConfig.c > @@ -86,7 +86,7 @@ static int wcmAllocate(InputInfoPtr pInfo) > priv->stripldn = 5; /* Default left strip down > event */ > priv->striprup = 4; /* Default right strip up event > */ > priv->striprdn = 5; /* Default right strip down > event */ > - priv->naxes = 6; /* Default number of axes */ > + priv->naxes = 7; /* Default number of axes */ > > /* JEJ - throttle sampling code */ > priv->throttleLimit = -1; > diff --git a/src/xf86Wacom.c b/src/xf86Wacom.c > index 16561b5..5f29a41 100644 > --- a/src/xf86Wacom.c > +++ b/src/xf86Wacom.c > @@ -322,6 +322,35 @@ 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; > + } > + else > + { > + label = None; /* XXX: what is this axis? */ > + min = 0; > + max = 1; /* dummy value */ > + min_res = max_res = res = 1; > + mode = Absolute; > + }
this axis should be skipped on devices that don't have them. The others are there because I was under the impression that the tablets just have overlapping axes for different uses. This one should be conditional though. Cheers, Peter > + > + 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; > } > > @@ -404,8 +433,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.6 ------------------------------------------------------------------------------ The demand for IT networking professionals continues to grow, and the demand for specialized networking skills is growing even more rapidly. Take a complimentary Learning@Cisco Self-Assessment and learn about Cisco certifications, training, and career opportunities. http://p.sf.net/sfu/cisco-dev2dev _______________________________________________ Linuxwacom-devel mailing list Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel