diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2010-03-25 10:49:02 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2011-05-20 14:28:54 +1000 |
commit | c19873aee1998845df017a58f2772f3bb02a5898 (patch) | |
tree | f133fa006153be5ffb694f25cedeec7aa4cf868f | |
parent | 11f4616afe6735001d9bc6a185e2511fdfa08b1f (diff) | |
download | xf86-input-wacom-c19873aee1998845df017a58f2772f3bb02a5898.tar.gz |
Always put the pad in relative mode.
Fixes Intuos3 scrolling issues.
The pad cannot be in absolute mode as it sends the axis values to the
server. Since the pad never gets x/y coordinates from the tablet the server
will fill in the defaults (0/0) for it - even if first_valuator is always >
1. This results in the pointer being reset to the screen origin each time
the pad's scroll strip is used.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Acked-by: Ping Cheng <pinglinux@gmail.com>
Upstream commit 5f4bc4d43bce84dd84192d3cc9fb7a9ad5b1031d squashed in.
Don't allow the pad to be switched to absolute mode.
See 2038ad187823b "Always put the pad in relative mode" for a more detailed
explanation.
-rw-r--r-- | src/wcmValidateDevice.c | 4 | ||||
-rw-r--r-- | src/wcmXCommand.c | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/src/wcmValidateDevice.c b/src/wcmValidateDevice.c index f153cd2..51b16de 100644 --- a/src/wcmValidateDevice.c +++ b/src/wcmValidateDevice.c @@ -333,9 +333,9 @@ int wcmParseOptions(LocalDevicePtr local) */ } - /* Pad is always in absolute mode. */ + /* Pad is always in relative mode. */ if (IsPad(priv)) - priv->flags |= ABSOLUTE_FLAG; + priv->flags &= ~ABSOLUTE_FLAG; /* Store original local Core flag so it can be changed later */ if (local->flags & (XI86_ALWAYS_CORE | XI86_CORE_POINTER)) diff --git a/src/wcmXCommand.c b/src/wcmXCommand.c index 76682c4..d820abc 100644 --- a/src/wcmXCommand.c +++ b/src/wcmXCommand.c @@ -36,9 +36,9 @@ int wcmDevSwitchModeCall(LocalDevicePtr local, int mode) DBG(3, priv, "to mode=%d\n", mode); - /* Pad is always in absolute mode.*/ + /* Pad is always in relative mode.*/ if (IsPad(priv)) - return (mode == Absolute) ? Success : XI_BadMode; + return (mode == Relative) ? Success : XI_BadMode; if ((mode == Absolute) && !is_absolute) { |