AnsweredAssumed Answered

Qt 4.8 embedded - multitouch

Question asked by David W. on Oct 14, 2015

We are currently developing a graphical Qt application for an embedded system with Vybrid vf610 and we have a hard time trying to get Qt multitouch working.
Our setup is:
Qt (embedded) 4.8.5 with QWS server
Linux -  Timesys build for Vybrid vf610 with 3.13 kernel
Touchscreen driver: edt-ft5x06 (upstream version)

We managed to get touchscreen working in Qt using Tslib or LinuxInput drivers, but it registers just one finger at a time and the Qt application only receives mouse events, not touch events or gestures.
The kernel drivers seem to be working properly, touchscreen shows up as /dev/input/eventX and sends proper events of what seems to be Linux multitouch protocol B (see evtest.dump attachment)

For touchscreen testing, we have tried the tslib software (both version 1.0 with Timesys multitouch patch and version 1.1, which should support multitouch by itself). However, the inbuilt tslib test applications (ts_test, ts_print) don't seem to support multitouch by design. Single touch works properly.

In Qt, we have tried several touch, multitouch and gesture examples, but none work with more than one finger. From the source code it seems that none of the mouse drivers for QWS (qmouselinuxinput_qws.cpp, qmouselinuxtp_qws.cpp, qmousetslib_qws.cpp) support sending Qt touch events and there is no dedicated touch driver. Only the generic qlinuxinput.cpp mouse driver plugin seems to support Qt touch events using #define QT_QPA_EXPERIMENTAL_TOUCHEVENT, but doesn't seem to be available for use with QWS anyway.

Is there something what could be done that we are missing? It seems strange that there is documentation about using gestures in Qt and examples but no support for multitouch in drivers. The Internet doesn't offer many clues other than this:
http://www.ptrackapp.com/apclassys-notes/embedded-linux-multitouch/
ant that doesn't look like a proper solution.

Attachments:
evtest.dump - events from kernel touchscreen drivers
qlinuxinput.cpp - LinuxInput driver with experimental Qt touch support. Not available (?) for QWS
qmouselinuxinput_qws.cpp - LinuxInput driver for QWS, no Qt touch event support
qmousetslib_qws.cpp - Tslib driver for QWS, no Qt touch event support

Original Attachment has been moved to: qmouselinuxinput_qws.cpp.zip

Original Attachment has been moved to: evtest.dump.zip

Original Attachment has been moved to: qlinuxinput.cpp.zip

Original Attachment has been moved to: qmousetslib_qws.cpp.zip

Outcomes