This patch adds an 'abswheel2' field to the _WacomDeviceState structure, along with corresponding 'oldWheel2' field to the _WacomDeviceRec structure. These fields store the state of the second touch ring on dual-ring devices such as the Cintiq 24HD.
Signed-off-by: Jason Gerecke <killert...@gmail.com> --- Changes from v3: * Set either abswheel2 or throttle, NOT both (whoops!) src/wcmCommon.c | 16 +++++++++------- src/wcmUSB.c | 6 +++++- src/xf86WacomDefs.h | 2 ++ 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/wcmCommon.c b/src/wcmCommon.c index e85c6d8..44e74eb 100644 --- a/src/wcmCommon.c +++ b/src/wcmCommon.c @@ -500,6 +500,7 @@ static void wcmUpdateOldState(const InputInfoPtr pInfo, int tx, ty; priv->oldWheel = ds->abswheel; + priv->oldWheel2 = ds->abswheel2; priv->oldButtons = ds->buttons; if (IsPad(priv)) @@ -688,11 +689,11 @@ void wcmSendEvents(InputInfoPtr pInfo, const WacomDeviceState* ds) } DBG(7, priv, "[%s] o_prox=%s x=%d y=%d z=%d " - "b=%s b=%d tx=%d ty=%d wl=%d rot=%d th=%d\n", + "b=%s b=%d tx=%d ty=%d wl=%d wl2=%d rot=%d th=%d\n", pInfo->type_name, priv->oldProximity ? "true" : "false", x, y, z, is_button ? "true" : "false", ds->buttons, - tx, ty, ds->abswheel, ds->rotation, ds->throttle); + tx, ty, ds->abswheel, ds->abswheel2, ds->rotation, ds->throttle); if (ds->proximity) wcmRotateAndScaleCoordinates(pInfo, &x, &y); @@ -755,6 +756,7 @@ void wcmSendEvents(InputInfoPtr pInfo, const WacomDeviceState* ds) { priv->oldButtons = 0; priv->oldWheel = MAX_PAD_RING + 1; + priv->oldWheel2 = MAX_PAD_RING + 1; priv->oldX = 0; priv->oldY = 0; priv->oldZ = 0; @@ -817,9 +819,9 @@ wcmCheckSuppress(WacomCommonPtr common, /* look for change in absolute wheel position * or any relative wheel movement */ - if ((abs(dsOrig->abswheel - dsNew->abswheel) > suppress) - || (dsNew->relwheel != 0)) - goto out; + if (abs(dsOrig->abswheel - dsNew->abswheel) > suppress) goto out; + if (abs(dsOrig->abswheel2 - dsNew->abswheel2) > suppress) goto out; + if (dsNew->relwheel != 0) goto out; returnV = SUPPRESS_ALL; @@ -873,7 +875,7 @@ void wcmEvent(WacomCommonPtr common, unsigned int channel, DBG(10, common, "c=%d i=%d t=%d s=%u x=%d y=%d b=%d " - "p=%d rz=%d tx=%d ty=%d aw=%d rw=%d " + "p=%d rz=%d tx=%d ty=%d aw=%d aw2=%d rw=%d " "t=%d px=%d st=%d cs=%d \n", channel, ds.device_id, @@ -881,7 +883,7 @@ void wcmEvent(WacomCommonPtr common, unsigned int channel, ds.serial_num, ds.x, ds.y, ds.buttons, ds.pressure, ds.rotation, ds.tiltx, - ds.tilty, ds.abswheel, ds.relwheel, ds.throttle, + ds.tilty, ds.abswheel, ds.abswheel2, ds.relwheel, ds.throttle, ds.proximity, ds.sample, pChannel->nSamples); diff --git a/src/wcmUSB.c b/src/wcmUSB.c index c95895a..8451c25 100644 --- a/src/wcmUSB.c +++ b/src/wcmUSB.c @@ -1044,7 +1044,11 @@ static int usbParseAbsEvent(WacomCommonPtr common, ds->abswheel = event->value; break; case ABS_THROTTLE: - ds->throttle = event->value; + /* 2nd touch ring comes in over ABS_THROTTLE for 24HD */ + if (common->vendor_id == WACOM_VENDOR_ID && common->tablet_id == 0xF4) + ds->abswheel2 = event->value; + else + ds->throttle = event->value; break; case ABS_MISC: ds->proximity = (event->value != 0); diff --git a/src/xf86WacomDefs.h b/src/xf86WacomDefs.h index 9987436..8f06b8d 100644 --- a/src/xf86WacomDefs.h +++ b/src/xf86WacomDefs.h @@ -267,6 +267,7 @@ struct _WacomDeviceRec int oldTiltX; /* previous tilt in x direction */ int oldTiltY; /* previous tilt in y direction */ int oldWheel; /* previous wheel value */ + int oldWheel2; /* previous wheel2 value */ int oldRot; /* previous rotation value */ int oldStripX; /* previous left strip value */ int oldStripY; /* previous right strip value */ @@ -323,6 +324,7 @@ struct _WacomDeviceState int stripy; int rotation; int abswheel; + int abswheel2; int relwheel; int distance; int throttle; -- 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