前回WDP083にUbuntu18.04を入れたんだが、タッチパネル(TouchScreen)の認識まではできたけどタッチした位置と認識されるポイントが狂ってて使えなかったのでその続き。
/usr/share/X11/xorg.conf.d/99-calibration.confを作成したが設定が反映されてないようなので、ググったらこちらにxserver-xorg-input-evdevパッケージを入れろというので入れたが反映されなかった。とりあえずエラーメッセージを見たいと思ったのだが/var/lib/Xorg.0.logがないではないか。locateコマンドで探して.local/share/xorg/Xorg.0.logにあるのがわかった。
ログじゃイマイチわからなかったが、結局evdevドライバを指定する必要があったということで次のようにした。
$ cat /usr/share/X11/xorg.conf.d/99-calibration.conf
Section "InputClass"
Identifier "calibration"
MatchProduct "Silead GSLx680 Touchscreen"
Option "Calibration" "0 1280 0 800"
Option "SwapAxes" "1"
#Option "InvertY" "1"
Driver "evdev"
EndSection
キャリブレーションの値を使うとわけがわからなかったので、手作業であれこれ試してキャリブレーション無しの"0 1280 0 800"でなんとなくうまく行った。
ただし、縦方向が下の方へ行くとどんどんズレる。この状態でxinput_calibratorの出力値を指定してみるのだが何故かうまく行かない。
今度はevdevなしでできないかと、こちらを参考にして99-calibration.confを消して、次のコマンドで割とうまく行くのがわかった。マトリックスについてはInputCoordinateTransformationのaffine transformation matrixへのリンク(wikipedia)先の図が参考になった。
$ xinput set-prop 'Silead GSLx680 Touchscreen' 'Coordinate Transformation Matrix' 0 0.9 0 0.8 0 0 0 0 1
これで随分タッチが正確になったなんて思ったら、本体を横向きにしたら縦と横がおかしくなる。
まあコマンドをaliasしておけば使おうと思えば使えなくはない気はする。
これ以上はどうしようもないかなと思ったが、設定が反映されたか確認する時に
$ xinput list-props 9
Device 'Silead GSLx680 Touchscreen':
Device Enabled (141): 1
Coordinate Transformation Matrix (143): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Calibration Matrix (285): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Calibration Matrix Default (286): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
(略)
"Coordinate Transformation Matrix"以外に"libinput Calibration Matrix"というのがあるのが気になったのでTransformationMatrixじゃなくてCalibrationMatrixでやってみた。
するとビンゴ!うまく行った。本体を横にしても問題なかった。
というわけで最終的にevdevを使わない設定は、
$ cat /usr/share/X11/xorg.conf.d/99-calibration.conf
Section "InputClass"
Identifier "calibration"
MatchProduct "Silead GSLx680 Touchscreen"
Option "CalibrationMatrix" "0 0.9 0 0.8 0 0 0 0 1"
EndSection
となった。数字(倍率)の0.9と0.8はもう少し微調整した方がいいかもしれないけども。
それでシャットダウンとか本体のみでやりやすくなったけど、ウインドウ閉じたりとか元々タッチじゃ無理っぽい。
/usr/share/X11/xorg.conf.d/99-calibration.confを作成したが設定が反映されてないようなので、ググったらこちらにxserver-xorg-input-evdevパッケージを入れろというので入れたが反映されなかった。とりあえずエラーメッセージを見たいと思ったのだが/var/lib/Xorg.0.logがないではないか。locateコマンドで探して.local/share/xorg/Xorg.0.logにあるのがわかった。
ログじゃイマイチわからなかったが、結局evdevドライバを指定する必要があったということで次のようにした。
$ cat /usr/share/X11/xorg.conf.d/99-calibration.conf
Section "InputClass"
Identifier "calibration"
MatchProduct "Silead GSLx680 Touchscreen"
Option "Calibration" "0 1280 0 800"
Option "SwapAxes" "1"
#Option "InvertY" "1"
Driver "evdev"
EndSection
キャリブレーションの値を使うとわけがわからなかったので、手作業であれこれ試してキャリブレーション無しの"0 1280 0 800"でなんとなくうまく行った。
ただし、縦方向が下の方へ行くとどんどんズレる。この状態でxinput_calibratorの出力値を指定してみるのだが何故かうまく行かない。
今度はevdevなしでできないかと、こちらを参考にして99-calibration.confを消して、次のコマンドで割とうまく行くのがわかった。マトリックスについてはInputCoordinateTransformationのaffine transformation matrixへのリンク(wikipedia)先の図が参考になった。
$ xinput set-prop 'Silead GSLx680 Touchscreen' 'Coordinate Transformation Matrix' 0 0.9 0 0.8 0 0 0 0 1
これで随分タッチが正確になったなんて思ったら、本体を横向きにしたら縦と横がおかしくなる。
まあコマンドをaliasしておけば使おうと思えば使えなくはない気はする。
これ以上はどうしようもないかなと思ったが、設定が反映されたか確認する時に
$ xinput list-props 9
Device 'Silead GSLx680 Touchscreen':
Device Enabled (141): 1
Coordinate Transformation Matrix (143): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Calibration Matrix (285): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
libinput Calibration Matrix Default (286): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
(略)
"Coordinate Transformation Matrix"以外に"libinput Calibration Matrix"というのがあるのが気になったのでTransformationMatrixじゃなくてCalibrationMatrixでやってみた。
するとビンゴ!うまく行った。本体を横にしても問題なかった。
というわけで最終的にevdevを使わない設定は、
$ cat /usr/share/X11/xorg.conf.d/99-calibration.conf
Section "InputClass"
Identifier "calibration"
MatchProduct "Silead GSLx680 Touchscreen"
Option "CalibrationMatrix" "0 0.9 0 0.8 0 0 0 0 1"
EndSection
となった。数字(倍率)の0.9と0.8はもう少し微調整した方がいいかもしれないけども。
それでシャットダウンとか本体のみでやりやすくなったけど、ウインドウ閉じたりとか元々タッチじゃ無理っぽい。