mirror of
https://github.com/X11Libre/xf86-input-evdev.git
synced 2026-03-29 20:04:16 +00:00
Clear EV_ABS_V_USE_TOUCH for devices without a touch button
VMware's absolute pointing device does not have a pressure/touch button. Although evdev correctly recognizes this, it sets "use_touch" for X and Y axes regardless of the touch button. This patch clears the USE_TOUCH flag for the X and Y axes if the device does not have a touch button.
This commit is contained in:
@@ -709,6 +709,7 @@ EvdevAxisAbsNew1(InputInfoPtr pInfo)
|
||||
|
||||
{
|
||||
int btn;
|
||||
int i;
|
||||
|
||||
s = xf86SetStrOption(pInfo->options, "AbsoluteTouch", "DIGI_Touch");
|
||||
btn = EvdevBtnFind (pInfo, s);
|
||||
@@ -719,6 +720,18 @@ EvdevAxisAbsNew1(InputInfoPtr pInfo)
|
||||
xf86Msg(X_ERROR, "%s: state->btn: %p.\n", pInfo->name, state->btn);
|
||||
state->btn->callback[btn] = &EvdevAxesTouchCallback;
|
||||
} else {
|
||||
|
||||
/*
|
||||
* If the device does not have a touch button, then clear
|
||||
* EV_ABS_V_USE_TOUCH which we may have set for the X and Y
|
||||
* axes in EvdevAxisAbsNew.
|
||||
*/
|
||||
for (i = 0; i < ABS_MAX; i++) {
|
||||
if ((i == ABS_X || i == ABS_Y) &&
|
||||
state->abs->v_flags[i] & EV_ABS_V_PRESENT) {
|
||||
state->abs->v_flags[i] &= ~EV_ABS_V_USE_TOUCH;
|
||||
}
|
||||
}
|
||||
xf86Msg(X_ERROR, "%s: AbsoluteTouch: '%s' does not exist.\n", pInfo->name, s);
|
||||
}
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user