Retired Colourman

何度も朝がやってくる

Linuxでタッチスクリーンを回転して利用する

Nexus7のようなデバイスにLinuxを入れて活用する場合、どうしても画面の向きがデフォルトだと使い辛いという問題がある。そこでシステム設定から画面を横表示にする人は多いが、その場合タッチスクリーンで取得する座標は変わらないため、タッチがまるで使えないといった状況になることがある。その問題を解決するためには、xinputコマンドを利用する。

解決方法

タッチパネルの名前を取得する

xinput list

というコマンドを打つと、次のような結果がでる。

f:id:sh4869:20151101012020p:plain

この中からタッチパネルっぽいのを探す。この場合は確実に「elan-touchscreen」だろうということがわかる。

回転させる

下のコマンドはタッチ入力を右回転させるコマンドの例である。

xinput set-prop 'dev-name' 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1

最後の「0 1 0 -1 0 1 0 0 1」という数字が重要である。これは3*3の行列(という表現で合っているのだろうか)を表している。

Coordinate Transformation Matrixの初期値はこうなっている。

⎡ 1 0 0 ⎤
⎜ 0 1 0 ⎥
⎣ 0 0 1 ⎦

Transformation matrix - Wikipedia, the free encyclopedia

詳しくは上のサイトを見てくれればわかると思うんだけど、つまり上の3*3の行列は

https://upload.wikimedia.org/math/f/4/a/f4ad490993bbaa220e41f727f07a5bd0.png

に、θ=0を入れるとあのような座標になることがわかる。そこで、θ=90を入れると、

⎡  0 1 0 ⎤
⎜ -1 0 1 ⎥
⎣  0 0 1 ⎦

というふうになる。あとはそれを左上から順に入れていく。そうすると最初に例で示したコマンドになる。

あとはスタートアッププロセスに追加しておくなどすると、便利に使えると思う。

参考

Touch screen and screen rotation (Page 1) / Tips, Tricks & Scripts / CrunchBang Linux Forums

X/InputCoordinateTransformation - Ubuntu Wiki