2016-05-24 26 views
2

皆さん、読んでいただきありがとうございます。uinputでマルチタッチイベントをシミュレート

私はuinputインターフェイスを使用していくつかのタッチを実行しようとしています。結局、これらのデータはシリアル接続からUARTを通して解釈されます。

私はuinputを開いたり、閉じることができ、モノタッチでうまく動作します。

EV_KEY BTN_TOUCH 1 
EV_ABS ABS_X 400 
EV_ABS ABS_Y 400 
EV_SYN SYN_REPORT 0 

がタッチします。スワイプ、ダブルタップ、ABS_XとABS_Yで正常に動作します。

次に、私はマルチタッチサポートを実装したいので、ABS_MT_POSITION_X、ABS_MT_POSITION_Y、ABS_MT_TRACKING_ID、ABS_MT_SLOTを実装しました。

私はタッチとスワイプを実行するために管理:

EV_ABS ABS_MT_TRACKING_ID 20 
EV_KEY BTN_TOUCH 1 
EV_ABS ABS_MT_POSITION_X 425 
EV_ABS ABS_MT_POSITION_Y 400 
EV_SYN SYN_REPORT 0 

をしかし...私はスロットを使用することはできません。私はピンチ(dezoomer)を実行しようとしています。

EV_ABS ABS_MT_SLOT 0 
EV_ABS ABS_MT_TRACKING_ID 20 
EV_KEY BTN_TOUCH 1 
EV_ABS ABS_MT_POSITION_X 425 
EV_ABS ABS_MT_POSITION_Y 400 
EV_ABS ABS_MT_SLOT 1 
EV_ABS ABS_MT_TRACKING_ID 21 
EV_ABS ABS_MT_POSITION_X 650 
EV_ABS ABS_MT_POSITION_Y 400 
EV_SYN SYN_REPORT 0 
EV_ABS ABS_MT_SLOT 0 
EV_ABS ABS_MT_POSITION_X 450 
EV_ABS ABS_MT_POSITION_Y 400 
EV_ABS ABS_MT_SLOT 1 
EV_ABS ABS_MT_POSITION_X 550 
EV_ABS ABS_MT_POSITION_Y 400 
EV_ABS ABS_MT_SLOT 0 
EV_ABS ABS_MT_TRACKING_ID -1 
EV_ABS ABS_MT_SLOT 1 
EV_ABS ABS_MT_TRACKING_ID -1 
EV_KEY BTN_TOUCH 0 
EV_SYN SYN_REPORT 0 

このシーケンスは機能しませんが、Linux Multi Touch Protocolに従う必要があります。私はその問題がどこから来ているのか分かりません。それは時間依存ですか?私はこれらの指示をそれらの間に遅れずに送るので、それの間にある程度の時間が必要かもしれません。

プロトコルBの後にマルチタッチイベントをシミュレートする方法を知っている人はいますか?どんなシーケンスがうまくいくのですか?

NB:これらのタッチはAndroidデバイスで、Android NDKで作成されたC実行ファイルで実行されます。

答えて

2

私は最終的に答えを見つけました。 上記のシーケンスは正しいですが、

  1. 遅延を追加する必要があります。私はABS_MT_POSITION_X/Yのリフレッシュの間に8000マイクロ秒のAndroid上の古いサムスンエッジから収集できるシーケンスから、
  2. さらにイベントを送信する必要があります。だから私は基本的にforループを実装しました。

Gautier

関連する問題