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> Reviewed-by: Chris Bagwell <ch...@cnpbagwell.com> --- 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 885b6b9..21afcc5 100644 --- a/src/wcmCommon.c +++ b/src/wcmCommon.c @@ -642,6 +642,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 */ @@ -721,7 +722,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) @@ -771,6 +772,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. @@ -781,11 +783,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; @@ -804,9 +806,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 ------------------------------------------------------------------------------ Write once. Port to many. Get the SDK and tools to simplify cross-platform app development. Create new or port existing apps to sell to consumers worldwide. Explore the Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join http://p.sf.net/sfu/intel-appdev _______________________________________________ Linuxwacom-devel mailing list Linuxwacom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxwacom-devel