qt5 adafruit touch screen на малине pi слишком быстро перемещает указатель

Наконец-то я получил экран adafruit 7 ", работающий с интерфейсом X11 (startx), и теперь он, похоже, точно перемещает мышь. Однако у меня есть приложение qt 5.5, которое я написал, который отлично работает с мышью, но не перемещается указатель правильно с сенсорным экраном (AR1100), поставляемым с экраном adafruit.

qt 5.5 был скомпилирован на PI 2, и сенсорный экран явно работает в том, что я могу перемещать указатель, используя мой палец.

При запуске приложения я получаю «Невозможно запросить размер физического экрана, по умолчанию 100 dpi», а затем «Для переопределения, установите QT_QPA_EGLFS_PHYSICAL_WIDTH и QT_QPA_PHYSICAL_HEIGHT». Я попытался установить их в среде, но это, похоже, не имеет никакого значения, и я все равно получаю то же сообщение об ошибке.

Если я начну с пальца или стилуса в левой части экрана и двигаюсь прямо по экрану слева направо, указатель не перемещается примерно на первый дюйм движения стилуса, а затем перемещается намного быстрее чем стилус, и быстро обгоняет его и заканчивается на правой стороне экрана, когда стилус перемещается только на два дюйма или около того. Это полностью повторяемо.

Почти так, как будто сенсорный экран работает с другим размером экрана до фактического экрана. evtest дает следующее при запуске

Input device ID: bus 0x3 vendor 0x4d8 product 0xc02 version 0x111
Input device name: "Microchip Technology Inc. AR1100 HID-MOUSE"
Supported events:
  Event type 0 (EV_SYN)
  Event type 1 (EV_KEY)
  Event code 272 (BTN_LEFT)
  Event code 273 (BTN_RIGHT)
  Event code 274 (BTN_MIDDLE)
  Event type 3 (EV_ABS)
  Event code 0 (ABS_X)
  Value      0
  Min        0
  Max     4095
  Event code 1 (ABS_Y)
  Value    148
  Min        0
  Max     4095
  Event type 4 (EV_MSC)
  Event code 4 (MSC_SCAN)
Properties:
Testing ... (interrupt to exit)

, а затем

Event: time 1441177838.274840, type 3 (EV_ABS), code 1 (ABS_Y), value 145
Event: time 1441177838.274840, -------------- SYN_REPORT ------------
Event: time 1441177838.290826, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90001
Event: time 1441177838.290826, type 1 (EV_KEY), code 272 (BTN_LEFT), value 1
Event: time 1441177838.290826, -------------- SYN_REPORT ------------
Event: time 1441177838.322824, type 3 (EV_ABS), code 1 (ABS_Y), value 135
Event: time 1441177838.322824, -------------- SYN_REPORT ------------
Event: time 1441177838.354828, type 3 (EV_ABS), code 1 (ABS_Y), value 127
Event: time 1441177838.354828, -------------- SYN_REPORT ------------      
Event: time 1441177838.418842, type 3 (EV_ABS), code 1 (ABS_Y), value 119
Event: time 1441177838.418842, -------------- SYN_REPORT ------------
Event: time 1441177838.450841, type 3 (EV_ABS), code 1 (ABS_Y), value 114
Event: time 1441177838.450841, -------------- SYN_REPORT ------------
Event: time 1441177838.898903, type 4 (EV_MSC), code 4 (MSC_SCAN), value 90001
Event: time 1441177838.898903, type 1 (EV_KEY), code 272 (BTN_LEFT), value 0
Event: time 1441177838.898903, -------------- SYN_REPORT ------------

, когда я касаюсь левого верхнего угла экрана.

У меня очень мало опыта в QT, поэтому любая помощь была бы с благодарностью воспринята, поскольку я собираюсь кругами в течение нескольких недель.

3 голоса | спросил pcla 2 ndEurope/Moscowp30Europe/Moscow09bEurope/MoscowWed, 02 Sep 2015 10:29:27 +0300 2015, 10:29:27

2 ответа


2

Ваше собственное скомпилированное приложение работает на EGL вместо X (QT_QPA_EGLFS_PHYSICAL_WIDTH используется EGLFS, плагин qt для EGL). Когда вы запускаете приложение QT в X, X передает входные события в ваше приложение. На EGL qt работает несколько иначе и напрямую взаимодействует с evdev. Возможно, вам нужно настроить его, прежде чем он будет работать правильно.

Лично я пытался получить приложение QT без X ( http : //doc.qt.io/qt-5/embedded-linux.html ). Я нажимаю ту же ошибку, что и вы, и я надеялся найти быстрое исправление переменной config /environment.

Если вы отлично используете свое приложение поверх X, я предлагаю вам продолжать это делать.

ответил James 14 Jam1000000amThu, 14 Jan 2016 05:14:41 +030016 2016, 05:14:41
1

У меня было то же самое, но мне удалось это исправить. Теперь у меня есть приложение Qt 5.5, работающее прямо из командной строки с правильным сенсорным экраном. Надеюсь, это поможет вам, ребята.

У меня есть тот же экран Adafruit с доской AR1100. Проблема в том, что AR1100 отправляет события мыши вместо событий касания.

Следующее решение сработало для меня и оказалось довольно простым решением после много проб и ошибок ...;)

В моем .bashrc я добавил следующий экспорт

# hides mouse cursor and disables EGL input
# we can not use the built-in input handler because touch is not mouse, lol
export QT_QPA_EGLFS_HIDECURSOR=1
export QT_QPA_EGLFS_DISABLE_INPUT=1

# export a generic plugin with the mouse, not evdevtouch!
# and tell it to use 'abs' (absolute values instead of relatives)
export QT_QPA_GENERIC_PLUGINS=evdevmouse:abs

# set physical display dimensions for proper font sizes etc.
# Qt should print a warning if this is necessary
export QT_QPA_EGLFS_PHYSICAL_WIDTH=154
export QT_QPA_EGLFS_PHYSICAL_HEIGHT=86
export QT_QPA_EGLFS_WIDTH=800
export QT_QPA_EGLFS_HEIGHT=480

И вуаля, теперь он отлично работает!

ответил Jinxvar 27 Jpm1000000pmWed, 27 Jan 2016 23:49:47 +030016 2016, 23:49:47

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132