eglfs: клавиатура не захвачена

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. Поведение такое же.

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

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

0 ответов

Это работает для меня с:

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 необходимо, чтобы собственный Qt evdev в игру приходят хендлеры и, следовательно, QT_QPA_EVDEV* варианты учитывают. Это то, что я мог проверить.

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

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

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

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

С уважением!

Другие вопросы по тегам