問題:未使用的Pi官方屏幕缀壤,所以使用HDMI屏幕顯示的時(shí)候宝剖,顯示旋轉(zhuǎn)的同時(shí),觸摸沒有旋轉(zhuǎn)
目的:旋轉(zhuǎn)屏幕顯示的同時(shí)搂赋,使得觸摸也跟隨旋轉(zhuǎn)
操作總流程:
? ? 旋轉(zhuǎn)180度操作
1 翻轉(zhuǎn)顯示:
1.sudo nano /boot/config.txt
2.在文件末尾加入
display_rotate=0
display_rotate=1?? //90°
display_rotate=2?? //180°
display_rotate=3?? //270°
ctrl + o 保存文檔 重啟即可赘阀。
2 翻轉(zhuǎn)觸摸
這個(gè)需要xinput
注:以下操作皆為SSH操作,所以每條指令前都加了DISPLAY=:0脑奠,如果本機(jī)操作刪掉即可基公。
2.1? 查看觸摸屏信息
2.1.1.安裝xinput
sudo apt-get install xinput
2.1.2.列出所有輸入設(shè)備信息
xinput --list
如果遠(yuǎn)程操作記得在命令前加DISPLAY=:0
得到以下信息:
pi@raspberrypi:~ $ xinput --list
?Virtual corepointer??????????????????? ??? id=2 [masterpointer? (3)]
??? ?Virtual core XTESTpointer????????????? ? id=4 [slave? pointer?(2)]
??? ?Silicon WorksMulti-touch SW4101C?????? ????? id=6 [slave? pointer?(2)]
?Virtual corekeyboard??????????????? ???? id=3 [master keyboard (2)]
??? ?Virtual core XTEST keyboard????????????? id=5 [slave?keyboard (3)]
pi@raspberrypi:~ $
2.1.3.列出目標(biāo)設(shè)備屬性
pi@raspberrypi:~ $ xinput --list-props 6
Device 'Silicon Works Multi-touch SW4101C':
?????? DeviceEnabled (114):?? 1
?????? CoordinateTransformation Matrix (115):?? 1.000000,0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
?????? libinputCalibration Matrix (246): -1.000000,0.000000, 1.000000, 0.000000, -1.000000, 1.000000, 0.000000, 0.000000, 1.000000
?????? libinputCalibration Matrix Default (247):?? 1.000000,0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
?????? libinputSend Events Modes Available (248):???? 1,0
?????? libinputSend Events Mode Enabled (249): 0, 0
?????? libinputSend Events Mode Enabled Default (250):?? 0,0
?????? DeviceNode (251):?????? "/dev/input/event0"
?????? DeviceProduct ID (252):????? 10685, 16641
注意!K纹邸:涠埂!3莸K嵝荨!5昏尽0咚尽!5K薰巍!L卣肌2谥谩T迫住J悄俊!1贽唷0媚伞H嗟帧!`头琛T┙瘛!C俊O钒铡!如果觸摸屏幕信息脚囊,是以上內(nèi)容龟糕,請(qǐng)參考2.2;如果不是請(qǐng)參考2.3
2.2? 修改配置文件
2.2.1、安裝libinput,
查看/usr/share/X11/xorg.conf.d/目錄下是否有40-libinput.conf這個(gè)文件悔耘。
無 則需要安裝
sudo apt-get installxserver-xorg-input-libinput????
讲岁,
2.2.2、復(fù)制該文件到/etc/X11/xorg.conf.d/目錄下衬以。
一開始xorg.conf.d這個(gè)目錄在/etc/X11可能沒有缓艳,需要自己創(chuàng)建。
sudo mkdirxorg.conf.d
sudo cp/usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/
2.2.3看峻、進(jìn)入/etc/X11/xorg.conf.d/目錄下修改40-libinput.conf 文件
cd/etc/X11/xorg.conf.d/
sudo vim 40-libinput.conf
找到touchscreensection
Section"InputClass"
?? Identifier "libinput touchscreencatchall"
?? MatchIsTouchscreen "on"
?? MatchDevicePath "/dev/input/event*"
?? Driver "libinput"
EndSection
添加一行?Option "CalibrationMatrix" "-1 0 1 0 -1 1 0 0 1“???
結(jié)果為
Section"InputClass"
?? Identifier "libinput touchscreencatchall"
?? Option "CalibrationMatrix" " -1 0 1 0 -1 1 0 0 1“
?? MatchIsTouchscreen "on"
?? MatchDevicePath "/dev/input/event*"
?? Driver "libinput"
EndSection
Complete the above steps to perform a 90degree rotation.
Note:
90 degree rotation:Option "CalibrationMatrix" "0 1 0 -1 0 1 0 0 1"
180 degree rotation:Option "CalibrationMatrix" "-1 0 1 0 -1 1 0 0 1"
270 degree rotation:Option "CalibrationMatrix" "0 -1 1 1 0 0 0 0 1"
2.3.
另一種觸摸屏處理方法
pi@NTGAGE:~ $ DISPLAY=:0 xinput --list-props 7
Device 'WaveShare WaveShare Touchscreen':
? ? ? ? Device Enabled (115): ? 1
? ? ? ? Coordinate Transformation Matrix (116): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
? ? ? ? Device Accel Profile (240): ? ? 0
? ? ? ? Device Accel Constant Deceleration (241): ? ? ? 1.000000
? ? ? ? Device Accel Adaptive Deceleration (242): ? ? ? 1.000000
? ? ? ? Device Accel Velocity Scaling (243): ? ?10.000000
? ? ? ? Device Product ID (244): ? ? ? ?3823, 5
? ? ? ? Device Node (245): ? ? ?"/dev/input/event3"
? ? ? ? Evdev Axis Inversion (246): ? ? 0, 0
? ? ? ? Evdev Axis Calibration (247): ? <no items>
? ? ? ? Evdev Axes Swap (248): ?0
? ? ? ? Axis Labels (249): ? ? ?"Abs MT Position X" (267), "Abs MT Position Y" (268), "Abs MT Pressure" (269), "None" (0), "None" (0), "None" (0)
? ? ? ? Button Labels (250): ? ?"Button Unknown" (233), "Button Unknown" (233), "Button Unknown" (233), "Button Wheel Up" (121), "Button Wheel Down" (122)
? ? ? ? Evdev Scrolling Distance (251): 0, 0, 0
? ? ? ? Evdev Middle Button Emulation (252): ? ?0
? ? ? ? Evdev Middle Button Timeout (253): ? ? ?50
? ? ? ? Evdev Third Button Emulation (254): ? ? 0
? ? ? ? Evdev Third Button Emulation Timeout (255): ? ? 1000
? ? ? ? Evdev Third Button Emulation Button (256): ? ? ?3
? ? ? ? Evdev Third Button Emulation Threshold (257): ? 20
? ? ? ? Evdev Wheel Emulation (258): ? ?0
? ? ? ? Evdev Wheel Emulation Axes (259): ? ? ? 0, 0, 4, 5
? ? ? ? Evdev Wheel Emulation Inertia (260): ? ?10
? ? ? ? Evdev Wheel Emulation Timeout (261): ? ?200
? ? ? ? Evdev Wheel Emulation Button (262): ? ? 4
? ? ? ? Evdev Drag Lock Buttons (263): ?0
這塊屏幕正常顯示和觸摸的信息如上阶淘。
如果執(zhí)行到這一步,發(fā)現(xiàn)并沒有以上的Evdev等屬性項(xiàng)互妓,請(qǐng)?zhí)D(zhuǎn)2.2舶治。
現(xiàn)在需要達(dá)到的目的是在屏幕顯示反轉(zhuǎn)的同時(shí),使得觸摸也隨顯示翻轉(zhuǎn)车猬。
屏幕顯示為翻轉(zhuǎn)90度霉猛。/boot/config.txt設(shè)置為display_rotate=1
上述信息中Evdev Axis Inversion 項(xiàng)是每條軸的旋轉(zhuǎn)設(shè)置項(xiàng),后面第一個(gè)參數(shù)是x,第二個(gè)參數(shù)是y.
Evdev Axes Swap項(xiàng)對(duì)應(yīng)的是兩條軸的交換珠闰。
0為不翻轉(zhuǎn)惜浅,1為翻轉(zhuǎn)?
例如。x軸原本是朝向右的伏嗜,當(dāng)把Evdev Axis Inversion的第一個(gè)參數(shù)
設(shè)置為1坛悉,即x軸朝向左。
4.旋轉(zhuǎn)觸摸的坐標(biāo)軸
現(xiàn)在目的是要觸摸旋轉(zhuǎn)90度承绸,從坐標(biāo)軸理解:
即目的x軸正向?yàn)槌跏紋軸的反向裸影。目的y軸的正方向?yàn)槌跏紉軸的正向。
1)所以先交換x军熏、y軸
DISPLAY=:0 xinput --set-prop '7' 'Evdev Axes Swap' 1
2)然后反轉(zhuǎn)y軸
DISPLAY=:0 xinput --set-prop '7' 'Evdev Axis Inversion' 0 1
這樣即可完成觸摸旋轉(zhuǎn)90度轩猩。若要旋轉(zhuǎn)其他角度,推理一下即可。
顯示旋轉(zhuǎn)修改之后需要重啟均践。而觸摸旋轉(zhuǎn)不需要重啟晤锹。
3 參考網(wǎng)址:
https://blog.csdn.net/wwb74110/article/details/79095576
http://www.raspberrypiwiki.com/index.php/7_inch_HDMI_LCD_(H)