Armadilloフォーラム

armadillo840のQtでシングルタッチスクリーンを使いたい

ma2013

2014年10月16日 9時29分

いつもお世話になっております。
MCSのmaと申します。

armadillo840のQtは,
デフォルトでマルチタッチスクリーンをサポートしていますが,
シングルタッチスクリーンをサポートさせたい場合,
どうすれば宜しいでしょうか?

Qtの./configure と関係する内容は,
atmarkdistのどの場所にありますか?

お手数かけますが,
ちょっとアドバスをいただいて宜しいでしょうか?

コメント

> タッチスクリーンライブラリはmtdevとtslibのどちらを使っていますか。
> |
> tslibであれば、こちらの記事の内容通りなのですが...
> https://users.atmark-techno.com/blog/750/737

MCSのmaです。
上記記事の通りにtslibとQtのtslib用プラグインを実装しましたが,
Qtのwidgetで作成したGUI(例えばQMainWindowなど)はタッチに反応しませんでした。

何か設定が必要ならば,ご教示いただきたいです。

at_takuya.sasaki

2014年10月20日 11時35分

佐々木拓です。

記事書いた時の環境が手元にありましたので、確認してみました。
Widgetで作成したアプリでも、以下のようにpluginオプションをつけることで、正常にタッチに反応できました。

[root@armadillo840-0 (ttySC2) ~]# export TSLIB_TSDEVICE=/dev/input/event0
[root@armadillo840-0 (ttySC2) ~]# export TSLIB_PLUGINDIR=/usr/lib/ts0
[root@armadillo840-0 (ttySC2) ~]# export TSLIB_CALIBFILE=/etc/config/pointercal
[root@armadillo840-0 (ttySC2) ~]# ./test_app -plugin tslib:/dev/input/event0

もしpluginオプションをつけてもダメな場合は、そもそも/dev/input/event0に正常に割り当たってない可能性があります。
その場合は、evtestを使ってタッチに反応しているかを確認してみるのがよいかと思います。

root@armadillo840-0 (ttySC2) ~]# evtest /dev/input/event0
Input driver version is 1.0.1
Input device ID: bus 0x18 vendor 0x0 product 0x0 version 0x0
Input device name: "TSC2007 Touchscreen"
Supported events:
  Event type 0 (Sync)
  Event type 1 (Key)
    Event code 330 (Touch)
  Event type 3 (Absolute)
    Event code 0 (X)
      Value    639
      Min        0
      Max      800
    Event code 1 (Y)
      Value    709
      Min        0
      Max      480
    Event code 24 (Pressure)
      Value      0
      Min        0
      Max     4095
Testing ... (interrupt to exit)
Event: time 965216450.547267, type 1 (Key), code 330 (Touch), value 1
Event: time 965216450.547279, type 3 (Absolute), code 0 (X), value 2210
Event: time 965216450.547285, type 3 (Absolute), code 1 (Y), value 1404
Event: time 965216450.547290, type 3 (Absolute), code 24 (Pressure), value 229
Event: time 965216450.547295, -------------- Report Sync ------------
Event: time 965216450.558803, type 3 (Absolute), code 0 (X), value 2214
Event: time 965216450.558813, type 3 (Absolute), code 1 (Y), value 1413
Event: time 965216450.558818, type 3 (Absolute), code 24 (Pressure), value 222
--(以下略)

以上です

> > タッチスクリーンライブラリはmtdevとtslibのどちらを使っていますか。
> > |
> > tslibであれば、こちらの記事の内容通りなのですが...
> > https://users.atmark-techno.com/blog/750/737
>
> MCSのmaです。
> 上記記事の通りにtslibとQtのtslib用プラグインを実装しましたが,
> Qtのwidgetで作成したGUI(例えばQMainWindowなど)はタッチに反応しませんでした。
>
> 何か設定が必要ならば,ご教示いただきたいです。
>
>
>
>

at_takuya.sasaki

2014年10月24日 1時38分

佐々木拓です。

すみません、記事を見直すと、肝心なキャリブレーションをするコマンド実行が抜けていました。
手順11を修正しましたので、お試しいただければと思います。
またキャリブレーション画面は標準では /dev/fb0 に描画されますので、LCDが/dev/fb1の場合には、
下記のように TSLIB_FBDEVICE に /dev/fb1 を指定してください。

[root@armadillo840-0 (ttySC2) ~]# export TSLIB_TSDEVICE=/dev/input/event0
[root@armadillo840-0 (ttySC2) ~]# export TSLIB_PLUGINDIR=/usr/lib/ts0
[root@armadillo840-0 (ttySC2) ~]# export TSLIB_CALIBFILE=/etc/config/pointercal
[root@armadillo840-0 (ttySC2) ~]# export TSLIB_FBDEVICE=/dev/fb1       ←LCDを示すデバイスを指定してください。
[root@armadillo840-0 (ttySC2) ~]# ts_calibrate 

以上です。

> 佐々木拓です。
>
> 記事書いた時の環境が手元にありましたので、確認してみました。
> Widgetで作成したアプリでも、以下のようにpluginオプションをつけることで、正常にタッチに反応できました。
>
> [root@armadillo840-0 (ttySC2) ~]# export TSLIB_TSDEVICE=/dev/input/event0
> [root@armadillo840-0 (ttySC2) ~]# export TSLIB_PLUGINDIR=/usr/lib/ts0
> [root@armadillo840-0 (ttySC2) ~]# export TSLIB_CALIBFILE=/etc/config/pointercal
> [root@armadillo840-0 (ttySC2) ~]# ./test_app -plugin tslib:/dev/input/event0
>
> もしpluginオプションをつけてもダメな場合は、そもそも/dev/input/event0に正常に割り当たってない可能性があります。
> その場合は、evtestを使ってタッチに反応しているかを確認してみるのがよいかと思います。
>
>

> root@armadillo840-0 (ttySC2) ~]# evtest /dev/input/event0
> Input driver version is 1.0.1
> Input device ID: bus 0x18 vendor 0x0 product 0x0 version 0x0
> Input device name: "TSC2007 Touchscreen"
> Supported events:
>   Event type 0 (Sync)
>   Event type 1 (Key)
>     Event code 330 (Touch)
>   Event type 3 (Absolute)
>     Event code 0 (X)
>       Value    639
>       Min        0
>       Max      800
>     Event code 1 (Y)
>       Value    709
>       Min        0
>       Max      480
>     Event code 24 (Pressure)
>       Value      0
>       Min        0
>       Max     4095
> Testing ... (interrupt to exit)
> Event: time 965216450.547267, type 1 (Key), code 330 (Touch), value 1
> Event: time 965216450.547279, type 3 (Absolute), code 0 (X), value 2210
> Event: time 965216450.547285, type 3 (Absolute), code 1 (Y), value 1404
> Event: time 965216450.547290, type 3 (Absolute), code 24 (Pressure), value 229
> Event: time 965216450.547295, -------------- Report Sync ------------
> Event: time 965216450.558803, type 3 (Absolute), code 0 (X), value 2214
> Event: time 965216450.558813, type 3 (Absolute), code 1 (Y), value 1413
> Event: time 965216450.558818, type 3 (Absolute), code 24 (Pressure), value 222
> --(以下略)
> 
> 

>
> 以上です
>
> > > タッチスクリーンライブラリはmtdevとtslibのどちらを使っていますか。
> > > |
> > > tslibであれば、こちらの記事の内容通りなのですが...
> > > https://users.atmark-techno.com/blog/750/737
> >
> > MCSのmaです。
> > 上記記事の通りにtslibとQtのtslib用プラグインを実装しましたが,
> > Qtのwidgetで作成したGUI(例えばQMainWindowなど)はタッチに反応しませんでした。
> >
> > 何か設定が必要ならば,ご教示いただきたいです。
> >
> >
> >
> >

佐々木 様

MCSのmaです。
もう順調に動作しました。
色々教えていただいて,本当にお世話になりました。

Qtのtslibプラグイン作成方法のご掲載も,
大変期待しております。