[SOLVED] タッチパネルのキャリブレーションについて
-
Qt5 からは付属のドライバが値の範囲を自動的に調整しているため、キャリブレーション用のサンプルがなくなりました。
-
タッチパネルを使用するにはオプションで指定が必要です。
タッチパネルの種類によりますが、udev/evdevで扱えるものであればevdevtouchプラグインを使用します。
ex. -plugin EvdevTouch:/dev/input/event1
詳細は qtbase/src/plugins/generic/evdevtouch/README を参考にしてください。
https://qt.gitorious.org/qt/qtbase/source/release:src/plugins/generic/evdevtouch/README自動調整とはタッチの範囲をドライバーからmin/maxを取得して正規化することを指しています。
-
-
動作中の実機の /dev 以下にファイルがないのであれば何かおかしいです。
sysroot にないだけであれば問題はないと思います。mtdev はタッチパネルのマルチタッチイベントに Linux カーネルが対応している場合には不要です。これが no になっていると言うことは mtdev ライブラリ/開発環境がない事を示します。
この辺りはどんなタッチパネルを使用しているかや、カーネルのバージョンなどによって必要かどうかが決まりますので、必要かどうかは分かりません。 -
dev/input にファイルがありました。
~ # ls /dev/input/ -all
drwxr-xr-x 2 root root 140 Jan 1 00:00 .
drwxr-xr-x 8 root root 3320 Jan 1 00:00 ..
crw-rw---- 1 root root 13, 64 Jan 1 1970 event0
crw-rw---- 1 root root 13, 65 Jan 1 1970 event1
crw-rw---- 1 root root 13, 63 Jan 1 1970 mice
crw-rw---- 1 root root 13, 32 Jan 1 1970 mouse0
lrwxrwxrwx 1 root root 6 Jan 1 00:00 ts0 -> event0タッチパネルをタップすると下記の3つ(内ts0はevent0のリンク)で反応がありました。
~ # hexdump /dev/input/event0
0000000 0c83 0000 41a9 0006 0003 0000 01d3 0000
0000010 0c83 0000 41b0 0006 0003 0001 01db 0000
^C
~ # hexdump /dev/input/mouse0
0000000 f719 395a fcfe 0008 3900 e0e9 0008 1900
0000010 00e1 0129 08ff 0000 8119 197f 1fa8 fe39
^C
~ # hexdump /dev/input/ts0
0000000 0cc5 0000 d4da 0001 0003 0000 01d6 0000
0000010 0cc5 0000 d4df 0001 0003 0001 01bd 0000カーネルバージョンです。
~ # uname -a
Linux ccwmx53js 2.6.35.14 #1 Thu May 29 17:42:48 JST 2014 armv7l GNU/Linuxこの状態で、Qt5.3.1のアプリを動作させタップすると
端の方で反応はありますが、中央部では反応ありません。
また、反応があっても逆側が反応します。キャリブレーションが正しくできていないように思いますが、
何かお気づきの点はないでしょうか?よろしくお願いします。
-
ここしばらくは十分な時間が取れそうにないので簡単に。
環境変数 QT_QPA_EVDEV_DEBUG を設定して動かしてログをとってもらえますか。
@export QT_QPA_EVDEV_DEBUG=1@
タッチパネルをどう認識しているかを表示してくれます。
タッチパネルやドライバーによってはカーネルから得られる情報が正しくない場合が有り、その場合はQt側で補正する必要があります。