diff options
author | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2009-11-30 23:03:05 +0100 |
---|---|---|
committer | Martin Pitt <martin.pitt@ubuntu.com> | 2009-11-30 23:03:05 +0100 |
commit | e0ead3ba820956648d103de2cac642f7097b519d (patch) | |
tree | fe13de92b22d361d397bd79aac3160253ae69d6a | |
parent | 6722e19ab1d379d7227450c402ee5d3c1c0e3889 (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.c | 7 |
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) || |