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

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

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

石台网站建设公司成都创新互联公司,石台网站设计制作,有大型网站制作公司丰富经验。已为石台上1000+提供企业网站建设服务。企业网站搭建\成都外贸网站制作要多少钱,请找那个售后服务好的石台做网站的公司定做!

问题:未使用的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触摸屏复位命令是Linuxreset。inuxreset命令和tset是一同个命令,用途是设定终端机的状态。这个命令会自动的从环境变数、命令列或是别的组态档决定目前终端机的型态。是linux触摸屏的复位命令。

Linux终端命令神器--Screen命令

screen的功能大体有三个:

会话恢复: 只要Screen本身没有终止,在其内部运行的会话都可以恢复。

多窗口:在Screen环境下, 所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。

会话共享:Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性。

安装screen:

# CentOS

yum install screen

# Debian/Ubuntu

apt install screen

Attached :表示当前screen正在作为主终端使用,为活跃状态。

Detached :表示当前screen正在后台使用,为非激发状态。

# 查看已存在终端

screen -ls

# 创建一个叫Hello的虚拟终端

screen -S Hello

# 进入虚拟终端32307

screen -r 32307

There is no screen to be resumed matching错误解决办法

1.在使用screen -r ******(id)重新连接程序界面时出现以下问题:

后来发现是因为突然断网,虽然重新连接,但之前的screen还是处于打开状态(1个screen无法同时打开2次),所以无法重新打开screen,解决方法如下:

2.首先使用screen -d *****(id),先退出,然后再使用 screen -r *****(id)重新连接

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

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


网页题目:linux触摸屏校准命令 linux触摸屏配置
浏览路径:http://ybzwz.com/article/ddsosgo.html