【问题标题】:eglfs: keyboard not grabbedeglfs:键盘没有被抓住
【发布时间】:2023-03-03 07:35:28
【问题描述】:

Raspbian 在 RPi3B+ 上运行,Qt5.9.2 交叉编译,QWidget 应用程序。 键盘输入转到后面的外壳而不是我的应用程序。 在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 运行应用程序。行为是一样的。

相反,鼠标工作正常。

该文档中有什么我不明白的地方吗?

【问题讨论】:

    标签: keyboard qt5 evdev eglfs


    【解决方案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' 组具有读/写权限,而我的用户属于该组。

    问候!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-23
      • 2012-04-04
      • 1970-01-01
      • 2018-07-03
      • 2012-01-13
      • 1970-01-01
      • 2020-01-16
      相关资源
      最近更新 更多