From: Vu N. S. <san...@la...> - 2011-06-05 20:37:17
|
Hi it seems that there is a new bug on the Intuos4 tablet. Reproduce: * put the stylus away from the tablet * press a button (or touch the ring) -> the cursor jumps to the top-left corner of the screen. (If the stylus is not away, the same bug occurs, but of course the cursor quickly comes back to the stylus position.) I'm using kubuntu Natty xorg.0.log -> [ 7674.444] (II) LoadModule: "wacom" [ 7674.445] (II) Loading /usr/lib/xorg/modules/input/wacom_drv.so [ 7674.445] (II) Module wacom: vendor="X.Org Foundation" [ 7674.445] compiled for 1.10.1, module version = 0.11.99 [ 7674.446] Module class: X.Org XInput Driver [ 7674.446] ABI class: X.Org XInput driver, version 12.3 I found a "fix", but it might have some side effect I ignore. The idea is that the Pad should be in relative mode and not absolute, because somehow when you press a button, the new coordinates become (0,0). But I also has to disable postMotionEvent for the Pad. Here is the patch that works for me: diff --git a/src/wcmCommon.c b/src/wcmCommon.c index bd47c51..4943ae7 100644 --- a/src/wcmCommon.c +++ b/src/wcmCommon.c @@ -545,8 +545,9 @@ wcmSendPadEvents(InputInfoPtr pInfo, const WacomDeviceState* ds, /* xf86PostMotionEvent is only needed to post the valuators * It should NOT move the cursor. */ - xf86PostMotionEventP(pInfo->dev, TRUE, first_val, num_vals, - VCOPY(valuators, num_vals)); + // SAN: I comment this out + /* xf86PostMotionEventP(pInfo->dev, TRUE, first_val, num_vals, */ + /* VCOPY(valuators, num_vals)); */ } else { diff --git a/src/wcmValidateDevice.c b/src/wcmValidateDevice.c index 409a42f..c271d12 100644 --- a/src/wcmValidateDevice.c +++ b/src/wcmValidateDevice.c @@ -712,7 +712,8 @@ Bool wcmParseOptions(InputInfoPtr pInfo, Bool is_primary, Bool is_dependent) { priv->wheelup = 4; priv->wheeldn = 5; - set_absolute(pInfo, TRUE); + // SAN -> FALSE + set_absolute(pInfo, FALSE); } s = xf86SetStrOption(pInfo->options, "Rotate", NULL); diff --git a/src/wcmXCommand.c b/src/wcmXCommand.c index 98de29b..1d46d18 100644 --- a/src/wcmXCommand.c +++ b/src/wcmXCommand.c @@ -46,8 +46,9 @@ int wcmDevSwitchModeCall(InputInfoPtr pInfo, int mode) DBG(3, priv, "to mode=%d\n", mode); /* Pad is always in absolute mode.*/ - if (IsPad(priv)) - return (mode == Absolute) ? Success : XI_BadMode; + //SAN + /* if (IsPad(priv)) */ + /* return (mode == Absolute) ? Success : XI_BadMode; */ if ((mode == Absolute) && !is_absolute(pInfo)) set_absolute(pInfo, TRUE); |