[PATCH] Process ABS_{X,Y}, even if multitouch is enabled

Chase Douglas chasedouglas at gmail.com
Fri Mar 16 13:16:37 PDT 2012


On 03/15/2012 07:38 PM, Thorsten Wißmann wrote:
> This allows the processing of cursor motion events for input devices
> that provide both absolute multitouch events (e.g. by fingers) and
> touchless motion events (e.g. special pens)
> 
> Signed-off-by: Thorsten Wißmann <edu at thorsten-wissmann.de>
> Signed-off-by: Maximilian Krüger <maxfragg at gmail.com>
> ---
>  src/evdev.c |    2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/evdev.c b/src/evdev.c
> index d540b87..b857b83 100644
> --- a/src/evdev.c
> +++ b/src/evdev.c
> @@ -832,7 +832,7 @@ EvdevProcessAbsoluteMotionEvent(InputInfoPtr pInfo,
> struct input_event *ev)
>      if (ev->code >= ABS_MT_SLOT) {
>          EvdevProcessTouchEvent(pInfo, ev);
>          pEvdev->abs_queued = 1;
> -    } else if (!pEvdev->mt_mask) {
> +    } else if (!pEvdev->mt_mask || ev->code == ABS_X || ev->code ==
> ABS_Y) {
>          map = pEvdev->axis_map[ev->code];
>          valuator_mask_set(pEvdev->vals, map, value);
>          pEvdev->abs_queued = 1;

I think the problem here is that on a touchscreen device we would be
sending motion events at the same time the server is emulating motion
events when the event is due to a touch event.

I think what needs to happen is that we generate an event only if
BTN_TOOL_* is true for an evdev packet.

Thanks!

-- Chase


More information about the xorg-devel mailing list