相对于没有视窗系统,鼠标、键盘、触摸板输入直接从evdev读取或者使用第三方的库实现比如 libinput、tslib。这需要/dev/input/event*可以被用户读取。Eglfs 和 Linuxfb 内部有所有的输入处理。
一、使用libinput
Libinput 是一个用于处理输入设备的库。相对于 Qt 直接读取 evdev,它提供了另一种实现方式。为了使用 libinput,配置编译 Qt 时需要准备 libudev 和 libinput 开发文件。如果使用键盘支持,xkbcommon 也是必需的。Eglfs 和 linuxfb 不需要其它额外的配置由于它们默认使用 libinput。如果没有 libinput 支持或者 QT_QPA_EGLFS_NO_LIBINPUT 设置了。Qt 将会使用它自己的 evdevhandlers 处理。
二、Eglfs和linuxfb不使用libinput
进行设置不使用 libinput:
- QT_QPA_EGLFS_DISABLE_INPUT:EGLFS禁用输入,即不使用libinput
- QT_QPA_FB_DISABLE_INPUT:LinuxFB禁用输入,即不使用libinput
另外还有一些可能要用到的相关环境变量:QT_QPA_EVDEV_MOUSE_PARAMETERS, QT_QPA_EVDEV_KEYBOARD_PARAMETERS 以及 QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS。
三、鼠标输入
鼠标光标默认会一直显示,除非设置QT_QPA_EGLFS_HIDECURSOR(for eglfs) 或者QT_QPA_FB_HIDECURSOR (for linuxfb),Qt 的基于 libudev 的设备会查看报告,报告中至少有一个鼠标可用。如果不使用 libudev,鼠标箭头会一直显示除非通过修改环