eglfs: клавиатура не захвачена - PullRequest
0 голосов
/ 26 июня 2018

Raspbian работает на RPi3B +, кросс-скомпилировано Qt5.9.2, приложение QWidget. Клавиатура вводится в оболочку, а не в мое приложение. После этого документа я установил следующие env vars:

LD_LIBRARY_PATH=/home/pi/bin
QT_QPA_EVDEV_KEYBOARD_PARAMETERS=/dev/input/event1;grab=1
QT_QPA_ENABLE_TERMINAL_KEYBOARD=1
QT_QPA_GENERIC_PLUGINS=evdevmouse,evdevkeyboard
QT_QPA_EGLFS_FORCE888=1
QT_QPA_PLATFORM=eglfs
QT_QPA_EGLFS_DEBUG=1

и пытался запустить приложение либо локально (т.е. сидя перед целью), либо через SSH. Поведение такое же.

Вместо этого мышь работает нормально.

Есть ли что-то, чего я не понял в этом документе?

1 Ответ

0 голосов
/ 21 января 2019

У меня работает с:

export QT_QPA_EVDEV_KEYBOARD_PARAMETERS=grab=1 
export QT_QPA_EVDEV_MOUSE_PARAMETERS=grab=1

и работает с:

sudo -E ./myapp -platform eglfs

Я думаю, sudo необходим из-за того, что в документации говорится о /dev/input/event* разрешениях. Также необходима опция -E, чтобы sudo сохранял экспортированные переменные.

Надеюсь, это поможет.

Qt для встроенного Linux

Ввод
Когда нет оконной системы, мышь, клавиатура и сенсорный ввод читаются напрямую через evdev или с помощью вспомогательных библиотек, таких как libinput или tslib. Обратите внимание, что для этого необходимо, чтобы узлы устройства / dev / input / event * были доступны для чтения пользователю. eglfs и linuxfb имеют весь скомпилированный код обработки ввода.


Я хочу поделиться дополнительной информацией о моем предыдущем ответе:

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

export QT_QPA_EGLFS_PHYSICAL_WIDTH=155
export QT_QPA_EGLFS_PHYSICAL_HEIGHT=86
export QT_QPA_EGLFS_WIDTH=1024
export QT_QPA_EGLFS_HEIGHT=614
export QT_QPA_EVDEV_KEYBOARD_PARAMETERS=grab=1
export QT_QPA_EVDEV_MOUSE_PARAMETERS=grab=1
export QT_QPA_EGLFS_NO_LIBINPUT=1

Обратите внимание, что export QT_QPA_EGLFS_NO_LIBINPUT=1 необходим, поэтому в игру вступают собственные обработчики evdev Qt и, следовательно, учитываются опции QT_QPA_EVDEV*. Это то, что я мог проверить.

Qt для встраиваемых Linux

Использование libinput
... Если поддержка libinput недоступна или установлена ​​переменная окружения QT_QPA_EGLFS_NO_LIBINPUT, в игру вступают собственные обработчики evdev Qt.

Кроме того, в качестве комментария я попробовал эту конфигурацию, сначала с мышью и клавиатурой, управляемой с помощью того же USB (Logitech), и вот так: клавиатура работала правильно, но не мышь. Поэтому я решил попробовать с независимой мышью и клавиатурой, и теперь обе (мышь и клавиатура) работают правильно.

Кроме того, мне не нужно запускать приложение с SUDO или SUDO -E, поскольку каталог /dev/input/event* имеет разрешения на чтение / запись для группы 'input', и мой пользователь является частью этой группы.

Привет!

...