Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Kivy touch events not working on Raspberry PI with Adafruit PiTFT #2656

Closed
iluminite opened this issue Nov 9, 2014 · 40 comments
Closed

Kivy touch events not working on Raspberry PI with Adafruit PiTFT #2656

iluminite opened this issue Nov 9, 2014 · 40 comments
Assignees
Milestone

Comments

@iluminite
Copy link

Hi!

I have an Adafruit 2.8in LCD with a resistive touchscreen [1], connected to a Raspberry Pi and working with Kivy. I have had to use fbcp [2] to get this setup to work with Kivy, but that is fine. While I have seen issues with idle apps using 30-40% CPU (as per htop), the primary blocker in my setup is that the touchscreen errors out with Kivy.

I can create a Button in a Kivy App and press it, Kivy does see the touch, but errors out:

[INFO              ] [HIDMotionEvent] using <stmpe-ts>
 Exception in thread Thread-1:
 Traceback (most recent call last):
   File "/usr/lib/python2.7/threading.py", line 552, in __bootstrap_inner
     self.run()
   File "/usr/lib/python2.7/threading.py", line 505, in run
     self.__target(*self.__args, **self.__kwargs)
   File "/home/pi/kivy/kivy/input/providers/hidinput.py", line 580, in _thread_run
     process_as_mouse_or_keyboard(*infos)
   File "/home/pi/kivy/kivy/input/providers/hidinput.py", line 456, in process_as_mouse_or_keyboard
   l = keyboard_keys[ev_code][-1 if 'shift' in Window._modifiers else 0]
 KeyError: 330

Here are a few additional notes:

  • After this, I am unable to get another button press to register in the log, but the app is still running and updating the screen.
  • The above errors were seen with kKivy installed from git master from a few days ago, I will update to latest master and retry.
  • I can debug, build, etc, specific branches, patches, etc.. anything to help this move along.

[1] https://www.adafruit.com/prohttps://www.adafruit.com/product/1601duct/1601
[2] https://github.com/tasanakorn/rpi-fbcp

@iluminite
Copy link
Author

Update: I fetched the lastest from github, updated my local master with origin/master, and ran make to rebuild local kivy (I have PYTHONPATH set to this path in ~/.profile). Touch events still error as noted above.

@iluminite
Copy link
Author

To confirm: The touchscreen works with X, it sees input as expected, it is only when using the touchscreen with kivy that I see problems.

@dessant dessant added the Status: Needs-analysis Issue needs to be analyzed if it's real label Nov 9, 2014
@iluminite
Copy link
Author

Please let me know if there is anything I can do to investigate/debug/etc. I'm not familiar enough with what is different on RPi, is there a sensible place in the code I can start digging?

@dessant
Copy link
Contributor

dessant commented Nov 9, 2014

Tito's observations regarding this bug:

tito: 0x14a (330) is not in the keyboard_keys
tito: one way to debug would be to actually see what key is it, or why the touchscreen sends a key event
tito: even so, the code could be updated to handle unknown keys and not crash
tito: so yes, 330 is just an unhandled key that needs to be either added, or the code to be adapted to ignore it

@iluminite
Copy link
Author

I've tested by adding an entry for key 330 like so:

@@ -439,6 +440,7 @@ else:

             elif ev_type == EV_KEY:
                 buttons = {
+                    330: 'touch',
                     272: 'left',
                     273: 'right',
                     274: 'middle',

Kivy does not crash, but the hidinput provider is not doing anything else with the events, and Kivy does not register button presses. I'm still not fully groking hidinput.py and event processing, so guidance on how to help Kivy pick up on these events is appreciated.

Another note:

Further down, I added a crude print on infos to confirm Kivy is seeing/processing the touch data:

@@ -583,6 +586,12 @@ else:
                     # extract timeval + event infos
                     infos = struct.unpack('LLHHi', ev[:struct_input_event_sz])

+                    print infos

This works, and I see the infos struct when I touch the screen. Looks like:

(1415580611, 560887, 0, 0, 0)
(1415580611, 569443, 3, 0, 3185)
(1415580611, 569443, 3, 1, 2814)
(1415580611, 569443, 3, 24, 147)
(1415580611, 569443, 0, 0, 0)
(1415580611, 581592, 3, 0, 3106)
(1415580611, 581592, 3, 1, 2880) 
(1415580611, 581592, 3, 24, 117)
(1415580611, 581592, 0, 0, 0)
(1415580611, 588482, 3, 0, 3098)
(1415580611, 588482, 3, 1, 2850)
(1415580611, 588482, 3, 24, 136)
(1415580611, 588482, 0, 0, 0)
(1415580611, 634838, 3, 0, 3081)
(1415580611, 634838, 3, 1, 2860)
(1415580611, 634838, 3, 24, 121)

...so Kivy is at least processing the touch data.

@iluminite
Copy link
Author

@kived, @tshirtman, @tito, @dessant,

I have been reading through hidinput.py to better understand what is missing, but I have not been able to identify what this module needs to properly register the HIDMotionEvents for this touchscreen on the RaspberryPi. I appreciate any insights, pointers, and debugging help - I am willing to code, but also having a difficult time understanding all of Kivy that is relevant here.

@sonovice
Copy link

I have the exact same problem with this touchscreen: http://www.chalk-elec.com/?p=1712
Seems as if the used input controller is a commonly used piece of hardware in the rpy display world. A fix would be great. If i can assist in any way with testing etc. let me know.

Here is the output of evtest:

pi@raspberrypi ~ $ evtest /dev/input/event0
Input driver version is 1.0.1
Input device ID: bus 0x3 vendor 0x4d8 product 0xf723 version 0x111
Input device name: "Chalkboard Electronics HID Touchscreen"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 256 (BTN_0)
    Event code 320 (BTN_TOOL_PEN)
    Event code 321 (BTN_TOOL_RUBBER)
    Event code 330 (BTN_TOUCH)
    Event code 331 (BTN_STYLUS)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value    600
      Min        0
      Max      800
    Event code 1 (ABS_Y)
      Value     96
      Min        0
      Max      800
    Event code 24 (ABS_PRESSURE)
      Value      0
      Min        0
      Max      800
    Event code 26 (ABS_TILT_X)
      Value      0
      Min   -32767
      Max      800
    Event code 27 (ABS_TILT_Y)
      Value      0
      Min   -32767
      Max      800
  Event type 4 (EV_MSC)
    Event code 4 (MSC_SCAN)
Properties:
Testing ... (interrupt to exit)
Event: time 1416335023.954651, type 4 (EV_MSC), code 4 (MSC_SCAN), value d0042
Event: time 1416335023.954651, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1416335023.954651, type 1 (EV_KEY), code 320 (BTN_TOOL_PEN), value 1
Event: time 1416335023.954651, type 3 (EV_ABS), code 0 (ABS_X), value 346
Event: time 1416335023.954651, type 3 (EV_ABS), code 1 (ABS_Y), value 498
Event: time 1416335023.954651, -------------- SYN_REPORT ------------
Event: time 1416335024.030632, type 3 (EV_ABS), code 1 (ABS_Y), value 486
Event: time 1416335024.030632, -------------- SYN_REPORT ------------
Event: time 1416335024.050655, type 3 (EV_ABS), code 0 (ABS_X), value 352
Event: time 1416335024.050655, -------------- SYN_REPORT ------------
Event: time 1416335024.070660, type 3 (EV_ABS), code 0 (ABS_X), value 401
Event: time 1416335024.070660, type 3 (EV_ABS), code 1 (ABS_Y), value 425
Event: time 1416335024.070660, -------------- SYN_REPORT ------------
Event: time 1416335024.090655, type 3 (EV_ABS), code 0 (ABS_X), value 437
Event: time 1416335024.090655, type 3 (EV_ABS), code 1 (ABS_Y), value 394
Event: time 1416335024.090655, -------------- SYN_REPORT ------------
Event: time 1416335024.110658, type 3 (EV_ABS), code 0 (ABS_X), value 467
Event: time 1416335024.110658, type 3 (EV_ABS), code 1 (ABS_Y), value 389
Event: time 1416335024.110658, -------------- SYN_REPORT ------------
Event: time 1416335024.150651, type 4 (EV_MSC), code 4 (MSC_SCAN), value d0042
Event: time 1416335024.150651, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
Event: time 1416335024.150651, type 1 (EV_KEY), code 320 (BTN_TOOL_PEN), value 0
Event: time 1416335024.150651, -------------- SYN_REPORT ------------



pi@raspberrypi ~ $ cat /etc/*-release
PRETTY_NAME="Raspbian GNU/Linux 7 (wheezy)"
NAME="Raspbian GNU/Linux"
VERSION_ID="7"
VERSION="7 (wheezy)"
ID=raspbian
ID_LIKE=debian
ANSI_COLOR="1;31"
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"

pi@raspberrypi ~ $ cat /proc/version
Linux version 3.12.28+ (dc4@dc4-XPS13-9333) (gcc version 4.8.3 20140303 (prerelease) (crosstool-NG linaro-1.13

According to this, the keycodes 320 and 330 are simple touch events.

@tito
Copy link
Member

tito commented Nov 19, 2014

@sonovice did you use just a touch, or a pen to touch the screen? Cause here we are seeing 2 different keycode as you said. If we dispatch both directly, you might have issues with it, like constently trigger a double tap.

For now, i'll add 330, and ignore 320.

@tito
Copy link
Member

tito commented Nov 19, 2014

@sonovice i think morefix is needed for you no? Did you try to add only

--- a/kivy/input/providers/hidinput.py
+++ b/kivy/input/providers/hidinput.py
@@ -446,7 +446,9 @@ else:
                         276: 'extra',
                         277: 'forward',
                         278: 'back',
-                        279: 'task'}
+                        279: 'task',
+                        330: 'touch',
+                        320: 'pen'}

                     if ev_code in buttons.keys():
                         if ev_value:

?

@sonovice
Copy link

@tito I tried that already with no effect (except from avoiding the error). A pen is not used, only a single finger.

@iluminite
Copy link
Author

@tito, I've tested with both pen and finger and get similar results. I should also clarify that simply adding in these magic numbers is not enough for kivy to respond correctly - with the magic we wipe away the error, but kivy is not yet setting up button presses and similar types of events. When I last dug into this, I was unable to traverse enough of the code to understand why that was not happening. My apologies if this is not clear enough.

@sonovice
Copy link

What I have tried is to define 330 as 'left' and 320 to be ignored... Didn't work out either.

@tito
Copy link
Member

tito commented Nov 19, 2014

Yep, that's what i see from the evdev trace. For non-multitouch devices, we don't handle EV_ABS, only EV_REL (ie, a mouse).

It need more work to get it right. Because @sonovice already give a output example of evtest, @illumin-us-r3v0lution, could you do the same please? This will ensure me the similarities of a Rpi touchscreen, and try to do the work based on thoses output.

What i need (separated evtest):

  • a log with a single touch down/up, very fast, with no movement if possible (this will ensure me that we always have at least one EV_ABS event for X and Y. If not, it means i must rely on a previous informations).
  • a log with a single touch down / move the finger / release.
  • a log with a single touch down, a second touch down, move both, release. (if the screen is multitouch, but i don't think so right?)

Thanks!

@sonovice
Copy link

@tito Here we go. Your second scenario is already covered with my posted evtest output.

Single touch:

[...]
Event: time 1416465955.075375, type 4 (EV_MSC), code 4 (MSC_SCAN), value d0042
Event: time 1416465955.075375, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1416465955.075375, type 1 (EV_KEY), code 320 (BTN_TOOL_PEN), value 1
Event: time 1416465955.075375, type 3 (EV_ABS), code 0 (ABS_X), value 96
Event: time 1416465955.075375, type 3 (EV_ABS), code 1 (ABS_Y), value 408
Event: time 1416465955.075375, -------------- SYN_REPORT ------------
Event: time 1416465955.135359, type 4 (EV_MSC), code 4 (MSC_SCAN), value d0042
Event: time 1416465955.135359, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
Event: time 1416465955.135359, type 1 (EV_KEY), code 320 (BTN_TOOL_PEN), value 0
Event: time 1416465955.135359, -------------- SYN_REPORT ------------

"Multitouch":

[...]
Event: time 1416466015.944550, type 4 (EV_MSC), code 4 (MSC_SCAN), value d0042
Event: time 1416466015.944550, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1416466015.944550, type 1 (EV_KEY), code 320 (BTN_TOOL_PEN), value 1
Event: time 1416466015.944550, type 3 (EV_ABS), code 0 (ABS_X), value 156
Event: time 1416466015.944550, type 3 (EV_ABS), code 1 (ABS_Y), value 310
Event: time 1416466015.944550, -------------- SYN_REPORT ------------
Event: time 1416466017.228632, type 3 (EV_ABS), code 0 (ABS_X), value 165
Event: time 1416466017.228632, type 3 (EV_ABS), code 1 (ABS_Y), value 323
Event: time 1416466017.228632, -------------- SYN_REPORT ------------
Event: time 1416466017.248653, type 3 (EV_ABS), code 1 (ABS_Y), value 328
Event: time 1416466017.248653, -------------- SYN_REPORT ------------
Event: time 1416466017.268654, type 3 (EV_ABS), code 0 (ABS_X), value 173
Event: time 1416466017.268654, -------------- SYN_REPORT ------------
Event: time 1416466017.288657, type 3 (EV_ABS), code 0 (ABS_X), value 175
Event: time 1416466017.288657, type 3 (EV_ABS), code 1 (ABS_Y), value 331
Event: time 1416466017.288657, -------------- SYN_REPORT ------------
Event: time 1416466017.304662, type 3 (EV_ABS), code 0 (ABS_X), value 176
Event: time 1416466017.304662, type 3 (EV_ABS), code 1 (ABS_Y), value 332
Event: time 1416466017.304662, -------------- SYN_REPORT ------------
Event: time 1416466017.324660, type 3 (EV_ABS), code 0 (ABS_X), value 179
Event: time 1416466017.324660, type 3 (EV_ABS), code 1 (ABS_Y), value 335
Event: time 1416466017.324660, -------------- SYN_REPORT ------------
Event: time 1416466017.344663, type 3 (EV_ABS), code 0 (ABS_X), value 181
Event: time 1416466017.344663, type 3 (EV_ABS), code 1 (ABS_Y), value 336
Event: time 1416466017.344663, -------------- SYN_REPORT ------------
Event: time 1416466017.364666, type 3 (EV_ABS), code 1 (ABS_Y), value 340
Event: time 1416466017.364666, -------------- SYN_REPORT ------------
Event: time 1416466017.384666, type 3 (EV_ABS), code 0 (ABS_X), value 184
Event: time 1416466017.384666, -------------- SYN_REPORT ------------
Event: time 1416466017.404667, type 3 (EV_ABS), code 0 (ABS_X), value 187
Event: time 1416466017.404667, type 3 (EV_ABS), code 1 (ABS_Y), value 345
Event: time 1416466017.404667, -------------- SYN_REPORT ------------
Event: time 1416466017.424670, type 3 (EV_ABS), code 0 (ABS_X), value 190
Event: time 1416466017.424670, type 3 (EV_ABS), code 1 (ABS_Y), value 350
Event: time 1416466017.424670, -------------- SYN_REPORT ------------
Event: time 1416466017.444670, type 3 (EV_ABS), code 0 (ABS_X), value 192
Event: time 1416466017.444670, type 3 (EV_ABS), code 1 (ABS_Y), value 358
Event: time 1416466017.444670, -------------- SYN_REPORT ------------
Event: time 1416466017.460673, type 3 (EV_ABS), code 0 (ABS_X), value 195
Event: time 1416466017.460673, type 3 (EV_ABS), code 1 (ABS_Y), value 370
Event: time 1416466017.460673, -------------- SYN_REPORT ------------
Event: time 1416466017.480672, type 3 (EV_ABS), code 1 (ABS_Y), value 377
Event: time 1416466017.480672, -------------- SYN_REPORT ------------
Event: time 1416466017.500675, type 3 (EV_ABS), code 0 (ABS_X), value 197
Event: time 1416466017.500675, -------------- SYN_REPORT ------------
Event: time 1416466017.520677, type 3 (EV_ABS), code 0 (ABS_X), value 199
Event: time 1416466017.520677, type 3 (EV_ABS), code 1 (ABS_Y), value 383
Event: time 1416466017.520677, -------------- SYN_REPORT ------------
Event: time 1416466017.540681, type 3 (EV_ABS), code 0 (ABS_X), value 200
Event: time 1416466017.540681, type 3 (EV_ABS), code 1 (ABS_Y), value 390
Event: time 1416466017.540681, -------------- SYN_REPORT ------------
Event: time 1416466017.560680, type 3 (EV_ABS), code 0 (ABS_X), value 203
Event: time 1416466017.560680, type 3 (EV_ABS), code 1 (ABS_Y), value 400
Event: time 1416466017.560680, -------------- SYN_REPORT ------------
Event: time 1416466017.580680, type 3 (EV_ABS), code 1 (ABS_Y), value 407
Event: time 1416466017.580680, -------------- SYN_REPORT ------------
Event: time 1416466017.596683, type 3 (EV_ABS), code 0 (ABS_X), value 204
Event: time 1416466017.596683, -------------- SYN_REPORT ------------
Event: time 1416466017.616686, type 3 (EV_ABS), code 0 (ABS_X), value 205
Event: time 1416466017.616686, type 3 (EV_ABS), code 1 (ABS_Y), value 415
Event: time 1416466017.616686, -------------- SYN_REPORT ------------
Event: time 1416466017.636688, type 3 (EV_ABS), code 1 (ABS_Y), value 421
Event: time 1416466017.636688, -------------- SYN_REPORT ------------
Event: time 1416466017.656689, type 3 (EV_ABS), code 0 (ABS_X), value 204
Event: time 1416466017.656689, type 3 (EV_ABS), code 1 (ABS_Y), value 428
Event: time 1416466017.656689, -------------- SYN_REPORT ------------
Event: time 1416466017.676691, type 3 (EV_ABS), code 0 (ABS_X), value 202
Event: time 1416466017.676691, type 3 (EV_ABS), code 1 (ABS_Y), value 435
Event: time 1416466017.676691, -------------- SYN_REPORT ------------
Event: time 1416466017.696695, type 3 (EV_ABS), code 1 (ABS_Y), value 440
Event: time 1416466017.696695, -------------- SYN_REPORT ------------
Event: time 1416466017.716694, type 3 (EV_ABS), code 0 (ABS_X), value 201
Event: time 1416466017.716694, -------------- SYN_REPORT ------------
Event: time 1416466017.732695, type 3 (EV_ABS), code 0 (ABS_X), value 200
Event: time 1416466017.732695, type 3 (EV_ABS), code 1 (ABS_Y), value 445
Event: time 1416466017.732695, -------------- SYN_REPORT ------------
Event: time 1416466017.752696, type 3 (EV_ABS), code 0 (ABS_X), value 198
Event: time 1416466017.752696, type 3 (EV_ABS), code 1 (ABS_Y), value 450
Event: time 1416466017.752696, -------------- SYN_REPORT ------------
Event: time 1416466017.772703, type 3 (EV_ABS), code 0 (ABS_X), value 197
Event: time 1416466017.772703, type 3 (EV_ABS), code 1 (ABS_Y), value 455
Event: time 1416466017.772703, -------------- SYN_REPORT ------------
Event: time 1416466017.792699, type 3 (EV_ABS), code 0 (ABS_X), value 194
Event: time 1416466017.792699, type 3 (EV_ABS), code 1 (ABS_Y), value 461
Event: time 1416466017.792699, -------------- SYN_REPORT ------------
Event: time 1416466017.812702, type 3 (EV_ABS), code 1 (ABS_Y), value 465
Event: time 1416466017.812702, -------------- SYN_REPORT ------------
Event: time 1416466017.832704, type 3 (EV_ABS), code 0 (ABS_X), value 192
Event: time 1416466017.832704, -------------- SYN_REPORT ------------
Event: time 1416466017.852704, type 3 (EV_ABS), code 0 (ABS_X), value 190
Event: time 1416466017.852704, type 3 (EV_ABS), code 1 (ABS_Y), value 468
Event: time 1416466017.852704, -------------- SYN_REPORT ------------
Event: time 1416466017.868704, type 3 (EV_ABS), code 0 (ABS_X), value 189
Event: time 1416466017.868704, type 3 (EV_ABS), code 1 (ABS_Y), value 471
Event: time 1416466017.868704, -------------- SYN_REPORT ------------
Event: time 1416466017.888709, type 3 (EV_ABS), code 1 (ABS_Y), value 472
Event: time 1416466017.888709, -------------- SYN_REPORT ------------
Event: time 1416466017.908709, type 3 (EV_ABS), code 0 (ABS_X), value 188
Event: time 1416466017.908709, type 3 (EV_ABS), code 1 (ABS_Y), value 473
Event: time 1416466017.908709, -------------- SYN_REPORT ------------
Event: time 1416466018.316726, type 3 (EV_ABS), code 0 (ABS_X), value 639
Event: time 1416466018.316726, type 3 (EV_ABS), code 1 (ABS_Y), value 246
Event: time 1416466018.316726, -------------- SYN_REPORT ------------
Event: time 1416466018.704763, type 4 (EV_MSC), code 4 (MSC_SCAN), value d0042
Event: time 1416466018.704763, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
Event: time 1416466018.704763, type 1 (EV_KEY), code 320 (BTN_TOOL_PEN), value 0
Event: time 1416466018.704763, -------------- SYN_REPORT ------------

Although the touchscreen should support multitouch it doesn't look like it... too bad, but I don't really need that for my application.

Thank you for taking care of the problem, tito! Hope these outputs are valuable for you.

tito added a commit that referenced this issue Nov 20, 2014
@tito tito self-assigned this Nov 20, 2014
@tito tito added this to the 1.9.0 milestone Nov 20, 2014
@tito tito added Component: core-providers kivy/core Platform: RPi and removed Status: Needs-analysis Issue needs to be analyzed if it's real labels Nov 20, 2014
@tito
Copy link
Member

tito commented Nov 20, 2014

@sonovice @illumin-us-r3v0lution Could you try the branch named support-rpi-touchscreen ?

@iluminite
Copy link
Author

@tito,

Here are the evtest logs for you:

Start up:

root@raspberrypi:~# evtest /dev/input/event0
Input driver version is 1.0.1
Input device ID: bus 0x18 vendor 0x0 product 0x0 version 0x0
Input device name: "stmpe-ts"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 330 (BTN_TOUCH)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value      0
      Min        0
      Max     4095
    Event code 1 (ABS_Y)
      Value      0
      Min        0
      Max     4095
    Event code 24 (ABS_PRESSURE)
      Value      0
      Min        0
      Max      255
Properties:
Testing ... (interrupt to exit)

Single tap, my nail more than my finger (this is a resistive touch):

Event: time 1416481574.116747, type 3 (EV_ABS), code 0 (ABS_X), value 3181
Event: time 1416481574.116747, type 3 (EV_ABS), code 1 (ABS_Y), value 2812
Event: time 1416481574.116747, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 151
Event: time 1416481574.116747, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1416481574.116747, -------------- SYN_REPORT ------------
Event: time 1416481574.131822, type 3 (EV_ABS), code 0 (ABS_X), value 3205
Event: time 1416481574.131822, type 3 (EV_ABS), code 1 (ABS_Y), value 2798
Event: time 1416481574.131822, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 124
Event: time 1416481574.131822, -------------- SYN_REPORT ------------
Event: time 1416481574.158533, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 0
Event: time 1416481574.158533, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
Event: time 1416481574.158533, -------------- SYN_REPORT ------------

Down, move, up:

Testing ... (interrupt to exit)
Event: time 1416481886.150564, type 3 (EV_ABS), code 0 (ABS_X), value 1675
Event: time 1416481886.150564, type 3 (EV_ABS), code 1 (ABS_Y), value 3441
Event: time 1416481886.150564, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 134
Event: time 1416481886.150564, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1416481886.150564, -------------- SYN_REPORT ------------
Event: time 1416481886.158198, type 3 (EV_ABS), code 0 (ABS_X), value 1674
Event: time 1416481886.158198, type 3 (EV_ABS), code 1 (ABS_Y), value 3459
Event: time 1416481886.158198, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 130
Event: time 1416481886.158198, -------------- SYN_REPORT ------------
Event: time 1416481886.165575, type 3 (EV_ABS), code 0 (ABS_X), value 1669
Event: time 1416481886.165575, type 3 (EV_ABS), code 1 (ABS_Y), value 3427
Event: time 1416481886.165575, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 127
Event: time 1416481886.165575, -------------- SYN_REPORT ------------
Event: time 1416481886.172842, type 3 (EV_ABS), code 1 (ABS_Y), value 3435
Event: time 1416481886.172842, -------------- SYN_REPORT ------------
Event: time 1416481886.180302, type 3 (EV_ABS), code 0 (ABS_X), value 1671
Event: time 1416481886.180302, type 3 (EV_ABS), code 1 (ABS_Y), value 3389
Event: time 1416481886.180302, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 129
Event: time 1416481886.180302, -------------- SYN_REPORT ------------
Event: time 1416481886.187879, type 3 (EV_ABS), code 0 (ABS_X), value 1684
Event: time 1416481886.187879, type 3 (EV_ABS), code 1 (ABS_Y), value 3423
Event: time 1416481886.187879, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 131
Event: time 1416481886.187879, -------------- SYN_REPORT ------------
Event: time 1416481886.195269, type 3 (EV_ABS), code 0 (ABS_X), value 1715
Event: time 1416481886.195269, type 3 (EV_ABS), code 1 (ABS_Y), value 3403
Event: time 1416481886.195269, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 129
Event: time 1416481886.195269, -------------- SYN_REPORT ------------
Event: time 1416481886.202557, type 3 (EV_ABS), code 0 (ABS_X), value 1765
Event: time 1416481886.202557, type 3 (EV_ABS), code 1 (ABS_Y), value 3372
Event: time 1416481886.202557, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 127
Event: time 1416481886.202557, -------------- SYN_REPORT ------------
Event: time 1416481886.210043, type 3 (EV_ABS), code 0 (ABS_X), value 1802
Event: time 1416481886.210043, type 3 (EV_ABS), code 1 (ABS_Y), value 3351
Event: time 1416481886.210043, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 133
Event: time 1416481886.210043, -------------- SYN_REPORT ------------
Event: time 1416481886.217668, type 3 (EV_ABS), code 0 (ABS_X), value 1846
Event: time 1416481886.217668, type 3 (EV_ABS), code 1 (ABS_Y), value 3311
Event: time 1416481886.217668, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 129
Event: time 1416481886.217668, -------------- SYN_REPORT ------------
Event: time 1416481886.225221, type 3 (EV_ABS), code 0 (ABS_X), value 1890
Event: time 1416481886.225221, type 3 (EV_ABS), code 1 (ABS_Y), value 3267
Event: time 1416481886.225221, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 131
Event: time 1416481886.225221, -------------- SYN_REPORT ------------
Event: time 1416481886.232733, type 3 (EV_ABS), code 0 (ABS_X), value 1918
Event: time 1416481886.232733, type 3 (EV_ABS), code 1 (ABS_Y), value 3243
Event: time 1416481886.232733, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 137
Event: time 1416481886.232733, -------------- SYN_REPORT ------------
Event: time 1416481886.240245, type 3 (EV_ABS), code 0 (ABS_X), value 1935
Event: time 1416481886.240245, type 3 (EV_ABS), code 1 (ABS_Y), value 3224
Event: time 1416481886.240245, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 140
Event: time 1416481886.240245, -------------- SYN_REPORT ------------
Event: time 1416481886.248451, type 3 (EV_ABS), code 0 (ABS_X), value 1952
Event: time 1416481886.248451, type 3 (EV_ABS), code 1 (ABS_Y), value 3235
Event: time 1416481886.248451, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 134
Event: time 1416481886.248451, -------------- SYN_REPORT ------------
Event: time 1416481886.255802, type 3 (EV_ABS), code 0 (ABS_X), value 1960
Event: time 1416481886.255802, type 3 (EV_ABS), code 1 (ABS_Y), value 3195
Event: time 1416481886.255802, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 133
Event: time 1416481886.255802, -------------- SYN_REPORT ------------
Event: time 1416481886.263087, type 3 (EV_ABS), code 0 (ABS_X), value 1957
Event: time 1416481886.263087, type 3 (EV_ABS), code 1 (ABS_Y), value 3192
Event: time 1416481886.263087, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 132
Event: time 1416481886.263087, -------------- SYN_REPORT ------------
Event: time 1416481886.270422, type 3 (EV_ABS), code 0 (ABS_X), value 1955
Event: time 1416481886.270422, type 3 (EV_ABS), code 1 (ABS_Y), value 3220
Event: time 1416481886.270422, -------------- SYN_REPORT ------------
Event: time 1416481886.277816, type 3 (EV_ABS), code 0 (ABS_X), value 1951
Event: time 1416481886.277816, type 3 (EV_ABS), code 1 (ABS_Y), value 3187
Event: time 1416481886.277816, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 133
Event: time 1416481886.277816, -------------- SYN_REPORT ------------
Event: time 1416481886.285337, type 3 (EV_ABS), code 0 (ABS_X), value 1945
Event: time 1416481886.285337, type 3 (EV_ABS), code 1 (ABS_Y), value 3184
Event: time 1416481886.285337, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 132
Event: time 1416481886.285337, -------------- SYN_REPORT ------------
Event: time 1416481886.292663, type 3 (EV_ABS), code 0 (ABS_X), value 1942
Event: time 1416481886.292663, type 3 (EV_ABS), code 1 (ABS_Y), value 3155
Event: time 1416481886.292663, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 133
Event: time 1416481886.292663, -------------- SYN_REPORT ------------
Event: time 1416481886.300081, type 3 (EV_ABS), code 0 (ABS_X), value 1923
Event: time 1416481886.300081, type 3 (EV_ABS), code 1 (ABS_Y), value 3139
Event: time 1416481886.300081, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 132
Event: time 1416481886.300081, -------------- SYN_REPORT ------------
Event: time 1416481886.307496, type 3 (EV_ABS), code 0 (ABS_X), value 1919
Event: time 1416481886.307496, type 3 (EV_ABS), code 1 (ABS_Y), value 3093
Event: time 1416481886.307496, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 131
Event: time 1416481886.307496, -------------- SYN_REPORT ------------
Event: time 1416481886.314806, type 3 (EV_ABS), code 0 (ABS_X), value 1906
Event: time 1416481886.314806, type 3 (EV_ABS), code 1 (ABS_Y), value 3117
Event: time 1416481886.314806, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 129
Event: time 1416481886.314806, -------------- SYN_REPORT ------------
Event: time 1416481886.322261, type 3 (EV_ABS), code 0 (ABS_X), value 1896
Event: time 1416481886.322261, type 3 (EV_ABS), code 1 (ABS_Y), value 3075
Event: time 1416481886.322261, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 132
Event: time 1416481886.322261, -------------- SYN_REPORT ------------
Event: time 1416481886.329843, type 3 (EV_ABS), code 0 (ABS_X), value 1884
Event: time 1416481886.329843, type 3 (EV_ABS), code 1 (ABS_Y), value 3084
Event: time 1416481886.329843, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 134
Event: time 1416481886.329843, -------------- SYN_REPORT ------------
Event: time 1416481886.337436, type 3 (EV_ABS), code 0 (ABS_X), value 1873
Event: time 1416481886.337436, type 3 (EV_ABS), code 1 (ABS_Y), value 3095
Event: time 1416481886.337436, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 138
Event: time 1416481886.337436, -------------- SYN_REPORT ------------
Event: time 1416481886.344849, type 3 (EV_ABS), code 0 (ABS_X), value 1865
Event: time 1416481886.344849, type 3 (EV_ABS), code 1 (ABS_Y), value 3046
Event: time 1416481886.344849, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 141
Event: time 1416481886.344849, -------------- SYN_REPORT ------------
Event: time 1416481886.352379, type 3 (EV_ABS), code 0 (ABS_X), value 1848
Event: time 1416481886.352379, type 3 (EV_ABS), code 1 (ABS_Y), value 2986
Event: time 1416481886.352379, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 144
Event: time 1416481886.352379, -------------- SYN_REPORT ------------
Event: time 1416481886.359946, type 3 (EV_ABS), code 0 (ABS_X), value 1840
Event: time 1416481886.359946, type 3 (EV_ABS), code 1 (ABS_Y), value 3007
Event: time 1416481886.359946, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 139
Event: time 1416481886.359946, -------------- SYN_REPORT ------------
Event: time 1416481886.367503, type 3 (EV_ABS), code 0 (ABS_X), value 1826
Event: time 1416481886.367503, type 3 (EV_ABS), code 1 (ABS_Y), value 3026
Event: time 1416481886.367503, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 137
Event: time 1416481886.367503, -------------- SYN_REPORT ------------
Event: time 1416481886.375171, type 3 (EV_ABS), code 0 (ABS_X), value 1816
Event: time 1416481886.375171, type 3 (EV_ABS), code 1 (ABS_Y), value 2974
Event: time 1416481886.375171, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 140
Event: time 1416481886.375171, -------------- SYN_REPORT ------------
Event: time 1416481886.382747, type 3 (EV_ABS), code 0 (ABS_X), value 1805
Event: time 1416481886.382747, type 3 (EV_ABS), code 1 (ABS_Y), value 2947
Event: time 1416481886.382747, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 146
Event: time 1416481886.382747, -------------- SYN_REPORT ------------
Event: time 1416481886.390173, type 3 (EV_ABS), code 0 (ABS_X), value 1804
Event: time 1416481886.390173, type 3 (EV_ABS), code 1 (ABS_Y), value 2916
Event: time 1416481886.390173, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 141
Event: time 1416481886.390173, -------------- SYN_REPORT ------------
Event: time 1416481886.397648, type 3 (EV_ABS), code 1 (ABS_Y), value 2890
Event: time 1416481886.397648, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 133
Event: time 1416481886.397648, -------------- SYN_REPORT ------------
Event: time 1416481886.408953, type 3 (EV_ABS), code 0 (ABS_X), value 1782
Event: time 1416481886.408953, type 3 (EV_ABS), code 1 (ABS_Y), value 2787
Event: time 1416481886.408953, -------------- SYN_REPORT ------------
Event: time 1416481886.416437, type 3 (EV_ABS), code 0 (ABS_X), value 1771
Event: time 1416481886.416437, type 3 (EV_ABS), code 1 (ABS_Y), value 2812
Event: time 1416481886.416437, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 139
Event: time 1416481886.416437, -------------- SYN_REPORT ------------
Event: time 1416481886.424020, type 3 (EV_ABS), code 0 (ABS_X), value 1754
Event: time 1416481886.424020, type 3 (EV_ABS), code 1 (ABS_Y), value 2787
Event: time 1416481886.424020, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 146
Event: time 1416481886.424020, -------------- SYN_REPORT ------------
Event: time 1416481886.431592, type 3 (EV_ABS), code 0 (ABS_X), value 1743
Event: time 1416481886.431592, type 3 (EV_ABS), code 1 (ABS_Y), value 2758
Event: time 1416481886.431592, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 143
Event: time 1416481886.431592, -------------- SYN_REPORT ------------
Event: time 1416481886.439147, type 3 (EV_ABS), code 0 (ABS_X), value 1719
Event: time 1416481886.439147, type 3 (EV_ABS), code 1 (ABS_Y), value 2717
Event: time 1416481886.439147, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 134
Event: time 1416481886.439147, -------------- SYN_REPORT ------------
Event: time 1416481886.446723, type 3 (EV_ABS), code 0 (ABS_X), value 1711
Event: time 1416481886.446723, type 3 (EV_ABS), code 1 (ABS_Y), value 2686
Event: time 1416481886.446723, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 139
Event: time 1416481886.446723, -------------- SYN_REPORT ------------
Event: time 1416481886.454217, type 3 (EV_ABS), code 0 (ABS_X), value 1706
Event: time 1416481886.454217, type 3 (EV_ABS), code 1 (ABS_Y), value 2646
Event: time 1416481886.454217, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 142
Event: time 1416481886.454217, -------------- SYN_REPORT ------------
Event: time 1416481886.461735, type 3 (EV_ABS), code 0 (ABS_X), value 1704
Event: time 1416481886.461735, type 3 (EV_ABS), code 1 (ABS_Y), value 2622
Event: time 1416481886.461735, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 138
Event: time 1416481886.461735, -------------- SYN_REPORT ------------
Event: time 1416481886.469228, type 3 (EV_ABS), code 0 (ABS_X), value 1696
Event: time 1416481886.469228, type 3 (EV_ABS), code 1 (ABS_Y), value 2575
Event: time 1416481886.469228, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 135
Event: time 1416481886.469228, -------------- SYN_REPORT ------------
Event: time 1416481886.476556, type 3 (EV_ABS), code 0 (ABS_X), value 1687
Event: time 1416481886.476556, type 3 (EV_ABS), code 1 (ABS_Y), value 2557
Event: time 1416481886.476556, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 141
Event: time 1416481886.476556, -------------- SYN_REPORT ------------
Event: time 1416481886.484432, type 3 (EV_ABS), code 0 (ABS_X), value 1680
Event: time 1416481886.484432, type 3 (EV_ABS), code 1 (ABS_Y), value 2526
Event: time 1416481886.484432, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 144
Event: time 1416481886.484432, -------------- SYN_REPORT ------------
Event: time 1416481886.492089, type 3 (EV_ABS), code 0 (ABS_X), value 1679
Event: time 1416481886.492089, type 3 (EV_ABS), code 1 (ABS_Y), value 2490
Event: time 1416481886.492089, -------------- SYN_REPORT ------------
Event: time 1416481886.499553, type 3 (EV_ABS), code 0 (ABS_X), value 1677
Event: time 1416481886.499553, type 3 (EV_ABS), code 1 (ABS_Y), value 2443
Event: time 1416481886.499553, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 130
Event: time 1416481886.499553, -------------- SYN_REPORT ------------
Event: time 1416481886.507132, type 3 (EV_ABS), code 0 (ABS_X), value 1676
Event: time 1416481886.507132, type 3 (EV_ABS), code 1 (ABS_Y), value 2408
Event: time 1416481886.507132, -------------- SYN_REPORT ------------
Event: time 1416481886.514689, type 3 (EV_ABS), code 0 (ABS_X), value 1665
Event: time 1416481886.514689, type 3 (EV_ABS), code 1 (ABS_Y), value 2377
Event: time 1416481886.514689, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 141
Event: time 1416481886.514689, -------------- SYN_REPORT ------------
Event: time 1416481886.522236, type 3 (EV_ABS), code 0 (ABS_X), value 1663
Event: time 1416481886.522236, type 3 (EV_ABS), code 1 (ABS_Y), value 2346
Event: time 1416481886.522236, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 140
Event: time 1416481886.522236, -------------- SYN_REPORT ------------
Event: time 1416481886.529815, type 3 (EV_ABS), code 0 (ABS_X), value 1670
Event: time 1416481886.529815, type 3 (EV_ABS), code 1 (ABS_Y), value 2321
Event: time 1416481886.529815, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 136
Event: time 1416481886.529815, -------------- SYN_REPORT ------------
Event: time 1416481886.537398, type 3 (EV_ABS), code 0 (ABS_X), value 1674
Event: time 1416481886.537398, type 3 (EV_ABS), code 1 (ABS_Y), value 2264
Event: time 1416481886.537398, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 115
Event: time 1416481886.537398, -------------- SYN_REPORT ------------
Event: time 1416481886.544737, type 3 (EV_ABS), code 0 (ABS_X), value 1665
Event: time 1416481886.544737, type 3 (EV_ABS), code 1 (ABS_Y), value 2222
Event: time 1416481886.544737, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 128
Event: time 1416481886.544737, -------------- SYN_REPORT ------------
Event: time 1416481886.552179, type 3 (EV_ABS), code 0 (ABS_X), value 1673
Event: time 1416481886.552179, type 3 (EV_ABS), code 1 (ABS_Y), value 2201
Event: time 1416481886.552179, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 134
Event: time 1416481886.552179, -------------- SYN_REPORT ------------
Event: time 1416481886.559732, type 3 (EV_ABS), code 0 (ABS_X), value 1684
Event: time 1416481886.559732, type 3 (EV_ABS), code 1 (ABS_Y), value 2150
Event: time 1416481886.559732, -------------- SYN_REPORT ------------
Event: time 1416481886.567258, type 3 (EV_ABS), code 0 (ABS_X), value 1689
Event: time 1416481886.567258, type 3 (EV_ABS), code 1 (ABS_Y), value 2122
Event: time 1416481886.567258, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 117
Event: time 1416481886.567258, -------------- SYN_REPORT ------------
Event: time 1416481886.574982, type 3 (EV_ABS), code 0 (ABS_X), value 1692
Event: time 1416481886.574982, type 3 (EV_ABS), code 1 (ABS_Y), value 2110
Event: time 1416481886.574982, -------------- SYN_REPORT ------------
Event: time 1416481886.582432, type 3 (EV_ABS), code 0 (ABS_X), value 1693
Event: time 1416481886.582432, type 3 (EV_ABS), code 1 (ABS_Y), value 2031
Event: time 1416481886.582432, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 128
Event: time 1416481886.582432, -------------- SYN_REPORT ------------
Event: time 1416481886.589893, type 3 (EV_ABS), code 0 (ABS_X), value 1699
Event: time 1416481886.589893, type 3 (EV_ABS), code 1 (ABS_Y), value 1989
Event: time 1416481886.589893, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 125
Event: time 1416481886.589893, -------------- SYN_REPORT ------------
Event: time 1416481886.597203, type 3 (EV_ABS), code 0 (ABS_X), value 1709
Event: time 1416481886.597203, type 3 (EV_ABS), code 1 (ABS_Y), value 1920
Event: time 1416481886.597203, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 123
Event: time 1416481886.597203, -------------- SYN_REPORT ------------
Event: time 1416481886.605208, type 3 (EV_ABS), code 0 (ABS_X), value 1716
Event: time 1416481886.605208, type 3 (EV_ABS), code 1 (ABS_Y), value 1850
Event: time 1416481886.605208, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 122
Event: time 1416481886.605208, -------------- SYN_REPORT ------------
Event: time 1416481886.612750, type 3 (EV_ABS), code 0 (ABS_X), value 1724
Event: time 1416481886.612750, type 3 (EV_ABS), code 1 (ABS_Y), value 1863
Event: time 1416481886.612750, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 121
Event: time 1416481886.612750, -------------- SYN_REPORT ------------
Event: time 1416481886.620397, type 3 (EV_ABS), code 0 (ABS_X), value 1734
Event: time 1416481886.620397, type 3 (EV_ABS), code 1 (ABS_Y), value 1846
Event: time 1416481886.620397, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 127
Event: time 1416481886.620397, -------------- SYN_REPORT ------------
Event: time 1416481886.627962, type 3 (EV_ABS), code 0 (ABS_X), value 1740
Event: time 1416481886.627962, type 3 (EV_ABS), code 1 (ABS_Y), value 1775
Event: time 1416481886.627962, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 126
Event: time 1416481886.627962, -------------- SYN_REPORT ------------
Event: time 1416481886.635558, type 3 (EV_ABS), code 0 (ABS_X), value 1745
Event: time 1416481886.635558, type 3 (EV_ABS), code 1 (ABS_Y), value 1738
Event: time 1416481886.635558, -------------- SYN_REPORT ------------
Event: time 1416481886.646445, type 3 (EV_ABS), code 0 (ABS_X), value 1740
Event: time 1416481886.646445, type 3 (EV_ABS), code 1 (ABS_Y), value 1672
Event: time 1416481886.646445, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 120
Event: time 1416481886.646445, -------------- SYN_REPORT ------------
Event: time 1416481886.653901, type 3 (EV_ABS), code 0 (ABS_X), value 1750
Event: time 1416481886.653901, type 3 (EV_ABS), code 1 (ABS_Y), value 1644
Event: time 1416481886.653901, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 128
Event: time 1416481886.653901, -------------- SYN_REPORT ------------
Event: time 1416481886.661284, type 3 (EV_ABS), code 0 (ABS_X), value 1751
Event: time 1416481886.661284, type 3 (EV_ABS), code 1 (ABS_Y), value 1567
Event: time 1416481886.661284, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 125
Event: time 1416481886.661284, -------------- SYN_REPORT ------------
Event: time 1416481886.668596, type 3 (EV_ABS), code 0 (ABS_X), value 1755
Event: time 1416481886.668596, type 3 (EV_ABS), code 1 (ABS_Y), value 1529
Event: time 1416481886.668596, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 120
Event: time 1416481886.668596, -------------- SYN_REPORT ------------
Event: time 1416481886.677021, type 3 (EV_ABS), code 0 (ABS_X), value 1751
Event: time 1416481886.677021, type 3 (EV_ABS), code 1 (ABS_Y), value 1405
Event: time 1416481886.677021, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 117
Event: time 1416481886.677021, -------------- SYN_REPORT ------------
Event: time 1416481886.684771, type 3 (EV_ABS), code 0 (ABS_X), value 1750
Event: time 1416481886.684771, type 3 (EV_ABS), code 1 (ABS_Y), value 1440
Event: time 1416481886.684771, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 129
Event: time 1416481886.684771, -------------- SYN_REPORT ------------
Event: time 1416481886.692415, type 3 (EV_ABS), code 1 (ABS_Y), value 1396
Event: time 1416481886.692415, -------------- SYN_REPORT ------------
Event: time 1416481886.699662, type 3 (EV_ABS), code 0 (ABS_X), value 1748
Event: time 1416481886.699662, type 3 (EV_ABS), code 1 (ABS_Y), value 1373
Event: time 1416481886.699662, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 126
Event: time 1416481886.699662, -------------- SYN_REPORT ------------
Event: time 1416481886.706980, type 3 (EV_ABS), code 0 (ABS_X), value 1744
Event: time 1416481886.706980, type 3 (EV_ABS), code 1 (ABS_Y), value 1326
Event: time 1416481886.706980, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 104
Event: time 1416481886.706980, -------------- SYN_REPORT ------------
Event: time 1416481886.714675, type 3 (EV_ABS), code 0 (ABS_X), value 1747
Event: time 1416481886.714675, type 3 (EV_ABS), code 1 (ABS_Y), value 1290
Event: time 1416481886.714675, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 128
Event: time 1416481886.714675, -------------- SYN_REPORT ------------
Event: time 1416481886.722228, type 3 (EV_ABS), code 0 (ABS_X), value 1744
Event: time 1416481886.722228, type 3 (EV_ABS), code 1 (ABS_Y), value 1265
Event: time 1416481886.722228, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 131
Event: time 1416481886.722228, -------------- SYN_REPORT ------------
Event: time 1416481886.729802, type 3 (EV_ABS), code 0 (ABS_X), value 1742
Event: time 1416481886.729802, type 3 (EV_ABS), code 1 (ABS_Y), value 1233
Event: time 1416481886.729802, -------------- SYN_REPORT ------------
Event: time 1416481886.737258, type 3 (EV_ABS), code 1 (ABS_Y), value 1181
Event: time 1416481886.737258, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 126
Event: time 1416481886.737258, -------------- SYN_REPORT ------------
Event: time 1416481886.744521, type 3 (EV_ABS), code 0 (ABS_X), value 1738
Event: time 1416481886.744521, type 3 (EV_ABS), code 1 (ABS_Y), value 1158
Event: time 1416481886.744521, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 121
Event: time 1416481886.744521, -------------- SYN_REPORT ------------
Event: time 1416481886.751958, type 3 (EV_ABS), code 0 (ABS_X), value 1730
Event: time 1416481886.751958, type 3 (EV_ABS), code 1 (ABS_Y), value 1156
Event: time 1416481886.751958, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 113
Event: time 1416481886.751958, -------------- SYN_REPORT ------------
Event: time 1416481886.759508, type 3 (EV_ABS), code 0 (ABS_X), value 1729
Event: time 1416481886.759508, type 3 (EV_ABS), code 1 (ABS_Y), value 1118
Event: time 1416481886.759508, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 125
Event: time 1416481886.759508, -------------- SYN_REPORT ------------
Event: time 1416481886.767049, type 3 (EV_ABS), code 0 (ABS_X), value 1735
Event: time 1416481886.767049, type 3 (EV_ABS), code 1 (ABS_Y), value 1098
Event: time 1416481886.767049, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 128
Event: time 1416481886.767049, -------------- SYN_REPORT ------------
Event: time 1416481886.774614, type 3 (EV_ABS), code 1 (ABS_Y), value 1097
Event: time 1416481886.774614, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 129
Event: time 1416481886.774614, -------------- SYN_REPORT ------------
Event: time 1416481886.782147, type 3 (EV_ABS), code 0 (ABS_X), value 1734
Event: time 1416481886.782147, type 3 (EV_ABS), code 1 (ABS_Y), value 1062
Event: time 1416481886.782147, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 126
Event: time 1416481886.782147, -------------- SYN_REPORT ------------
Event: time 1416481886.789774, type 3 (EV_ABS), code 0 (ABS_X), value 1735
Event: time 1416481886.789774, type 3 (EV_ABS), code 1 (ABS_Y), value 1049
Event: time 1416481886.789774, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 127
Event: time 1416481886.789774, -------------- SYN_REPORT ------------
Event: time 1416481886.797178, type 3 (EV_ABS), code 1 (ABS_Y), value 1061
Event: time 1416481886.797178, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 126
Event: time 1416481886.797178, -------------- SYN_REPORT ------------
Event: time 1416481886.804798, type 3 (EV_ABS), code 0 (ABS_X), value 1734
Event: time 1416481886.804798, type 3 (EV_ABS), code 1 (ABS_Y), value 1015
Event: time 1416481886.804798, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 120
Event: time 1416481886.804798, -------------- SYN_REPORT ------------
Event: time 1416481886.812235, type 3 (EV_ABS), code 0 (ABS_X), value 1739
Event: time 1416481886.812235, type 3 (EV_ABS), code 1 (ABS_Y), value 945
Event: time 1416481886.812235, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 112
Event: time 1416481886.812235, -------------- SYN_REPORT ------------
Event: time 1416481886.838125, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 0
Event: time 1416481886.838125, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
Event: time 1416481886.838125, -------------- SYN_REPORT ------------
Event: time 1416481886.847532, type 3 (EV_ABS), code 0 (ABS_X), value 1745
Event: time 1416481886.847532, type 3 (EV_ABS), code 1 (ABS_Y), value 929
Event: time 1416481886.847532, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 121
Event: time 1416481886.847532, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1416481886.847532, -------------- SYN_REPORT ------------
Event: time 1416481886.855243, type 3 (EV_ABS), code 1 (ABS_Y), value 880
Event: time 1416481886.855243, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 120
Event: time 1416481886.855243, -------------- SYN_REPORT ------------
Event: time 1416481886.862657, type 3 (EV_ABS), code 0 (ABS_X), value 1746
Event: time 1416481886.862657, type 3 (EV_ABS), code 1 (ABS_Y), value 895
Event: time 1416481886.862657, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 121
Event: time 1416481886.862657, -------------- SYN_REPORT ------------
Event: time 1416481886.870170, type 3 (EV_ABS), code 0 (ABS_X), value 1745
Event: time 1416481886.870170, type 3 (EV_ABS), code 1 (ABS_Y), value 869
Event: time 1416481886.870170, -------------- SYN_REPORT ------------
Event: time 1416481886.877701, type 3 (EV_ABS), code 0 (ABS_X), value 1748
Event: time 1416481886.877701, type 3 (EV_ABS), code 1 (ABS_Y), value 835
Event: time 1416481886.877701, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 116
Event: time 1416481886.877701, -------------- SYN_REPORT ------------
Event: time 1416481886.885384, type 3 (EV_ABS), code 0 (ABS_X), value 1751
Event: time 1416481886.885384, type 3 (EV_ABS), code 1 (ABS_Y), value 854
Event: time 1416481886.885384, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 110
Event: time 1416481886.885384, -------------- SYN_REPORT ------------
Event: time 1416481886.907963, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 0
Event: time 1416481886.907963, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
Event: time 1416481886.907963, -------------- SYN_REPORT ------------
Event: time 1416481886.911166, type 3 (EV_ABS), code 0 (ABS_X), value 1754
Event: time 1416481886.911166, type 3 (EV_ABS), code 1 (ABS_Y), value 780
Event: time 1416481886.911166, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 87
Event: time 1416481886.911166, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1416481886.911166, -------------- SYN_REPORT ------------
Event: time 1416481886.918850, type 3 (EV_ABS), code 0 (ABS_X), value 1751
Event: time 1416481886.918850, type 3 (EV_ABS), code 1 (ABS_Y), value 763
Event: time 1416481886.918850, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 107
Event: time 1416481886.918850, -------------- SYN_REPORT ------------
Event: time 1416481886.926565, type 3 (EV_ABS), code 1 (ABS_Y), value 759
Event: time 1416481886.926565, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 112
Event: time 1416481886.926565, -------------- SYN_REPORT ------------
Event: time 1416481886.934104, type 3 (EV_ABS), code 0 (ABS_X), value 1755
Event: time 1416481886.934104, type 3 (EV_ABS), code 1 (ABS_Y), value 765
Event: time 1416481886.934104, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 113
Event: time 1416481886.934104, -------------- SYN_REPORT ------------
Event: time 1416481886.941554, type 3 (EV_ABS), code 0 (ABS_X), value 1753
Event: time 1416481886.941554, type 3 (EV_ABS), code 1 (ABS_Y), value 705
Event: time 1416481886.941554, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 111
Event: time 1416481886.941554, -------------- SYN_REPORT ------------
Event: time 1416481886.948885, type 3 (EV_ABS), code 1 (ABS_Y), value 728
Event: time 1416481886.948885, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 112
Event: time 1416481886.948885, -------------- SYN_REPORT ------------
Event: time 1416481886.956191, type 3 (EV_ABS), code 0 (ABS_X), value 1755
Event: time 1416481886.956191, type 3 (EV_ABS), code 1 (ABS_Y), value 761
Event: time 1416481886.956191, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 114
Event: time 1416481886.956191, -------------- SYN_REPORT ------------
Event: time 1416481886.963717, type 3 (EV_ABS), code 1 (ABS_Y), value 750
Event: time 1416481886.963717, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 111
Event: time 1416481886.963717, -------------- SYN_REPORT ------------
Event: time 1416481886.971105, type 3 (EV_ABS), code 0 (ABS_X), value 1759
Event: time 1416481886.971105, type 3 (EV_ABS), code 1 (ABS_Y), value 766
Event: time 1416481886.971105, -------------- SYN_REPORT ------------
Event: time 1416481886.978523, type 3 (EV_ABS), code 0 (ABS_X), value 1760
Event: time 1416481886.978523, type 3 (EV_ABS), code 1 (ABS_Y), value 769
Event: time 1416481886.978523, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 110
Event: time 1416481886.978523, -------------- SYN_REPORT ------------
Event: time 1416481886.986138, type 3 (EV_ABS), code 0 (ABS_X), value 1757
Event: time 1416481886.986138, -------------- SYN_REPORT ------------
Event: time 1416481886.993288, type 3 (EV_ABS), code 1 (ABS_Y), value 716
Event: time 1416481886.993288, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 107
Event: time 1416481886.993288, -------------- SYN_REPORT ------------
Event: time 1416481887.002547, type 3 (EV_ABS), code 0 (ABS_X), value 1759
Event: time 1416481887.002547, type 3 (EV_ABS), code 1 (ABS_Y), value 778
Event: time 1416481887.002547, -------------- SYN_REPORT ------------
Event: time 1416481887.010000, type 3 (EV_ABS), code 0 (ABS_X), value 1755
Event: time 1416481887.010000, type 3 (EV_ABS), code 1 (ABS_Y), value 756
Event: time 1416481887.010000, -------------- SYN_REPORT ------------
Event: time 1416481887.017440, type 3 (EV_ABS), code 0 (ABS_X), value 1758
Event: time 1416481887.017440, type 3 (EV_ABS), code 1 (ABS_Y), value 767
Event: time 1416481887.017440, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 109
Event: time 1416481887.017440, -------------- SYN_REPORT ------------
Event: time 1416481887.024987, type 3 (EV_ABS), code 0 (ABS_X), value 1762
Event: time 1416481887.024987, type 3 (EV_ABS), code 1 (ABS_Y), value 761
Event: time 1416481887.024987, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 108
Event: time 1416481887.024987, -------------- SYN_REPORT ------------
Event: time 1416481887.032512, type 3 (EV_ABS), code 0 (ABS_X), value 1765
Event: time 1416481887.032512, type 3 (EV_ABS), code 1 (ABS_Y), value 767
Event: time 1416481887.032512, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 107
Event: time 1416481887.032512, -------------- SYN_REPORT ------------
Event: time 1416481887.040081, type 3 (EV_ABS), code 0 (ABS_X), value 1761
Event: time 1416481887.040081, type 3 (EV_ABS), code 1 (ABS_Y), value 774
Event: time 1416481887.040081, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 108
Event: time 1416481887.040081, -------------- SYN_REPORT ------------
Event: time 1416481887.047796, type 3 (EV_ABS), code 0 (ABS_X), value 1764
Event: time 1416481887.047796, type 3 (EV_ABS), code 1 (ABS_Y), value 788
Event: time 1416481887.047796, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 109
Event: time 1416481887.047796, -------------- SYN_REPORT ------------
Event: time 1416481887.055368, type 3 (EV_ABS), code 0 (ABS_X), value 1763
Event: time 1416481887.055368, type 3 (EV_ABS), code 1 (ABS_Y), value 797
Event: time 1416481887.055368, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 110
Event: time 1416481887.055368, -------------- SYN_REPORT ------------
Event: time 1416481887.062893, type 3 (EV_ABS), code 1 (ABS_Y), value 768
Event: time 1416481887.062893, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 109
Event: time 1416481887.062893, -------------- SYN_REPORT ------------
Event: time 1416481887.070233, type 3 (EV_ABS), code 0 (ABS_X), value 1764
Event: time 1416481887.070233, type 3 (EV_ABS), code 1 (ABS_Y), value 770
Event: time 1416481887.070233, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 110
Event: time 1416481887.070233, -------------- SYN_REPORT ------------
Event: time 1416481887.077886, type 3 (EV_ABS), code 1 (ABS_Y), value 755
Event: time 1416481887.077886, -------------- SYN_REPORT ------------
Event: time 1416481887.085255, type 3 (EV_ABS), code 1 (ABS_Y), value 772
Event: time 1416481887.085255, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 112
Event: time 1416481887.085255, -------------- SYN_REPORT ------------
Event: time 1416481887.092651, type 3 (EV_ABS), code 1 (ABS_Y), value 734
Event: time 1416481887.092651, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 110
Event: time 1416481887.092651, -------------- SYN_REPORT ------------
Event: time 1416481887.100162, type 3 (EV_ABS), code 1 (ABS_Y), value 725
Event: time 1416481887.100162, -------------- SYN_REPORT ------------
Event: time 1416481887.107523, type 3 (EV_ABS), code 0 (ABS_X), value 1765
Event: time 1416481887.107523, type 3 (EV_ABS), code 1 (ABS_Y), value 757
Event: time 1416481887.107523, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 112
Event: time 1416481887.107523, -------------- SYN_REPORT ------------
Event: time 1416481887.115022, type 3 (EV_ABS), code 1 (ABS_Y), value 767
Event: time 1416481887.115022, -------------- SYN_REPORT ------------
Event: time 1416481887.122315, type 3 (EV_ABS), code 0 (ABS_X), value 1764
Event: time 1416481887.122315, type 3 (EV_ABS), code 1 (ABS_Y), value 755
Event: time 1416481887.122315, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 113
Event: time 1416481887.122315, -------------- SYN_REPORT ------------
Event: time 1416481887.129916, type 3 (EV_ABS), code 0 (ABS_X), value 1763
Event: time 1416481887.129916, type 3 (EV_ABS), code 1 (ABS_Y), value 745
Event: time 1416481887.129916, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 114
Event: time 1416481887.129916, -------------- SYN_REPORT ------------
Event: time 1416481887.137505, type 3 (EV_ABS), code 0 (ABS_X), value 1764
Event: time 1416481887.137505, type 3 (EV_ABS), code 1 (ABS_Y), value 773
Event: time 1416481887.137505, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 115
Event: time 1416481887.137505, -------------- SYN_REPORT ------------
Event: time 1416481887.144844, type 3 (EV_ABS), code 0 (ABS_X), value 1763
Event: time 1416481887.144844, type 3 (EV_ABS), code 1 (ABS_Y), value 769
Event: time 1416481887.144844, -------------- SYN_REPORT ------------
Event: time 1416481887.152680, type 3 (EV_ABS), code 1 (ABS_Y), value 762
Event: time 1416481887.152680, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 114
Event: time 1416481887.152680, -------------- SYN_REPORT ------------
Event: time 1416481887.159918, type 3 (EV_ABS), code 0 (ABS_X), value 1762
Event: time 1416481887.159918, type 3 (EV_ABS), code 1 (ABS_Y), value 799
Event: time 1416481887.159918, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 115
Event: time 1416481887.159918, -------------- SYN_REPORT ------------
Event: time 1416481887.167217, type 3 (EV_ABS), code 0 (ABS_X), value 1765
Event: time 1416481887.167217, type 3 (EV_ABS), code 1 (ABS_Y), value 764
Event: time 1416481887.167217, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 113
Event: time 1416481887.167217, -------------- SYN_REPORT ------------
Event: time 1416481887.174737, type 3 (EV_ABS), code 0 (ABS_X), value 1763
Event: time 1416481887.174737, type 3 (EV_ABS), code 1 (ABS_Y), value 796
Event: time 1416481887.174737, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 114
Event: time 1416481887.174737, -------------- SYN_REPORT ------------
Event: time 1416481887.182196, type 3 (EV_ABS), code 0 (ABS_X), value 1764
Event: time 1416481887.182196, type 3 (EV_ABS), code 1 (ABS_Y), value 776
Event: time 1416481887.182196, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 113
Event: time 1416481887.182196, -------------- SYN_REPORT ------------
Event: time 1416481887.189672, type 3 (EV_ABS), code 0 (ABS_X), value 1765
Event: time 1416481887.189672, type 3 (EV_ABS), code 1 (ABS_Y), value 784
Event: time 1416481887.189672, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 110
Event: time 1416481887.189672, -------------- SYN_REPORT ------------
Event: time 1416481887.196983, type 3 (EV_ABS), code 1 (ABS_Y), value 780
Event: time 1416481887.196983, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 104
Event: time 1416481887.196983, -------------- SYN_REPORT ------------
Event: time 1416481887.227892, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 0
Event: time 1416481887.227892, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0
Event: time 1416481887.227892, -------------- SYN_REPORT ------------

@tito
Copy link
Member

tito commented Nov 20, 2014

Cool, you have the pressure support, which @sonovice don't have :) The fix include supports for it too. Could you try it?

@iluminite
Copy link
Author

@tito, testing support-rpi-touchscreen now.

@iluminite
Copy link
Author

@tito, button presses are being recognized now, though it is not perfect. I did not see an event on the log, though kivy would sometimes fire button presses (I would see blue and/or have a new view).

I think the primary problem with the patch as it is: the x/y position max in your patch is limited to 255 where the device (at least mine) notes a max resolution of 4095.

Kivy was able to see the button press, but I didn't feel like the placement was correct

@iluminite
Copy link
Author

@tito,

I set range_max_abs_x and range_max_abs_y to 4095 and retested. It seemed better, but not perfect. At least button presses are firing functions! I'm not sure if or how this could be improved, but I can test if needed.

@tito
Copy link
Member

tito commented Nov 20, 2014

@illumin-us-r3v0lution the 255 is default value, superseeded with the configuration reported by the device itself (see lines 593/606). But i made one mistake here, fixing it.

@tito
Copy link
Member

tito commented Nov 20, 2014

@illumin-us-r3v0lution reset your changes, pull, and retry

@iluminite
Copy link
Author

@tito,

Here is evtest with the latest commits:

root@raspberrypi:~# evtest /dev/input/event0 
Input driver version is 1.0.1
Input device ID: bus 0x18 vendor 0x0 product 0x0 version 0x0 
Input device name: "stmpe-ts"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
    Event code 330 (BTN_TOUCH)
  Event type 3 (EV_ABS)
    Event code 0 (ABS_X)
      Value    611 
      Min        0   
      Max     4095
    Event code 1 (ABS_Y)
      Value   3201
      Min        0   
      Max     4095
    Event code 24 (ABS_PRESSURE)
      Value      0   
      Min        0   
      Max      255 
Properties:
Testing ... (interrupt to exit)

@tito
Copy link
Member

tito commented Nov 20, 2014

@sonovice It works for @illumin-us-r3v0lution (debugged on IRC.) He got a Y axis invertion that Kivy cannot detect.

@sonovice More work might needed for you, i think there is an issue with touch and pen button state. Try the latest branch and tell me your thoughs.

If you have Y axis inversion too, you can either change in your ~/.kivy/config file:

  • if you use probesysfs, add ,param=invert_y=1 at the end of the line
  • if you use hidinput directly, add ,invert_y=1 at the end of the line

Enjoy!

@sonovice
Copy link

@tito Thanks for your lightning fast support. Unfortunately I am at a congress right now and can test your fix not until monday. I will get back to you as soon as I have access to the hardware.

@iluminite
Copy link
Author

@tito,

I don't really have the ability to create a video right now, but I will take the time to more clearly describe what I see with the PiTFT. For reference, I'm talking about this device [0], install info [1] and script [2].

By default, the PiTFT setup modifies X config for the input device:

root@raspberrypi:~# cat /etc/X11/xorg.conf.d/99-calibration.conf

Section "InputClass"
        Identifier      "calibration"
        MatchProduct    "stmpe-ts"
        Option  "Calibration"   "3800 200 200 3800"
        Option  "SwapAxes"      "1"
EndSection

This snippet differs for the other PiTFT models. There are 3: 2 resistive (sm/lg) and 1 capacitive. There is also this file:

root@raspberrypi:~# cat /etc/pointercal
-30 -5902 22077792 4360 -105 -1038814 65536

Ok, on to what happens.

We've talked about x/y inversion, I will start with this disabled. ~/.kivy/config.ini has the following for input config:

[input]
mouse = mouse
%(name)s = probesysfs,provider=hidinput

To test, I run python examples/demo/touchtracer/main.py, here is the result.

Let's break up the screen into quadrants:

+------+------+
|  I   |  II  |
|      |      |
+------+------+
|      |      |
| III  |  IV  |
+------+------+

Let's now touch each quadrant (t) and see what value (v) results. The first quadrant:

+------+------+
|  t   |      |
|      |      |
+------+------+
|      |      |
|  v   |      |
+------+------+

Second:

+------+------+
| v    |    t |
|      |      |
+------+------+
|      |      |
|      |      |
+------+------+

Fourth:

+------+------+
|      | v    |
|      |      |
+------+------+
|      |   t  |
|      |      |
+------+------+

Third:

+------+------+
|      |      |
|      |      |
+------+------+
|      |      |
| t    |    v |
+------+------+

Here is another in the third quadrant to show the inversion more clearly:

+------+------+
|      |      |
|      |      |
+------+------+
|    t | v    |
|      |      |
+------+------+

If you start in q1 and move clockwise through q2, q4, and q3, the touch value will show up in the 'previous' quadrant. Eg, pressing q2 value is q1, press q4, value is q2, press q1, value is q3.

Let's change the x/y inversion, setting the following in ~/.kivy/config.ini: %(name)s = probesysfs,provider=hidinput,param=invert_x=1

Now X is inverted, let's test each quadrant. Here is the first:

+------+------+
| t    |      |
|      |      |
+------+------+
|      |      |
|      |    v |
+------+------+

Second:

+------+------+
|      |    * |  * hey! it's correct!!
|      |      |
+------+------+
|      |      |
|      |      |
+------+------+

Fourth:

+------+------+
| v    |      |
|      |      |
+------+------+
|      |      |
|      |    t |
+------+------+

Third:

+------+------+
|      |      |
|      |      |
+------+------+
|      |      |
| *    |      | * hey! it's correct!!
+------+------+

So q2 and q3, which are diagonal to each other, are correct in real/perceived touch/value, while q1 and q4 are incorrect with the touch/value in the opposite (diagonal) quadrant.

If we update to only invert y (no x), we will find these correct:

+------+------+
|  *   |      |
|      |      |
+------+------+
|      |      |
|      |   *  |
+------+------+

And these incorrect:

+------+------+
|      |  x   |
|      |      |
+------+------+
|      |      |
|   x  |      |
+------+------+

This is the same pattern as when we inverted x, but which quadrants are good/bad is flipped.

Inverting both x and y together does not work, and is even more confusing to use.

[0] http://www.adafruit.com/product/1601
[1] https://learn.adafruit.com/adafruit-pitft-28-inch-resistive-touchscreen-display-raspberry-pi/easy-install
[2] https://gist.github.com/ladyada/f86f777df68fe41181b0

@Salemone
Copy link

@illumin-us-r3v0lution , I just tried the sample "gestures" minute ago and got the same result as yours.

@tito
Copy link
Member

tito commented Nov 21, 2014

I saw on your configuration file something about 90 degrees rotation. That's exactly what we see here. So it's something new for us :/

tshirtman pushed a commit that referenced this issue Nov 21, 2014
@iluminite
Copy link
Author

The above from @tshirtman adds a new option (rotate) to hidinput provider, but tests are the same as before.

@tito
Copy link
Member

tito commented Nov 21, 2014

It's normal, the patch is half done :)

@tito
Copy link
Member

tito commented Nov 21, 2014

Pull the latest branch:support-rpi-touchscreen and add the rotation=270 value in your config provider (or param=rotation=270). Maybe it's 90.

@tito
Copy link
Member

tito commented Nov 22, 2014

It finally works for @illumin-us-r3v0lution. As he said on irc:

param=rotation=270,param=invert_y=1
,param=rotation=90,param=invert_x=1

Both works. Let's merge into master!

@tito tito closed this as completed in 31f1085 Nov 22, 2014
@iluminite
Copy link
Author

Thanks to @tito and others who helped to get this resolved!

@sonovice
Copy link

@tito I updated everything to the latest version. Still no working touch function. 😢
Is there anything I could test for you? Right now it just doesn't react.

@iluminite
Copy link
Author

@sonovice, does X work with the touchscreen? When kivy starts, do you see the touchscreen and related features/config picked up in the log?

@sonovice
Copy link

@iluminite X is working without problems. Now that you've mentioned it: There is indeed nothing about a HID device in the startup log. Before the update to the latest kivy version there was definitely something about a HID input provider.

@iluminite
Copy link
Author

@sonovice, can you include some of that log info? do you have an /etc/pointercal or /etc/X11/conf.d/* with anything of interest?

@tito
Copy link
Member

tito commented Nov 23, 2014

We don't use X, or anything related to X. That's mean if you used X for calibration or device detection, it's just no help.

Best is to give us the evtest output, device path, and your ~/.kivy/config.ini

Please don't answer on a closed thread except if you known for a fact that the bug is not resolved. I can ensure it's it :)

If you don't have anything related to hid, maybe you messed your config file. Better to use the mailing list for now!

@nurgasemetey
Copy link

Sorry, I know this thread is closed. @tito, would you make tutorial-like post for other who began work with PiTFT + Kivy + Raspberry, because for example I can't fully understand what you've done to work this touchscreen. It would be good because all who have issues will be clarified by your post and will not disturb you. Thanks

@phaneesh
Copy link

@tito I am facing issue even displaying anything on the touchscreen. The screen is calibrated (I don't use X either). Event test works (ts_test & evtest). Please let me know how to display the UI on touch display instead of HDMI. (I have tried the usual methods FRAMEBUFFER variable & DISPLAY variable)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

7 participants