Как перехватить событие кнопки GPIO с Qt в Linux - PullRequest
0 голосов
/ 24 января 2019

Мне нужно отлавливать нажатия кнопок 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? Может быть, я устанавливаю фильтр событий не на тот объект?

Спасибо!

...