[Development] evdevtouch: problem with Chalkboard electronic panel & RPi

Jon Trulson jon at radscan.com
Fri Nov 2 23:16:33 CET 2012


Hi,

I was recently tasked with getting one of these going on RPI:
http://www.chalk-elec.com/?page_id=1280#!/~/product/category=3094861&id=14647624

It *almost* worked ok :)

There was a problem where evdevtouch would never detect a touch
release, and thereby never deliver a Qt::TouchPointReleased event to
the rest of qt.

This caused a variety of subtle issues with various Qt programs.

The TL;DR version: I have a change request available that I'd like
reviewed/approved.  I am not sure who to add as reviewers:

https://codereview.qt-project.org/#change,38795

It solves the problem with this panel.  I also cross tested with a
panel that already worked fine (Dell ST2220T) and see no regressions.

Longer version: evdevtouch seems to assume that when a
ABS_MT_TOUCH_MAJOR with value == 0 is emmitted, then a
Qt::TouchPointReleased should be queued.

The trouble is that this particular panel and driver (hid_ntrig) never
emits this condition, and I can find nowhere in the spec[0] were this
behavior is specified on a touch release.

As a result, a Qt::TouchPointReleased is never emitted, which causes
things to go downhill from there.

Now I check for an EV_KEY, code BTN_TOUCH, with value == 0 to emit
Qt::TouchPointReleased.

This seems to work fine on this panel.

[0]
https://www.kernel.org/doc/Documentation/input/multi-touch-protocol.txt

Thanks!

-- 
Jon Trulson

"Oh the land of the free, and the home of the brave.
  Are you heaven on Earth, or the gloom of the grave."
                 -- Iron Sky





More information about the Development mailing list