みつきんのメモ

組み込みエンジニアです。Interface誌で「Yocto Projectではじめる 組み込みLinux開発入門」連載中

westonでtouch calibration

RPi3にcocopar 5inch HDMIのLCDを接続してwestonを動かしてみたところ、 うまくタッチできないところがあったのでキャリブレーションを行った。

下記の要領で作業を行う。

デバイス名の確認

libinput-list-devidesで確認できる。

$ libinput-list-devices
Device:           ADS7846 Touchscreen
Kernel:           /dev/input/event1
Group:            2
Seat:             seat0, default
Capabilities:     touch
Tap-to-click:     n/a
Tap drag lock:    n/a
Left-handed:      n/a
Nat.scrolling:    n/a
Middle emulation: n/a
Calibration:      identity matrix
Scroll methods:   none
Click methods:    none
Disable-w-typing: n/a
Accel profiles:   n/a

キーボードやマウスなどが接続されている場合はそのデバイスの情報も表示される。

キャリブレーションの実施

キャリブレーションはリモートではなく本体側で作業する。

うまくターミナルのアイコンがタッチできない場合は、マウスを接続するなどして、weston上でターミナルを起動する。

ターミナル上でweston-calibratorを実行すると、キャリブレーション画面になる。

f:id:mickey_happygolucky:20160402083424j:plain

「+」をタップしていくと、ターミナル上にキャリブレーション結果が表示される。

$ weston-calibrator
Calibration values: 1.017170 0.190244 -38.571243 -0.012176 1.194730 -43.827576

udevルールの作成

先ほど調べたデバイス名とキャリブレーション結果を元に、「/etc/udev/rules.d/touch-calibration.rules」を作成する。

ATTRS{name}=="ADS7846 Touchscreen", ENV{WL_CALIBRATION}="1.017170 0.190244 -38.571243 -0.012176 1.194730 -43.827576"

ルールファイルはファイル名は適当で構わないが下記の点に注意。

  • 拡張子は「.rules」
  • デバイス名が正しいこと

キャリブレーションが反映されない場合はこれらを確認するとよい。

再起動すると、キャリブレーションの結果が反映されている。