触摸屏触摸坐标与画面对齐
xinput set-prop 10 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1
用于修改触摸屏的坐标转换矩阵,以调整触摸输入的方向和映射关系。该命令将触摸屏的坐标系旋转了90度,使其与显示屏的方向一致。具体而言,矩阵参数设置如下:
0 1 0
-1 0 1
0 0 1
这表示将触摸输入从原始坐标系(假设为竖屏)旋转到新的坐标系(横屏)。如果之前触摸输入与显示不一致,执行此命令后,触摸位置应与显示内容对齐。
至于10 和后面一组数字来源
xinput list
xinput watch-props 10
设备id【10】就获取到了,如果想实时获取点击的坐标
evtest /dev/input/event5
至于数字
实际是矩阵:
0 1 0
-1 0 1
0 0 1
是一个二维坐标变换矩阵,用于描述坐标系的旋转变换。具体而言,这个矩阵表示将坐标系逆时针旋转90度。
解释:
矩阵形式:
| a b c |
| d e f |
| g h i |
其中,前三个元素(a、b、c)表示新坐标系中x轴的方向,接下来的三个元素(d、e、f)表示新坐标系中y轴的方向,最后三个元素(g、h、i)通常用于平移变换,但在此矩阵中未使用,保持为0、0、1。
应用:
将一个点(x, y)表示为列向量 [x, y, 1],与上述变换矩阵相乘,得到新的坐标(x’,y’):
| x' | = | 0 1 0 | * | x |
| y' | | -1 0 1 | | y |
| 1 | | 0 0 1 | | 1 |
计算结果为:
x' = 0 * x + 1 * y + 0 = y
y' = -1 * x + 0 * y + 1 = -x + 1
因此,原始点(x, y)经过此变换后,得到新坐标(y, -x + 1),实现了逆时针旋转90度的效果。
在触摸屏配置中,使用此变换矩阵可以调整触摸输入的方向,使其与显示内容对齐。例如,如果显示内容是横屏显示,但触摸输入为竖屏,通过应用此变换矩阵,可以将触摸输入旋转,使其与显示内容一致。
xrandr --output DSI-1 --rotate inverted
xinput set-prop 10 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1
xrandr --output DSI-1 --rotate left
xinput set-prop 10 'Coordinate Transformation Matrix' -1 0 1 0 -1 1 0 0 1
xrandr --output DSI-1 --rotate right
xinput set-prop 10 'Coordinate Transformation Matrix' 1 0 0 0 1 0 0 0 1
xrandr --output DSI-1 --rotate normal
xinput set-prop 10 'Coordinate Transformation Matrix' 0 -1 1 1 0 0 0 0 1
放松放松