正確な入力デバイスを明示的に指定せずにタッチスクリーンを使用する方法はありますか?
深く説明させてください...
ホストにはいくつかの入力デバイスがあります。
$ ls -al /dev/input/
drwxr-xr-x 2 root root 200 Jul 11 16:09 .
drwxr-xr-x 11 root root 4580 Jul 10 15:31 ..
crw-rw-rw- 1 root root 13, 64 Jan 1 1970 event0
crw-rw-rw- 1 root root 13, 65 Jan 1 1970 event1
crw-rw-rw- 1 root root 13, 66 Jan 1 1970 event2
crw-rw-rw- 1 root root 13, 95 Jan 1 1970 event99
crw-rw---- 1 root root 13, 63 Jan 1 1970 mice
crw-rw---- 1 root root 10, 223 Jan 1 1970 uinput
これらの入力デバイスの 1 つ (通常は event2) は、USB 経由で接続されたタッチスクリーンです。私の問題は...
- eventX デバイスは常に event2 であるとは限りません
- タッチスクリーンを取り外して再度接続すると (別の eventX デバイスになります)、タッチスクリーンはアプリケーションを再起動する必要なく再び機能するはずです。
- USB ホストは時折リセットを行い (他の問題が原因で)、USB が切断され、タッチスクリーンの USB が再接続されることがあります。
このアプリケーションは、タッチスクリーン ドライバーとしてtslibを使用して、フル スクリーン モードで実行される Qt 組み込み 4.7 アプリケーションです。
同様の問題を抱えた別のプロジェクトのために、すべての /dev/input/eventX デバイスからデータを読み取り、そのデータを名前付きパイプ (FIFO) に送信する小さなデーモン (私はそれを「eventbundler」と呼びました) を既に作成しました。ただし、tslib はその fifo を入力デバイス ( ) として受け入れませんQWS_MOUSE_PROTO=tslib:/dev/input/eventbundler-mouse
。おそらく、デバイスの機能を照会する IOCTL が機能しないためです (" selected device is not a touchscreen I understand
" と表示されます)。
とにかく、私が必要としているのは、tslibが何らかの方法でタッチスクリーン デバイスを自動検出し、しばらくプラグを抜いていたとしてもそこから読み取る必要があるということです。
ヒントはありますか?
それが助けになるなら、私はQtのソースコードを喜んで変更します。