我有一台平板电脑,我在其上闪烁了 Fedora Silverblue,但当设备处于横向模式时,触摸屏的 Y 轴反转,而 X 轴反转纵向模式。
我已经禁用 Wayland 在 xorg 上使用 xinput,但到目前为止还没有运气。
这是平板电脑上当前的矩阵:
Landscape (Clockwise 90°) Portrait
[ 0 -1 0 ] [ 1 0 0 ]
[ 1 0 0 ] [ 0 1 0 ]
[ 0 0 1 ] [ 0 0 1 ]
当前矩阵处于纵向模式时,Y 轴是正常的,但 X 轴是反转的。有没有办法修复反转?
我尝试应用景观矩阵的逆矩阵(如下),但这只是将景观中的反向 Y 轴翻转为反向 X 轴。
xinput set-prop ID "Coordinate Transformation Matrix" 0 1 0 -1 0 1 0 0 1
[ 0 1 0 ]
[ -1 0 1 ]
[ 0 0 1 ]
注意:这与这里的问题类似:
除此之外,我试图弄清楚如何通过 xinput 恢复轴。
答案1
一些尝试和错误,但这是我想出的解决方案:
通过以下方式查找触摸屏设备
xinput
:xinput
记下将使用的设备 ID。
10
查找当前屏幕旋转中当前使用的设备的矩阵(在本例中为):xinput list-props 10 | grep Matrix
在此示例中,我的平板电脑的屏幕顺时针旋转 90°:
Coordinate Transformation Matrix (179): 0.000000, -1.000000, 1.000000, 1.000000, 0.000000, 0.000000, 0.000000, 0.000000, 1.000000
翻译过来就是:
x: [ 0 -1 1 ] y: [ 1 0 0 ] z: [ 0 0 1 ]
由于我们要求平板电脑顺时针旋转 90° 横向时 Y 轴的倒数,因此要求矩阵的倒数。 (任何在线矩阵计算器都可以)。
上面矩阵的逆矩阵是:
x: [ 0 1 0 ] y: [ -1 0 1 ] z: [ 0 0 1 ]
由于我们只想反转 Y 轴,因此只需将矩阵中的 Y 值挑选为原始矩阵即可。
这引导我们进入最后一步:获取最终矩阵,“固定”触摸屏上的倒轴。
x: [ 0 -1 1 ] (taken from the original maxtrix) y: [ -1 0 1 ] (taken from the inverse matrix) z: [ 0 0 1 ]
以及“修复”触摸屏的命令:
xinput set-prop 10 "Coordinate Transformation Matrix" 0 -1 1 -1 0 1 0 0 1
udev
现在,最后一步是对其他屏幕方向重复上述步骤,并通过或其他方式使更改永久化。