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.
int is_mouse = 0;
int is_touchpad = 0;
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 (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");
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) ||
is_touchpad = 1;
else if (test_bit (BTN_TRIGGER, bitmask_key) ||
test_bit (BTN_A, bitmask_key) ||