Intereting Posts
манипулировать «внутренней» переменной Drush Зачем обрабатывать CPU% Использование больше, чем общее время процессора Bash – Как найти все файлы НЕ в массиве Как заставить мой ELF работать как с новой, так и с старой версией glibc? `ls \` выходит из сеанса терминала? Запись в файл в определенном месте Как получить хешированный пароль в / etc / shadow с помощью getpwnam ()? Как остановить xargs от плохо слияния вывода из нескольких процессов? Как я могу получить количество файлов в каталоге с помощью командной строки? Переместить окно в действие из оболочки в Plasma 5 Нет ручного ввода для человека Настройте сервер OpenSSH, чтобы не требовать пароль * или * для конкретного пользователя Как удалить строку, если она длиннее XY? Для перенаправления ввода существуют функциональные различия между bash / zsh <<< «$ (<файл)» и традиционным <file? Работа в Cron работает чаще, чем я думал, что это должно

Сенсорный экран на встроенной Linux не может нажать / кликнуть

Я использую 7-дюймовый дисплей с резистивным сенсорным экраном, встроенным Linux для ARM-процессора. Производитель Engicam, дизайн похож на плату Sabre от Freescale / NXP i.MX6.

С пакетом поддержки Yocto 1.7.3 и Engicam я создал приложение X11, в основном браузер Firefox. Большая часть этого приложения работает с одним исключением: я не могу нажать / щелкнуть по любому элементу. Когда я касаюсь экрана и передвигаюсь, курсор будет следовать за моим пальцем, к сожалению, щелчок или двойной щелчок не будут работать.

Моя конфигурация:

Ядро: Linux display 3.10.17-1.0.2_ga+g33597e3 #1 SMP PREEMPT Sun May 22 20:00:34 CEST 2016 armv7l GNU/Linux

Резистивный сенсорный драйвер: max11801_ts и драйвер события evdev .

Файл конфигурации для evdev ( /usr/share/X11/xorg.conf.d/10-evdev.conf ):

 # # Catch-all evdev loader for udev-based systems # We don't simply match on any device since that also adds accelerometers # and other devices that we don't really want to use. The list below # matches everything but joysticks. Section "InputClass" Identifier "evdev pointer catchall" MatchIsPointer "on" MatchDevicePath "/dev/input/event*" Driver "evdev" EndSection Section "InputClass" Identifier "evdev keyboard catchall" MatchIsKeyboard "on" MatchDevicePath "/dev/input/event*" Driver "evdev" EndSection Section "InputClass" Identifier "evdev touchpad catchall" MatchIsTouchpad "on" MatchDevicePath "/dev/input/event*" Driver "evdev" EndSection Section "InputClass" Identifier "evdev tablet catchall" MatchIsTablet "on" MatchDevicePath "/dev/input/event*" Driver "evdev" EndSection Section "InputClass" Identifier "evdev touchscreen catchall" MatchIsTouchscreen "on" MatchDevicePath "/dev/input/event*" Driver "evdev" Option "SHMConfig" "true" Option "TapButton1" "1" Option "EmulateThirdButton" "1" Option "EmulateThirdButtonTimeout" "750" Option "EmulateThirdButtonMoveThreshold" "30" Option "Calibration" "0 4095 0 4095" EndSection 

Последний раздел используется evdev для сенсорного экрана.

В журнале X11 я вижу, что X11 загружает evdev и принимает настройки:
Часть журнала X11 ( /var/log/Xorg.0.log ):

 [3738325.274] (**) max11801_ts: Applying InputClass "evdev touchscreen catchall" [3738325.274] (II) LoadModule: "evdev" [3738325.275] (II) Loading /usr/lib/xorg/modules/input/evdev_drv.so [3738325.289] (II) Module evdev: vendor="X.Org Foundation" [3738325.289] compiled for 1.14.4, module version = 2.9.0 [3738325.289] Module class: X.Org XInput Driver [3738325.289] ABI class: X.Org XInput driver, version 19.1 [3738325.289] (II) Using input driver 'evdev' for 'max11801_ts' [3738325.290] (**) max11801_ts: always reports core events [3738325.293] (**) evdev: max11801_ts: Device: "/dev/input/event0" [3738325.294] (--) evdev: max11801_ts: Vendor 0 Product 0 [3738325.295] (--) evdev: max11801_ts: Found absolute axes [3738325.295] (--) evdev: max11801_ts: Found x and y absolute axes [3738325.295] (--) evdev: max11801_ts: Found absolute touchscreen [3738325.295] (II) evdev: max11801_ts: Configuring as touchscreen [3738325.296] (**) Option "EmulateThirdButton" "1" [3738325.296] (**) Option "EmulateThirdButtonTimeout" "750" [3738325.296] (**) Option "EmulateThirdButtonMoveThreshold" "30" [3738325.297] (**) evdev: max11801_ts: YAxisMapping: buttons 4 and 5 [3738325.297] (**) evdev: max11801_ts: EmulateWheelButton: 4, EmulateWheelInertia: 10, EmulateWheelTimeout: 200 [3738325.297] (**) Option "config_info" "udev:/sys/devices/soc0/soc.1/2100000.aips-bus/21a0000.i2c/i2c-0/0- 0048/input/input0/event0" [3738325.297] (II) XINPUT: Adding extended input device "max11801_ts" (type: TOUCHSCREEN, id 6) [3738325.299] (II) evdev: max11801_ts: initialized for absolute axes. [3738325.300] (**) max11801_ts: (accel) keeping acceleration scheme 1 [3738325.301] (**) max11801_ts: (accel) acceleration profile 0 [3738325.301] (**) max11801_ts: (accel) acceleration factor: 2.000 [3738325.301] (**) max11801_ts: (accel) acceleration threshold: 4 [3738325.305] (II) config/udev: Adding input device max11801_ts (/dev/input/mouse0) [3738325.305] (II) No input driver specified, ignoring this device. [3738325.305] (II) This device may have been added with another device file. 

Также xinput видит сенсорное устройство:

 # xinput list | Virtual core pointer id=2 [master pointer (3)] | > Virtual core XTEST pointer id=4 [slave pointer (2)] | > max11801_ts id=6 [slave pointer (2)] | Virtual core keyboard id=3 [master keyboard (2)] | Virtual core XTEST keyboard id=5 [slave keyboard (3)] 

К сожалению, evtest не видит никаких кликов (EV_KEY) (BTN_TOUCH):

 # evtest No device specified, trying to scan all of /dev/input/event* Available devices: /dev/input/event0: max11801_ts Select the device event number [0-0]: 0 Input driver version is 1.0.1 Input device ID: bus 0x18 vendor 0x0 product 0x0 version 0x0 Input device name: "max11801_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 1308 Min 0 Max 4095 Event code 1 (ABS_Y) Value 476 Min 0 Max 4095 Event code 24 (ABS_PRESSURE) Value 0 Min 0 Max 1 Properties: Testing ... (interrupt to exit) Event: time 1464027536.266584, type 3 (EV_ABS), code 0 (ABS_X), value 1167 Event: time 1464027536.266584, type 3 (EV_ABS), code 1 (ABS_Y), value 2282 Event: time 1464027536.266584, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 1 Event: time 1464027536.266584, -------------- EV_SYN ------------ Event: time 1464027536.282916, type 3 (EV_ABS), code 0 (ABS_X), value 1168 Event: time 1464027536.282916, -------------- EV_SYN ------------ Event: time 1464027536.299472, type 3 (EV_ABS), code 0 (ABS_X), value 1169 Event: time 1464027536.299472, -------------- EV_SYN ------------ Event: time 1464027536.315900, type 3 (EV_ABS), code 0 (ABS_X), value 1171 Event: time 1464027536.315900, type 3 (EV_ABS), code 1 (ABS_Y), value 2281 Event: time 1464027536.315900, -------------- EV_SYN ------------ Event: time 1464027536.340587, type 3 (EV_ABS), code 0 (ABS_X), value 1172 Event: time 1464027536.340587, -------------- EV_SYN ------------ Event: time 1464027536.348821, type 3 (EV_ABS), code 0 (ABS_X), value 1173 Event: time 1464027536.348821, -------------- EV_SYN ------------ Event: time 1464027536.357047, type 3 (EV_ABS), code 0 (ABS_X), value 1174 Event: time 1464027536.357047, type 3 (EV_ABS), code 1 (ABS_Y), value 2283 Event: time 1464027536.357047, -------------- EV_SYN ------------ Event: time 1464027536.365190, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 0 Event: time 1464027536.365190, -------------- EV_SYN ------------ 

evtest не видит никаких событий EV_KEY / BTN_TOUCH.

Я сделал еще несколько исследований и нашел, ts_test увидит события BTN_TOUCH:

 # TSLIB_TSDEVICE=/dev/input/touchscreen0 ts_test 1464048778.716232: 399 239 1 1464048778.724452: 399 239 1 1464048778.732621: 399 239 1 1464048778.740965: 399 238 1 1464048778.749177: 399 237 1 1464048778.757422: 399 236 0 

Я предполагаю, что последний столбец – это события BTN_TOUCH.

Я также попробовал xinput_calibrator

 # xinput_calibrator Calibrating EVDEV driver for "max11801_ts" id=6 current calibration values (from XInput): min_x=0, max_x=4095 and min_y=0, max_y=4095 

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

Та же проблема с Firefox, я не могу нажать / выбрать любые элементы.

Почему вы не видите события BTN_TOUCH? Это проблема конфигурации или ошибка?
Как я могу получить события кликов?