summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2009-11-30 23:03:05 +0100
committerMartin Pitt <martin.pitt@ubuntu.com>2009-11-30 23:03:05 +0100
commite0ead3ba820956648d103de2cac642f7097b519d (patch)
treefe13de92b22d361d397bd79aac3160253ae69d6a
parent6722e19ab1d379d7227450c402ee5d3c1c0e3889 (diff)
extras/input_id: Correctly identify touchpads
BTN_TOUCH (as well as ABS_PRESSURE) is used not only by touchpads but by touchscreens as well. The proper check for a touchpad is presence of BTN_TOOL_FINGER and absence of BTN_TOOL_PEN (the latter to filter out some tablets that use BTN_TOOL_FINGER). Tablet matching should be on either BTN_TOOL_PEN or BTN_STYLUS.
-rw-r--r--extras/input_id/input_id.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/extras/input_id/input_id.c b/extras/input_id/input_id.c
index 393a05d53a..2e143a5628 100644
--- a/extras/input_id/input_id.c
+++ b/extras/input_id/input_id.c
@@ -75,13 +75,10 @@ static void test_pointers (const unsigned long* bitmask_abs, const unsigned long
int is_mouse = 0;
int is_touchpad = 0;
- if (test_bit (ABS_PRESSURE, bitmask_abs))
- is_touchpad = 1;
-
if (test_bit (ABS_X, bitmask_abs) && test_bit (ABS_Y, bitmask_abs)) {
- if (test_bit (BTN_STYLUS, bitmask_key))
+ if (test_bit (BTN_STYLUS, bitmask_key) || test_bit (BTN_TOOL_PEN, bitmask_key))
puts("ID_INPUT_TABLET=1");
- else if (test_bit (BTN_TOUCH, bitmask_key))
+ else if (test_bit (BTN_TOOL_FINGER, bitmask_key) && !test_bit (BTN_TOOL_PEN, bitmask_key))
is_touchpad = 1;
else if (test_bit (BTN_TRIGGER, bitmask_key) ||
test_bit (BTN_A, bitmask_key) ||