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 all enabled axes if the device does not have a touch button. I'd appreciate any comments/reviews for this patch. Thanks, Vinay diff --git a/src/evdev_axes.c b/src/evdev_axes.c index e967c61..e78d6fd 100644 --- a/src/evdev_axes.c +++ b/src/evdev_axes.c @@ -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,16 @@ 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 in EvdevAxisAbsNew. + */ + for (i = 0; i < ABS_MAX; i++) { + if (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 { _______________________________________________ xorg mailing list xorg@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/xorg