libts / tslib

Touchscreen access library
GNU Lesser General Public License v2.1
596 stars 290 forks source link

Poor/ reduced accuracy when running ts_uinput #194

Closed OOHehir closed 2 years ago

OOHehir commented 2 years ago

Hello, Thanks for all your work on this project. I'm using your library with a SAMA5D4 Xplained board with a touchscreen connected to it's inbuilt peripheral. I'm using the screen in connection with a Microchip version of Qt (EGT).

I've run ts_calibrate & the ts_test_mt which works very accurately.

However after running: ts_uinput -d -v

I've noticed no improvement in the accuracy of the screen (as opposed when ts_uinput is not running) & indeed running ts_test_mt it's possible to see that the touches to the bottom of the screen are appearing at the top. Here's some info:

Available devices:
/dev/input/event0:      at91_adc
/dev/input/event1:      gpio_keys
/dev/input/event2:      ts_uinput
Select the device event number [0-2]: 2
Input driver version is 1.0.1
Input device ID: bus 0x6 vendor 0x0 product 0x0 version 0x0
Input device name: "ts_uinput"
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    368
      Min        0
      Max     1151
    Event code 1 (ABS_Y)
      Value    298
      Min        0
      Max      767
    Event code 24 (ABS_PRESSURE)
      Value   8936
      Min        0
      Max   16777215
Properties:
Testing ... (interrupt to exit)
Event: time 1701000814.1701000814, type 3 (EV_ABS), code 0 (ABS_X), value 519
Event: time 1701000814.1701000814, type 3 (EV_ABS), code 1 (ABS_Y), value 394
Event: time 1701000814.1701000814, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 3597
Event: time 1701000814.1701000814, -------------- SYN_REPORT ------------
Event: time 1701000814.1701000814, type 3 (EV_ABS), code 0 (ABS_X), value 518
Event: time 1701000814.1701000814, type 3 (EV_ABS), code 1 (ABS_Y), value 407
Event: time 1701000814.1701000814, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 3399
Event: time 1701000814.1701000814, -------------- SYN_REPORT ------------
Event: time 1701000814.1701000814, type 3 (EV_ABS), code 0 (ABS_X), value 519
Event: time 1701000814.1701000814, type 3 (EV_ABS), code 1 (ABS_Y), value 415
Event: time 1701000814.1701000814, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 3518
Event: time 1701000814.1701000814, -------------- SYN_REPORT ------------
Event: time 1701000814.1701000814, type 3 (EV_ABS), code 0 (ABS_X), value 520
Event: time 1701000814.1701000814, type 3 (EV_ABS), code 1 (ABS_Y), value 416
Event: time 1701000814.1701000814, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 3563
Event: time 1701000814.1701000814, -------------- SYN_REPORT ------------

/etc/ts.conf:

# Uncomment if you wish to use the linux input layer event interface
module_raw input

# Uncomment if you're using a Sharp Zaurus SL-5500/SL-5000d
# module_raw collie

# Uncomment if you're using a Sharp Zaurus SL-C700/C750/C760/C860
# module_raw corgi

# Uncomment if you're using a device with a UCB1200/1300/1400 TS interface
# module_raw ucb1x00

# Uncomment if you're using an HP iPaq h3600 or similar
# module_raw h3600

# Uncomment if you're using a Hitachi Webpad
# module_raw mk712

# Uncomment if you're using an IBM Arctic II
# module_raw arctic2

module pthres pmin=1
module variance delta=30
module dejitter delta=100
module linear

Would you have any suggestions as to where I'm going wrong?

Thanks for looking!

OOHehir commented 2 years ago

In order to further troubleshoot the issue I removed (rm) /dev/input/event0, i.e. the 'raw' device feed of the touchscreen as generated by the on-chip ADC.

Subsequently my application appears to not get any touchscreen events even after calling running:

EGT_INPUT_DEVICE=tslib:/dev/input/event2 /usr/share/egtApp

However the ts_uinput device still seems to be working:

ts_verify /dev/input/event2
tslib 1.21 / libts ABI version 0 (0x000A03)
Release-Date: 2019-10-22

===================== test run 0 =====================
TEST ts_read_mt (blocking) 1       ......   PASS
TEST ts_read_mt (blocking) 5       ......   PASS
TEST ts_read_mt (nonblocking) 1    ......   PASS
TEST ts_read_mt (nonblocking) 5    ......   PASS
TEST ts_read    (blocking) 1       ......   PASS
TEST ts_read    (blocking) 5       ......   PASS
TEST ts_read    (nonblocking) 1    ......   PASS
TEST ts_read_raw_mt (blocking) 1   ......   PASS
TEST ts_read_raw_mt (blocking) 5   ......   PASS
TEST ts_read_raw_mt (nonblocking) 1......   PASS
TEST ts_read_raw_mt (nonblocking) 5......   PASS
TEST ts_read_raw(blocking) 1       ......   PASS

I'm now trying to work out if the issue is the EGT application not receiving the events or if there's a missing link somewhere between the device & the EGT application.

OOHehir commented 2 years ago

Looks like this is an issue with the GUI application, not tslib so closing