0

我正在尝试在使用自定义键盘 的 linux 嵌入式设备(EGLFS )上的 keypress/keyrelease 上获取QKeyEvents 。/dev/input/event1是关键事件文件。

使用evtest输出与预期一致。但是在 EGLFS 平台上运行的 Qt 应用程序中, 每当在自定义键盘上按下/释放键时,事件过滤器都会将事件类型检测为QEvent::SockAct 。预期的事件类型是我无法获得的QEvent::KeyPress/QEvent::KeyRelease 。

我尝试设置以下环境变量

QT_QPA_EVDEV_KEYBOARD_PARAMETERS=/dev/input/event1;grab=1 QT_QPA_GENERIC_PLUGINS=evdevmouse,evdevkeyboard
QT_QPA_PLATFORM=eglfs
QT_QPA_EGLFS_DISABLE_INPUT = 1

在设置这些变量之前,我无法在按键/释放时获得任何事件。但是在设置了这些之后,它被检测为 QEvent::SockAct。

请建议在按键/释放时获取 QKeyEvent 需要设置什么。在嵌入式 linux 上运行的Qt 版本 5.14 。

4

1 回答 1

0

我从来没有为任何嵌入式平台编程,但我发现这QEvent::SockAct是发生在

套接字已激活,(并且它)用于实现QSocketNotifier.

然后

该类QSocketNotifier支持监视文件描述符上的活动。

这里

我想如果open() /dev/input/event1你会得到这个文件描述符。我知道我没有提供完整的解决方案,但正如我所说,我从未做过这种编程。

于 2021-10-22T15:41:55.580 回答