189 8069 5689

linux校准触摸屏命令 linux触摸屏校准

树莓派(Linux 系统)触摸屏翻转显示以及触摸翻转

树莓派(Linux 系统)触摸屏翻转显示以及触摸翻转

创新互联公司-云计算及IDC服务提供商,涵盖公有云、IDC机房租用、西信服务器托管、等保安全、私有云建设等企业级互联网基础服务,欢迎联系:18980820575

问题:未使用的Pi官方屏幕,所以使用HDMI屏幕显示的时候,显示旋转的同时,触摸没有旋转

目的:旋转屏幕显示的同时,使得触摸也跟随旋转

操作总流程:

旋转90度操作

翻转显示:

1.sudo nano /boot/config.txt

2.在文件末尾加入

display_rotate=0

display_rotate=1   //90°

display_rotate=2   //180°

display_rotate=3   //270°

ctrl + o 保存文档 重启即可。

注:以下操作皆为SSH操作,所以每条指令前都加了DISPLAY=:0,如果本机操作删掉即可。

1.安装xinput

sudo apt-get install xinput

2.列出所有输入设备信息 远程操作时,使用xinput指令需要加入DISPLAY=:0

DISPLAY=:0 xinput --list

3.列出目标设备属性

DISPLAY=:0 xinput --list-props 7

4.旋转触摸的坐标轴

1)所以先交换x、y轴

DISPLAY=:0 xinput --set-prop '7' 'Evdev Axes Swap' 1

2)然后反转y轴

DISPLAY=:0 xinput --set-prop '7' 'Evdev Axis Inversion' 0 1

显示旋转修改之后需要重启。而触摸旋转不需要重启。

详细操作方法: 

1.安装xinput

sudo apt-get install xinput

描述:

xinput - utility to configure and test X input devices  

xinput-用于配置和测试X输入设备的实用程序

xinput is a utility to list available input devices,

xinput是一个实用程序,可以列出可用的输入设备、

query information about a device and change input device settings.

关于设备的查询信息和更改输入设备设置

2.列出所有输入设备信息

xinput --list

如果远程操作记得在命令前加DISPLAY=:0

得到以下信息:

pi@NTGAGE:~ $ DISPLAY=:0 xinput --list

⎡ Virtual core pointer                          id=2    [master pointer  (3)]

⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]

⎜   ↳ Logitech USB Optical Mouse                id=6    [slave  pointer  (2)]

⎜   ↳ WaveShare WaveShare Touchscreen           id=7    [slave  pointer  (2)]

⎣ Virtual core keyboard                         id=3    [master keyboard (2)]

↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]

↳ Logitech USB Keyboard                     id=8    [slave  keyboard (3)]

↳ Logitech USB Keyboard                     id=9    [slave  keyboard (3)]

3.列出目标设备属性

由于所使用的触摸屏幕是微雪7寸屏幕,由以上信息可以得到微雪的触摸屏对应的ID为7

所以,接下来看这款输入设备的属性,

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

这块屏幕正常显示和触摸的信息如上。

如果执行到这一步,发现并没有以上的Evdev等属性项,请跳转第2种方法。

现在需要达到的目的是在屏幕显示反转的同时,使得触摸也随显示翻转。

屏幕显示为翻转90度。/boot/config.txt设置为display_rotate=1

上述信息中Evdev Axis Inversion 项是每条轴的旋转设置项,后面第一个参数是x,第二个参数是y.

Evdev Axes Swap项对应的是两条轴的交换。

0为不翻转,1为翻转 

例如。x轴原本是朝向右的,当把Evdev Axis Inversion的第一个参数

设置为1,即x轴朝向左。

4.旋转触摸的坐标轴

现在目的是要触摸旋转90度,从坐标轴理解:

即目的x轴正向为初始y轴的反向。目的y轴的正方向为初始x轴的正向。

1)所以先交换x、y轴

DISPLAY=:0 xinput --set-prop '7' 'Evdev Axes Swap' 1

2)然后反转y轴

DISPLAY=:0 xinput --set-prop '7' 'Evdev Axis Inversion' 0 1

这样即可完成触摸旋转90度。若要旋转其他角度,推理一下即可。

显示旋转修改之后需要重启。而触摸旋转不需要重启。

第二种方法

如果查询到的信息如下

DISPLAY=:0 xinput --list-props 6

Device 'WaveShare WaveShare Touchscreen':

    Device Enabled (114):   1

    Coordinate Transformation Matrix (115): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000

    libinput Calibration Matrix (246):      0.000000, 1.000000, 0.000000, -1.000000, 0.000000, 1.000000, 0.000000, 0.000000, 1.000000

    libinput Calibration Matrix Default (247):      1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000

    libinput Send Events Modes Available (248):     1, 0

    libinput Send Events Mode Enabled (249):        0, 0

    libinput Send Events Mode Enabled Default (250):        0, 0

    Device Node (251):      "/dev/input/event0"

    Device Product ID (252):        3823, 5

可以看到该驱动方式采用的是libinput,

查看/usr/share/X11/xorg.conf.d/目录下是否有40-libinput.conf这个文件。

无 则需要安装 

sudo apt-get install xserver-xorg-input-libinput 

下一步安装完成后ls一下,就可以看到在/usr/share/X11/xorg.conf.d/目录下存在该文件,

下一步复制该文件到/etc/X11/xorg.conf.d/目录下。

一开始xorg.conf.d这个目录在/etc/X11可能没有,需要自己创建。

sudo mkdir xorg.conf.d

下一步复制到xorg.conf.d 目录下即可。

sudo cp /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/

下一步进入/etc/X11/xorg.conf.d/目录下修改40-libinput.conf 文件

cd /etc/X11/xorg.conf.d/

sudo nano 40-libinput.conf

找到touchscreen section

Section "InputClass"

    Identifier "libinput touchscreen catchall"

    MatchIsTouchscreen "on"

    MatchDevicePath "/dev/input/event*"

    Driver "libinput"

EndSection

添加一行  Option "CalibrationMatrix" "0 1 0 -1 0 1 0 0 1 

结果为

Section "InputClass"

    Identifier "libinput touchscreen catchall"

    Option "CalibrationMatrix" "0 1 0 -1 0 1 0 0 1

    MatchIsTouchscreen "on"

    MatchDevicePath "/dev/input/event*"

    Driver "libinput"

EndSection

然后重启生效

这样的修改也是同样修改为翻转90度,如果需要修改为其他角度,请参考libinput的算法

linux开发板怎么样实现触摸屏校验

第一进入LINUX系统时,会出现触摸屏校验提示,按提示校准5个点就可以了.

如果想重新校验,可以如下操作

#rm /etc/pointercal (删除校准文件)

#reboot (重新启动开发板)

此时可以重新校验

友善之臂linux系统中的怎么设置每次开启进行触摸屏校准

很多方法吧。。首先你要明白校准的原理,你的触摸屏和你的显示屏实质上是没有关系,所谓校准就是让屏幕上的某点和触摸屏的某点形成关系,这个关系所需要的就是几个关系系数,其实就是一个多元一次方程组,通过采集多点来求解这个方程组就求出了关系系数。这样底层驱动传上来触摸屏坐标后,系统就会自动转换成屏幕的坐标。


分享标题:linux校准触摸屏命令 linux触摸屏校准
转载注明:http://cdxtjz.cn/article/ddsgcoi.html

其他资讯