20200620-01 Qt5.14.2 交叉編譯觸摸輸入 Tslib1.14 / evdev 等方式詳細說明

輸入事件類型

官方文檔說明

./configure -help 
//可以看到這些輸出
-libudev............ Enable udev support [auto]
-evdev ............. Enable evdev support [auto]
-imf ............... Enable IMF support [auto] (QNX only)
-libinput .......... Enable libinput support [auto]
-mtdev ............. Enable mtdev support [auto]
-tslib ............. Enable tslib support [auto]
-xcb-xinput ........ Enable XInput2 support [auto]
-xkbcommon ......... Enable key mapping support [auto]

以上就是 Qt 支持的輸入事件,在嵌入式設備中我們比較常接觸的一個是電阻屏時代的 tslib 一個是電容屏比較常用的 evdev 兩種

區別

對於 Qt 而言,它支持 tslib 單點輸入,tslib 是一個第三方庫,對電阻屏這類低精度屏而言表現較爲優秀;而 evdev 則是 Qt 自帶輸入庫,支持多點輸入,但是對於電阻這類需要校準的屏幕效果不好,適合電容這類屏幕


配置說明

tslib

這個適用於電阻屏,當然電容屏也可以使用,不過會出現兩者不匹配的問題,需要重新校準一下,這部分可以網上檢索太多了

Qt 加入 tslib 支持

1) 編譯環節

在你的./configure 後面添加這幾個參數

-tslib \
-I /opt/tslib-1.14/include \
-L /opt/tslib-1.14/lib \

前提你需要提前編譯好 tslib 的庫

#這個是 tslib 配置的腳本,供你參考
./configure --host=arm-linux-gnueabihf --prefix=/opt/tslib-1.14 CC=arm-linux-gnueabihf-gcc ac_cv_func_malloc_0_nonnull=yes

成功之後,make , make install 這裏就不說了

2)配置文件(運行設備)
# eglfs 顯示平臺使用這個參數
export QT_QPA_EGLFS_TSLIB = 1
# linuxfb 顯示平臺使用這個參數
export QT_QPA_FB_TSLIB = 1

evdev

1)編譯

evdev 一般都是默認添加到編譯之中,推薦遇到提示 tslib.h 不存在,而你不需要 tslib 庫的時候

-evdev #顯示聲明只需要這個輸入支持
2)配置文件
export QT_QPA_EVDEV_TOUCHSCREEN_PARAMETERS=/dev/input/event1:rotate=180
Parameter Description
/dev/input/ 指定輸入設備,沒有指定 Qt 會通過 libudev 檢索 或則 遍歷找到一個有效的節點
rotate 觸摸屏幕旋轉,必須是 90 , 180 , 270 中的一個
invertx and inverty 指定 X / Y 倒置的座標
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章