我有嵌入Linux的qt5。当我使用 Linux 帧缓冲区运行程序时,我的触摸屏不起作用,例如:
./myprog -plugin tslib:/dev/input/event0
更多详情:
-
ts_calibrate
工作正常 - 当我使用
./myprog -platform eglfs
运行我的程序时,触摸屏工作正常 我的环境:
TSLIB_TSDEVICE=/dev/input/event0 USER=root LD_LIBRARY_PATH=/usr/local/Qt-5.3.2/lib/ TSLIB_TSEVENTTYPE=INPUT OLDPWD=/usr/local/Qt-5.3.2 HOME=/root QTDIR=/ TSLIB_FBDEVICE=/dev/fb0 QT_QPA_EVDEV_KEYBOARD_PARAMETERS=/dev/input/event1 TSLIB_PLUGINDIR=/usr/lib/ts TSLIB_CONSOLEDEVICE=none LOGNAME=root TERM=vt102 QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=rotate=270 PATH=/sbin:/usr/sbin:/bin:/usr/bin QT_QPA_GENERIC_PLUGINS=evdevmouse:/dev/input/event0 TSLIB_CONFFILE=/etc/ts.conf SHELL=/bin/sh QWS_DISPLAY=powervr QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0:rotation=0 PWD=/root QWS_MOUSE_PROTO=tslib TSLIB_CALIBFILE=/etc/pointercal
Qt 5.3.2
config.status
:configure -verbose -confirm-license -release -no-xcb -no-pch -icu -tslib -qpa eglfs -no-c++11 -no-cups -no-gtkstyle -make libs -opensource -skip qtactiveqt -skip qtandroidextras -skip qtconnectivity -skip qtenginio -skip qtimageformats -skip qtlocation -skip qtmacextras -skip qtsensors -skip qtserialport -skip qttranslations -skip qttools -skip qtwebkit-examples -skip qtwinextras -skip qtx11extras -xplatform linux-omap3-g++ -qpa eglfs -qpa linuxfb -evdev
Qt对tslib
的支持是不确定的。 我发现Qt的一部分试图实现手势,但Qt的一部分试图将触摸映射到鼠标点击。 根据我自己的经验,结果是未完成/丢弃的手势。
由于您有可用的evdev
,因此使用它进行输入可能会取得更大的成功。 我已经成功地使用了以下内容:
export QT_QPA_PLATFORM=linuxfb
export QT_QPA_GENERIC_PLUGINS=evdevtouch,evdevmouse,evdevkeyboard
export QT_QPA_EVDEV_KEYBOARD_PARAMETERS=grab=1
我希望你能找到解决方案。如果没有,请尝试以下操作:
-
指定 TSLIB 设备
导出 TSLIB_TSDEVICE=/dev/input/event0
-
在某些设备上,您必须启用 TSLIB 支持(在我的主板上不需要)
导出QT_QPA_FB_TSLIB=1
-
启动您的应用程序
./myCuteQt5App -platform linuxfb -plugin tslib
一切都应该正常工作(在我的情况下,就像一个魅力;))。
希望对您有所帮助。
从 tslib 版本 1.3 开始,您可以使用包含的 ts_uinput 守护进程来创建 evdev 输入设备。将您的 evdev 环境指向它,您将拥有 tslib 过滤和校准的触摸输入,而无需使用 QT 的 tslib 插件。