X11 - タッチスクリーンマトリックスで軸を反転するには?

X11 - タッチスクリーンマトリックスで軸を反転するには?

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 ]

注:これはここの質問と似ています。

xorg.confを使用したタッチスクリーンX軸反転の修正

それに加えて、xinputを介して軸を復元する方法を理解しようとしています。

ベストアンサー1

少し試行錯誤がありましたが、これが私が思いついた解決策です。

  1. 以下でタッチスクリーンデバイスを見つけます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 ]
    
  3. タブレットが横方向に時計回りに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最後のステップは、異なる画面の方向に対して上記の手順を繰り返し、他の方法で変更を永久に適用することです。

おすすめ記事