On Thu, Mar 15, 2012 at 09:57:30PM -0500, Chris Bagwell wrote: > On Thu, Mar 15, 2012 at 9:03 PM, Chase Douglas <chasedouglas@xxxxxxxxx> wrote: > > On 03/15/2012 06:52 PM, Thorsten Wissmann wrote: > >> It turned out xf86-input-evdev really discards all non-multitouch events > >> (especially ABS_X and ABS_Y) events in EvdevProcessAbsoluteMotionEvent() > >> in evdev.c, if the device is configured as a multitouch device. So there > >> is a quick fix (or only workaround?), which processes ABS_X and ABS_Y > >> events even if it is a multitouch device: > >> > >> 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; > >> > >> This patch already is submitted to the xorg bugtracker and can be found > >> at [1]. > >> > >> The only remaining question is: Does it break other drivers? > >> > >> [1] https://bugs.freedesktop.org/show_bug.cgi?id=47382 > > > > Great! > > > > I haven't fully thought about it enough to give a reviewed-by, but it > > seems sane. > > > > I suggest sending the patch to xorg-devel@xxxxxxxxxxx. That's where most > > patch reviews are handled. You will likely get faster results there. > > Yep, agree thats also a great way to go. Thanks! > One thing I might suggest is to include with patch your thinking on > how a pen+multitouch device should send events to help in review of > the patch. Just the basics. For example, from above patch I have an > assumption that your sending ABS_X/Y only for PEN events and > ABS_MT_POSITION_X/Y only for touch events; but then again I'm not 100% > sure of that. That's correct. In our case, it's ABS_X/Y for pen, ABS_MT_* for fingers (normal touches). But maybe other devices behave different. So we should send something like this as an addition to the patch on the x.org list? # finger touch ABS_MT_SLOT 0 ABS_MT_TRACKING_ID 42 ABS_MT_POSITION_X finger_x ABS_MT_POSITION_Y finger_y SYN_MT_REPORT SYN_REPORT # finger release ABS_MT_SLOT 0 ABS_MT_TRACKING_ID -1 SYN_REPORT # pen motion ABS_X pen_x ABS_Y pen_y SYN_REPORT > If ABS_X/Y is only for PEN events, then pEvdev->in_proximity in > xf86-input-evdev may be a less restrictive check to allow even > BTN_STYLUS and ABS_X/Y events to be processed. The actual event source (if PEN or STYLUS or ...) shouldn't matter. (Or I just don't get your point) Thorsten -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html