Мне нужно отлавливать нажатия кнопок GPIO в приложении Qt / QML, работающем на плате Embedded Linux.
Системно, события распознаются evtest
, но после установки фильтра событий через installEventFilter()
на QGuiApplication
я получаю только QEvent::SockAct
событий, дважды за нажатие.
Возможно, Qt прослушивает дескриптор файла и получает уведомления, но они не преобразуются в QKeyEvent
.
Я запускаю приложение со следующими установленными переменными:
export QWS_KEYBOARD="LinuxInput:/dev/input/event2"
export QT_QPA_EVDEV_KEYBOARD_PARAMETERS=/dev/input/event2
Они имеют некоторый эффект как минимум:
qt.qpa.input: Adding keyboard at "/dev/input/event2"
qt.qpa.input: Try to create keyboard handler for "/dev/input/event2" ""
qt.qpa.input: Opening keyboard at "/dev/input/event2"
qt.qpa.input: Create keyboard handler with for device "/dev/input/event2"
qt.qpa.input: Unload current keymap and restore built-in
qt.qpa.input: numlock=0 , capslock=0, scrolllock=0
qt.qpa.input: evdevmouse: Using device discovery
Но, видимо, этого недостаточно. Нужно ли явно прослушивать устройство / dev / iput / event2, или есть простой способ повторно использовать события ключа Qt?
Может быть, я устанавливаю фильтр событий не на тот объект?
Спасибо!