aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChase Douglas <chase.douglas@canonical.com>2011-11-29 18:02:58 -0800
committerChase Douglas <chase.douglas@canonical.com>2011-11-29 18:02:58 -0800
commitcf93a21df1dd66118d3a1f5a0769d48f317de749 (patch)
tree355c2ddbf7337bf86071ca6ab67f89bc30a40833
parentAdd the required defines to compile against the inputproto (diff)
downloadxf86-input-evdev-cf93a21df1dd66118d3a1f5a0769d48f317de749.tar.gz
xf86-input-evdev-cf93a21df1dd66118d3a1f5a0769d48f317de749.tar.bz2
xf86-input-evdev-cf93a21df1dd66118d3a1f5a0769d48f317de749.zip
Don't send pointer events for multitouch touchscreen devices
Pointer events will be emulated by the server. Signed-off-by: Chase Douglas <chase.douglas@canonical.com>
-rw-r--r--src/evdev.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/evdev.c b/src/evdev.c
index f88074b..760f3ce 100644
--- a/src/evdev.c
+++ b/src/evdev.c
@@ -781,14 +781,14 @@ EvdevProcessAbsoluteMotionEvent(InputInfoPtr pInfo, struct input_event *ev)
if (EvdevWheelEmuFilterMotion(pInfo, ev))
return;
- if (ev->code >= ABS_MT_SLOT)
+ if (ev->code >= ABS_MT_SLOT) {
EvdevProcessTouchEvent(pInfo, ev);
- else {
+ pEvdev->abs_queued = 1;
+ } else if (!pEvdev->mt_mask) {
map = pEvdev->axis_map[ev->code];
valuator_mask_set(pEvdev->vals, map, value);
+ pEvdev->abs_queued = 1;
}
-
- pEvdev->abs_queued = 1;
}
/**
@@ -823,7 +823,8 @@ EvdevProcessKeyEvent(InputInfoPtr pInfo, struct input_event *ev)
* BTN_TOUCH as the proximity notifier */
if (!pEvdev->use_proximity)
pEvdev->in_proximity = value ? ev->code : 0;
- if (!(pEvdev->flags & (EVDEV_TOUCHSCREEN | EVDEV_TABLET)))
+ if (!(pEvdev->flags & (EVDEV_TOUCHSCREEN | EVDEV_TABLET)) ||
+ pEvdev->mt_mask)
break;
/* Treat BTN_TOUCH from devices that only have BTN_TOUCH as
* BTN_LEFT. */