1

Android フレームワークで座標を使用してタッチ イベントを取得すると、ioctl を使用してユーザー イベントをカーネルに送信し、ドライバーにシステム入力イベントに変換させることができます (使用: input_sync、input_report_key、input_report_abs など)。

問題は:

私が知っているように、アンドロイドスワイプイベントは次のようになります:(スワイプダウン) {タイプ、コード、値}

    {3,48,5}, {3,50,1}, {3,53,240}, {3,54,400},
    {1,330,1},

    {3,58,255}, {3,57,0},
    {0,2,0},{0,0,0},

    {3,48,0},{3,50,1},{3,53,240},{3,54,450},{3,58,255},{3,57,0},
    {0,2,0},{0,0,0},

    {3,0,0},{3,1,450},{3,57,15},
    {0,0,0},{1,330,0},

    {3,48,0},{3,50,1},{3,53,240},{3,54,450},{3,58,0},
    {0,2,0},{0,0,0}

type=0、同期を表します

type=1、キーを表す

タイプ=3、コード=53,54、値は座標を表します

type=3、code=48、50、57、58、値はタッチ ツールのプロパティを表します。

そのため、type=3、code=53,54、または type=1 のみが入力パラメーターであり、その他はユーザー イベントからシステム イベントへの変換に挿入する必要があります。

次のようにコーディングする必要があります。

// in driver
if ( get an event )
{
    report touch tool event;    
    report the x,y/key event;   // from input params
    report the sync event;
}

またはより良い方法がありますか?

ありがとうございました。

4

1 に答える 1

0

ユーザー空間で入力イベントを生成できる Linux の uinput インターフェイスの方が便利であることがわかりました。

http://thiemonge.org/getting-started-with-uinput

于 2012-10-31T02:57:09.513 に答える