Debianでタッチパネルのキャリブレーション

  • 2
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

RaspbianでマレーシアのChalkboard Electronics製7インチタッチパネル液晶を使った時のメモ。
つかっているタッチパネル付液晶はこちらのもの。

基本

基本的には
xinput_calibratorを使ってキャリブレーションします。
ない場合はapt-getでインストールしましょう。

シェルから実行すると、
キャリブレーション用の画面が表示されるので、画面にしたがって点をタッチしましょう。

Bash
$ xinput_calibrator

Warning: multiple calibratable devices found, calibrating last one (Chalkboard Electronics HID Touchscreen)
    use --device to select another one.
Calibrating EVDEV driver for "Chalkboard Electronics HID Touchscreen" id=7
    current calibration values (from XInput): min_x=4, max_x=1200 and min_y=800, max_y=-1

Doing dynamic recalibration:
    Setting new calibration data: 8, 1268, 793, 1


--> Making the calibration permanent <--
  copy the snippet below into '/etc/X11/xorg.conf.d/99-calibration.conf'
Section "InputClass"
    Identifier  "calibration"
    MatchProduct    "Chalkboard Electronics HID Touchscreen"
    Option  "Calibration"   "8 1268 793 1"
EndSection

すると、こんな感じで設定がシェルに書きだされます。
これをxorgの設定ファイルに書き込む必要があります。

設定ファイルの書き込み

シェル上では、/etc/X11/xorg.conf.d/99-calibration.confに書き込めと出ていますが、 これは間違いです

Debian/Ubuntuでは、/usr/share/X11/xorg.conf.d/99-calibiration.confの一番下の行に追加します。
ファイルがなければ作成しましょう。

こんな感じで。

/usr/share/X11/xorg.conf.d/99-calibiration.conf
Section "InputClass"
        Identifier      "calibration"
        MatchProduct    "Chalkboard Electronics HID Touchscreen"
        Option  "Calibration"   "4 1200 800 -1"
        Option  "SwapAxes"      "1"
EndSection

"SwapAxes"は画面を回転させて使っている時、軸の方向あわなくなる場合に使用します。
xinput-calibrationの出力で自動的に付与される場合もあります。

キャリブレーションがうまくいかない場合

そもそもキャリブレーション時に画面の外にカーソルが行ってしまうような状態だと、うまくキャリブレーションができない場合があります。
その場合は、一度上記の設定ファイル/usr/share/X11/xorg.conf.d/99-calibiration.confに書きこんだあと、
Option "Calibration"の値を手動で変更して、画面のどこを触ってもカーソルが画面の外にいかないように調整します。

設定した値を反映するには、KDEを使用している場合

bash
$ sudo killall lightdm
$ sudo service lightdm start

これで、xを再起動すると、値が反映されます。
なぜかservice lightdm restartではダメで、一度lightdmをkillしないと再起動できませんでした。

カーソルが常に画面内に表示されたら、もう一度xinput_calibratorを実行して上記の手順を行いましょう。

補足

どうやら、x.orgのドキュメントを読むと、Option "Calibration"の値は、それぞれ min-x, max-x, min-y, max-yらしいので、それぞれを解像度に合わせて設定してあげれば大丈夫...?
ちなみに、Chalkboard-electroncisの7インチ1280x800液晶を+90度回転して使うときの設定は、

Section "InputClass"
        Identifier      "calibration"
        MatchProduct    "Chalkboard Electronics HID Touchscreen"
        Option  "Calibration"   "0 1280 800 0"
        Option  "SwapAxes"      "1"
EndSection

追記

あれ、、、xinput-calibratorapt-getじゃはいらない...?
http://engineering-diy.blogspot.co.uk/2013/01/adding-7inch-display-with-touchscreen.html