跳至正文
首页 » Linux 同步旋转显示器和触控屏

Linux 同步旋转显示器和触控屏

我在yoga13中使用archlinux系统。yoga13 是一款屏幕可以旋转的触控本,但是archlinux没有对旋转屏幕的原生驱动支持。直接使用系统的旋转屏幕功能,触摸屏坐标不会跟随屏幕旋转。本文介绍编写一段shell程序实现 同步旋转显示器和触控屏 。

Lenovo Yoga 13

屏幕旋转可以使用xrandr命令实现,例如 xrandr -o 1可以将屏幕向左旋转。使用xrandr的问题是触摸屏触摸时会出错,按下的位置和鼠标位置不符。这时需要更改触摸屏相关设置。

首先使用 xinput –list 命令查看所有的设备号,在其中触摸屏的设备号。

⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ ELAN Touchscreen                          id=10   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=17   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
                            .........

从表中可以看到触屏设备名称为“ELAN Touchscreen ”,设备号为10。然后使用xinput –list-props 10 查看触摸屏相关属性(其中“10”为设备号)。其中如下一行为触摸屏的坐标转换矩阵。

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

修改坐标转换矩阵可以旋转触摸屏的方向。

正常 1 0 0 0 1 0 0 0 1
向左 0 -1 1 1 0 0 0 0 1
向右 0 1 0 -1 0 1 0 0 1
翻转 -1 0 1 0 -1 1 0 0 1

使用运行命令 xinput set-prop 10 ‘Coordinate Transformation Matrix’ 0 -1 1 1 0 0 0 0 1 可以实现触摸屏的向左旋转。

将以上命令写入一个.sh文件即可实现同步旋转屏幕显示和触摸屏方向。

shell文件源码:rotation.sh

参考文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注