diff options
author | Jon Trulson <jtrulson@ics.com> | 2012-11-02 15:47:19 -0600 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-11-11 12:10:53 +0100 |
commit | 43c4d909c574db40d2d73b0bb04ece78746cb039 (patch) | |
tree | 5022195a7a087cc4e4529311c744e15ed15890ed /src | |
parent | 21c07f56e27b6761d94fbb5105329e2393539f2a (diff) |
evdevtouch: also use BTN_TOUCH with value == 0 to detect TouchPointReleased
The current code seems to rely on an event, ABS_MT_TOUCH_MAJOR with a
value of 0 to detect a touch release. Not all devices[0] emit this, and
the spec[1] does not specify this behavior.
So, add a check for a BTN_TOUCH with a value of 0 to also indicate
Qt::TouchPointReleased.
[0]
http://www.chalk-elec.com/?page_id=1280#!/~/product/category=3094861&id=14647624
using hid_ntrig kernel module.
[1] https://www.kernel.org/doc/Documentation/input/multi-touch-protocol.txt
Change-Id: I4fc8ff404cad2083a57ff18737c5ea2b06d8ceac
Reviewed-by: Robert Daniels <robert.daniels@vantagecontrols.com>
Reviewed-by: Laszlo Agocs <lagocs83@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/platformsupport/input/evdevtouch/qevdevtouch.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/platformsupport/input/evdevtouch/qevdevtouch.cpp b/src/platformsupport/input/evdevtouch/qevdevtouch.cpp index 0a3bd8d669..9dd607b425 100644 --- a/src/platformsupport/input/evdevtouch/qevdevtouch.cpp +++ b/src/platformsupport/input/evdevtouch/qevdevtouch.cpp @@ -350,6 +350,11 @@ void QEvdevTouchScreenData::processInputEvent(input_event *data) m_currentSlot = data->value; } + } else if (data->type == EV_KEY && !m_typeB) { + if (data->code == BTN_TOUCH && data->value == 0) + { + m_contacts[m_currentSlot].state = Qt::TouchPointReleased; + } } else if (data->type == EV_SYN && data->code == SYN_MT_REPORT && m_lastEventType != EV_SYN) { // If there is no tracking id, one will be generated later. |