[E-devel] Multi-touch callbacks?
David Grubb <[email protected]>
| Newsgroups | gmane.comp.window-managers.enlightenment.devel |
|---|---|
| Message-ID | <CA+1T4FQ-ajnO4OL+K5tWiYp7=SATweDp=cz7Uf0nJDAS5PC2+g@mail.gmail.com> |
I've been using EFL to build applications for a few years now and have been very pleased with the results the libraries enable. I have a new requirement to implement pinch-and-zoom so I need to start exploring multitouch but I'm running into a few issues getting it working. I'm testing on my laptop which has a multitouch monitor and can confirm that the driver is emitting the correct kernel MT protocol events via evtest. For example, performing a small two finger drag I see two points reported and updated before release: Event: time 1630799195.877440, type 3 (EV_ABS), code 47 (ABS_MT_SLOT), value 0 Event: time 1630799195.877440, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 2 Event: time 1630799195.877440, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 6621 Event: time 1630799195.877440, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 3292 Event: time 1630799195.877440, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1 Event: time 1630799195.877440, type 3 (EV_ABS), code 0 (ABS_X), value 6621 Event: time 1630799195.877440, type 3 (EV_ABS), code 1 (ABS_Y), value 3292 Event: time 1630799195.877440, -------------- SYN_REPORT ------------ Event: time 1630799195.885821, type 3 (EV_ABS), code 47 (ABS_MT_SLOT), value 1 Event: time 1630799195.885821, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value 3 Event: time 1630799195.885821, type 3 (EV_ABS), code 53 (ABS_MT_POSITION_X), value 5302 Event: time 1630799195.885821, type 3 (EV_ABS), code 54 (ABS_MT_POSITION_Y), value 3490 Event: time 1630799195.885821, -------------- SYN_REPORT ------------ Event: time 1630799195.943159, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value -1 Event: time 1630799195.943159, -------------- SYN_REPORT ------------ Event: time 1630799195.961918, type 3 (EV_ABS), code 47 (ABS_MT_SLOT), value 0 Event: time 1630799195.961918, type 3 (EV_ABS), code 57 (ABS_MT_TRACKING_ID), value -1 Event: time 1630799195.961918, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0 Next, I compiled EFL with the flags: disable-tslib, enable-xinput22, and enable-always-build-examples. I made a few logging additions to the evas_multi_touch example so it'd print on MULTI_x callbacks, but I'm only seeing MOUSE_x callbacks. My understanding is that the first touch point would be reported as a MOUSE_DOWN/MOUSE_MOVE, and the second concurrent point would be reported as a MULTI_x. Is this correct, and am I missing something? I'm fairly confident that the driver itself is doing the correct thing, but I'm a bit unsure about the interaction between EFL and X (N.B., the context is an OpenGL X window). If anybody has any suggestions or a direction they can point me from here I'd be very grateful. Cheers, Dave.