diff options
author | Peter Hutterer <peter.hutterer@who-t.net> | 2012-01-25 16:03:34 +1000 |
---|---|---|
committer | Peter Hutterer <peter.hutterer@who-t.net> | 2012-01-26 16:07:10 +1000 |
commit | 224a28de25fda654040a9fd4e5c4d748c9e29809 (patch) | |
tree | bace6238e2c90082b6e66e9d9224623d98e4efc8 | |
parent | bc2f01ab838119a962f5e5eabb36e33d4c084f2c (diff) |
Only force REL_X/Y if no ABS_X/Y exists
5c5b2c8db851df7921cedd888222a6630a007fd8 added forced x/y axes if a device
has any axes of the same mode. This was too broad a brush, some devices have
a relative wheel but absolute x/y axes and would now get misdetected as
purely relative device.
Only force relative axes if a device no rel x/y _and_ no abs x/y.
Reproducible: virtual machine with QEMU USB Tablet will stop working
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Chase Douglas <chase.douglas@canonical.com>
-rw-r--r-- | src/evdev.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/evdev.c b/src/evdev.c index 32fe38b..d540b87 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -2146,7 +2146,8 @@ EvdevProbe(InputInfoPtr pInfo) if (EvdevBitIsSet(pEvdev->rel_bitmask, REL_X) && EvdevBitIsSet(pEvdev->rel_bitmask, REL_Y)) { xf86IDrvMsg(pInfo, X_PROBED, "Found x and y relative axes\n"); - } else + } else if (!EvdevBitIsSet(pEvdev->abs_bitmask, ABS_X) || + !EvdevBitIsSet(pEvdev->abs_bitmask, ABS_Y)) EvdevForceXY(pInfo, Relative); } else { xf86IDrvMsg(pInfo, X_INFO, "Relative axes present but ignored.\n"); |