[Interest] Touch Handling Problem : QT or Driver : I'm not sure

Rob Martens rmartens at gmail.com
Thu Aug 4 22:46:41 CEST 2016


Problem Summary

Driver:

FocalTech ft5x06 TouchScreen driver.

ft5x06_ts.c

QT Code:

qevdevtouchhandler.cpp, within libQt5EglDeviceIntegration.so.5.5.0

Configuration:

type A processing (or not B type)

single touch is true

Description of problem:

When QEvdevTouchScreenData::processInputEvent gets the following (see
below) set of events an invalid touch location (always zero) is reported to
the qt Window. You can see below the full output trace (no other events
occurred).  When QT is processing the input events the second touch up
reports the y as 0, which is wrong.

The patterns seems to be the following. When QT doesn't get a ABS_Y
location after the last BTN_TOUCH Down, it reports y as 0 which is
incorrect. This always happens when y or x does not change between touches.
So if a user happens to touch in the same spot (like on a button) the
second click may not register.

Is this a problem with QT not keeping the previous Y or X location and
using that or is it a problem with the driver not reporting the X or Y
location after the touch down event? This is an annoying problem because it
means that on screens button presses are randomly missed.

*The following are from prinf statements I added
to QEvdevTouchScreenData::processInputEvent*

QEvdevTouchScreenData::processInputEvent EV_KEY, BTN_TOUCH, 1 DOWN ******
QEvdevTouchScreenData::processInputEvent EV_ABS, ABS_X, 334
QEvdevTouchScreenData::processInputEvent EV_ABS, ABS_Y, 174
QEvdevTouchScreenData::processInputEvent EV_ABS, ABS_PRESSURE, 100
QEvdevTouchScreenData::processInputEvent EV_SYN, SYN_REPORT, 0
QEvdevTouchScreenData::addTouchPoint tp.rawPositions.append(QPointF(334,
174));
QEvdevTouchScreenData::processInputEvent reportPoints()
QWindowSystemInterface::handleTouchEvent m_touchPoints.count()=1 1
x=0.695833 y=0.639706
QEvdevTouchScreenData::processInputEvent EV_KEY, BTN_TOUCH, 0   UP
QEvdevTouchScreenData::processInputEvent EV_ABS, ABS_PRESSURE, 0
QEvdevTouchScreenData::processInputEvent EV_SYN, SYN_REPORT, 0
QEvdevTouchScreenData::addTouchPoint tp.rawPositions.append(QPointF(334,
174));
QEvdevTouchScreenData::processInputEvent reportPoints()
QWindowSystemInterface::handleTouchEvent m_touchPoints.count()=1 1
x=0.695833 y=0.639706
QEvdevTouchScreenData::processInputEvent EV_KEY, BTN_TOUCH, 1 DOWN
***************
QEvdevTouchScreenData::processInputEvent EV_ABS, ABS_X, 336

>>>>>>>>>>>>>>>>>>>>>>>>>> NOTICE Y not reported because it is the same
location as before
QEvdevTouchScreenData::processInputEvent EV_ABS, ABS_PRESSURE, 100
QEvdevTouchScreenData::processInputEvent EV_SYN, SYN_REPORT, 0
QEvdevTouchScreenData::addTouchPoint tp.rawPositions.append(QPointF(336, 0));
<<<<< zero is wrong value
QEvdevTouchScreenData::processInputEvent reportPoints()
QWindowSystemInterface::handleTouchEvent m_touchPoints.count()=1 1 0.700000
0.000000 <<<<< zero is wrong value
QEvdevTouchScreenData::processInputEvent EV_KEY, BTN_TOUCH, 0   UP
QEvdevTouchScreenData::processInputEvent EV_ABS, ABS_PRESSURE, 0
QEvdevTouchScreenData::processInputEvent EV_SYN, SYN_REPORT, 0
QEvdevTouchScreenData::addTouchPoint  tp.rawPositions.append(QPointF(336, 0));
<<<<< zero is wrong value
QWindowSystemInterface::handleTouchEvent m_touchPoints.count()=1 1
x=0.700000 y=0.000000 <<<<< zero is wrong value

DTS for ft5x06

dts

  ft5x06_ts at 38 {

   compatible = "focaltech,5x06";

   reg = <0x38>;

   focaltech,family-id = <0x55>;

   pinctrl-names = "default";

   pinctrl-0 = <&ctw6120_pins>;

   interrupt-parent = <&gpio0>;

   interrupts = <3 IRQ_TYPE_EDGE_FALLING>;

   vdd-supply = <&touch_3v3_regulator>;

   vcc_i2c-supply = <&touch_3v3_regulator>;

   focaltech,irq-gpio = <&gpio0 3 0x00>;

   focaltech,display-coords = <0 0 480 272>;

   focaltech,name = "ft6x06";

   focaltech,no-force-update;

   focaltech,group-id = <1>;

   focaltech,hard-reset-delay-ms = <20>;

   focaltech,soft-reset-delay-ms = <150>;

   focaltech,num-max-touches = <1>;

   focaltech,fw-name = "ft_8610_qrd_fw.bin";

   focaltech,fw-delay-aa-ms = <100>;

   focaltech,fw-delay-55-ms = <30>;

   focaltech,fw-upgrade-id1 = <0x79>;

   focaltech,fw-upgrade-id2 = <0x08>;

   focaltech,fw-delay-readid-ms = <10>;

   focaltech,fw-delay-era-flsh-ms = <2000>;

   focaltech,fw-auto-cal;

   //focaltech,mirror_h;

   //focaltech,mirror_v;

   };

Rob
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/interest/attachments/20160804/493b0ebe/attachment.html>


More information about the Interest mailing list