我需要捕捉嵌入式Linux板上运行的Qt / QML应用程序中的GPIO按钮按键。
从系统角度讲,事件可以由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键事件? 可能是我在错误的对象上安装了事件过滤器吗?
谢谢!