Xorg
X11 - 如何在觸摸屏矩陣上反轉軸?
我有一台平板電腦,我在上面刷過 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 恢復軸。
一些試驗和錯誤,但這是我想出的解決方案:
- 通過以下方式查找觸摸屏設備
xinput
:xinput
記下將使用的設備 ID。 2.
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 值選擇為原始矩陣即可。 4. 這導致我們進入最後一步:獲取最終矩陣,該矩陣“固定”觸摸屏上的倒軸。
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
或其他方式永久更改。