eglfs:未抓住键盘

时间:2018-06-26 14:45:26

标签: keyboard qt5 evdev eglfs

在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运行该应用程序。行为是相同的。

相反,鼠标可以正常工作。

该文档中有我不理解的内容吗?

1 个答案:

答案 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保留导出的变量。

我希望有帮助。

Qt for Embedded Linux

  

输入
  如果没有窗口系统,则可以通过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*选项。这就是我可以验证的。

Qt for Embedded Linux

  

使用libinput
  ...如果没有libinput支持或设置了环境变量QT_QPA_EGLFS_NO_LIBINPUT,则Qt自己的evdev处理程序将发挥作用。

此外,作为注释,我尝试了这种配置,首先使用由相同USB(Logitech)控制的鼠标和键盘,并且这样:键盘工作正常,但鼠标工作不正常。因此,我决定尝试使用独立的鼠标和键盘,现在(鼠标和键盘)都可以正常工作。

我也不必使用SUDOSUDO -E运行我的应用程序,因为目录/dev/input/event*'input'组具有读/写权限,并且用户是其中的一部分该组的人。

致谢!