在RPi3B +,Qt5.9.2交叉编译的QWidget应用程序上运行的Raspbian。 键盘输入转到后面的外壳,而不是我的应用程序。 在this document之后,我设置了以下环境变量:
LD_LIBRARY_PATH=/home/pi/bin
QT_QPA_EVDEV_KEYBOARD_PARAMETERS=/dev/input/event1;grab=1
QT_QPA_ENABLE_TERMINAL_KEYBOARD=1
QT_QPA_GENERIC_PLUGINS=evdevmouse,evdevkeyboard
QT_QPA_EGLFS_FORCE888=1
QT_QPA_PLATFORM=eglfs
QT_QPA_EGLFS_DEBUG=1
,并尝试在本地(即位于目标前面)或通过SSH运行该应用程序。行为是相同的。
相反,鼠标可以正常工作。
该文档中有我不理解的内容吗?
答案 0 :(得分:1)
它对我有用:
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保留导出的变量。
我希望有帮助。
输入
如果没有窗口系统,则可以通过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*
选项。这就是我可以验证的。
使用libinput
...如果没有libinput支持或设置了环境变量QT_QPA_EGLFS_NO_LIBINPUT
,则Qt自己的evdev处理程序将发挥作用。
此外,作为注释,我尝试了这种配置,首先使用由相同USB(Logitech)控制的鼠标和键盘,并且这样:键盘工作正常,但鼠标工作不正常。因此,我决定尝试使用独立的鼠标和键盘,现在(鼠标和键盘)都可以正常工作。
我也不必使用SUDO
或SUDO -E
运行我的应用程序,因为目录/dev/input/event*
对'input'
组具有读/写权限,并且用户是其中的一部分该组的人。
致谢!