树莓派触摸屏翻转显示以及触摸翻转
问题:未使用的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的算法
https://wayland.freedesktop.org/libinput/doc/latest/absolute_axes.html
第三种方法是微雪官方给的建议,修改input子系统的代码,然后重新编译内核,即可完成
详细操作没有给出,给了一个操作文档,在此也写出来,希望有操作成功的可以分享下。
树莓派触摸屏翻转显示以及触摸翻转相关推荐
- 树莓派(Linux 系统)触摸屏翻转显示以及触摸翻转
问题:未使用的Pi官方屏幕,所以使用HDMI屏幕显示的时候,显示旋转的同时,触摸没有旋转 目的:旋转屏幕显示的同时,使得触摸也跟随旋转 操作总流程: 旋转90度操作 翻转显示: 1.sudo ...
- 蓝桥杯嵌入式LCD翻转显示
蓝桥杯嵌入式LCD翻转显示 #前言 提示:以下是本篇文章正文内容,下面案例可供参考 一.配置寄存器: 首先打开蓝桥杯提供的"液晶控制器ILI9325.pdf"文件(文档链接将放置文 ...
- linux下arm触摸屏显示,一些显示和触摸代码(linux on arm 平台)
一些显示和触摸代码(linux on arm 平台) linux on arm 平台的一些显示和触摸功能 一.版本和平台: 代码版本:1.1 平台:linux arm开发板; LCD: 800x480 ...
- 树莓派触摸屏连接方法(微雪7寸LCD)
微雪 7寸LCD 触摸屏 显示器 适用 树莓派 BB BLACK 电脑 HDMI高清,购买地址如下: https://detail.tmall.com/item.htm?spm=a220o.10008 ...
- 树莓派 触摸屏_树莓派加装3.5寸触摸屏方法和触摸屏问题处理
近期给树莓派4B加装3.5寸屏幕,过程记录如下: 目录 前言 一.给系统安装驱动 1.在线安装 2.离线安装 二.使用预装驱动的镜像 三.调整方向 四.调整分辨率 五.屏幕校准 总结 前言 屏幕连接如 ...
- android怎么监听多点触摸_大尺寸触摸屏厂家定制多点触摸框
深圳融创方圆是订做红外大尺寸触摸屏生产厂家,弧形/直角/异形/U型大尺寸红外多点触摸框定做15寸-1000寸超大尺寸红外触控屏可以用于配合液晶拼接屏,DLP拼接屏,无缝拼接屏,小间距LED.互动投影. ...
- 使用Tslib在触摸屏上显示汉字
终于到了在触摸屏上显示汉字了,真正写代码.测试的时间是1天,在此之前的一切准备.学习花费约2周到3周时间.而为了获取触摸屏上显示的图像,花费约2天.由于网络驱动已经接近于放弃状态,NFS用不了,只好用 ...
- 使用Tslib在触摸屏上显示汉字【转】
转自:http://www.latelee.org/embedded-linux/use-tslib-to-display-chinese-character.html 终于到了在触摸屏上显示汉字了, ...
- Leetcode 048旋转图像(将矩阵逆时针旋转90度)(先对角线翻转,再左右翻转)
代码 class Solution {public:void rotate(vector<vector<int>>& matrix) {//先对角线翻转,再左右翻转fo ...
最新文章
- Flask rst 文档转换为html格式文件
- Mybatis 关键组件(注意各组件的最佳作用域)
- 微信小程序开发之https从无到有
- mingw64 下 java_MinGW x64 for Windows安装
- oracle 数据掩码,oracle格式掩码
- 校友会2019中国大学计算机,校友会2019中国大学一流专业排名800强出炉,北大清华复旦前三...
- 大型网站架构系列:电商网站架构案例(1)
- linux man 手册翻译,close (linux man) 翻译
- 数字证书注册审批机构(RA)
- 以太坊2.0合约余额新增3872 ETH
- 使用spring cloud,nacos,dubbo,gateway搭建微服务
- 【转】PCDATA和CDATA的区别究竟是什么呢?
- 什么是可加,半可加,不可加事实?
- 首阴战法胜率不高?应该是忘记加上一个大前提!
- springboot启动错误--springboot At least one base package must be specified
- Excel中随机六位字母与数字的密码
- 机器学习第一章:简介和概括
- vue中使用电子签名
- Windows中快速获取文件目录的方法
- Excel VBA连接ORACLE数据库
热门文章
- 什么叫别让孩子输在起跑线上?! - 电子产品已成儿童“多动症”诱因
- Java 面向对象(一)
- 直播回放:快速上手,使用 Kotlin 把支付宝小程序装进自己的 App
- 软件测试1——PIE模型
- Chrome浏览器通过EasyPlayer播放多路flv视频流后浏览器崩溃是什么原因?
- Revit二次开发——设备自动接管插件的开发思路(入门实例教程)
- mariadb无法访问
- iVMS-4200 Vs区别_高中和大学的这些区别虽鲜为人知,却字字有据,句句真实
- (二)Semi-supervised(半监督学习)李宏毅
- 1.6 电源树中电流的计算方法(硬件基础系列)