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'
группа, и мой пользователь является частью этой группы.
С уважением!