它适用于我:
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 保留导出的变量。
我希望这会有所帮助。
用于嵌入式 Linux 的 Qt
输入
当不存在窗口系统时,鼠标、键盘和触摸输入直接通过 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*
会考虑选项。这是我可以验证的。
用于嵌入式 Linux 的 Qt
使用 libinput
... 如果 libinput 支持不可用或QT_QPA_EGLFS_NO_LIBINPUT
设置了环境变量,Qt 自己的 evdev 处理程序就会发挥作用。
另外,作为评论,我尝试了这种配置,首先是使用相同的 USB(罗技)控制的鼠标和键盘,就像这样:键盘工作正常,但鼠标不行。所以我决定尝试使用独立的鼠标和键盘,现在两者(鼠标和键盘)都能正常工作。
我也不必使用SUDO
or运行我的应用程序SUDO -E
,因为该目录/dev/input/event*
具有该组的读/写权限,'input'
并且我的用户是该组的一部分。
问候!