Fedora Silverblueをフラッシュしたタブレットがあり、デバイスが横モードのときにタッチスクリーンのY軸が反転し、縦モードではX軸が反転します。
xorgでWaylandの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
最後のステップは、異なる画面の方向に対して上記の手順を繰り返し、他の方法で変更を永久に適用することです。