ワコムデジタイザ向けAndroidフレームワーク
本書は、Android内に存在してペン入力をサポートするフレームワークの概要を説明し、Androidデバイスの製造業者および開発者向けの指針となることを目指しています。
INDEX
詳細
1 カーネルデバイス
他のLinuxシステムと同様に、ユーザー空間のデーモンがdevfsを管理します。Androidの場合、このデーモンはueventdです。新しいハードウェアが接続されると、/dev/inputディレクトリにデバイスノードが作成されます。このディレクトリは、タッチスクリーンや加速度計など、すべての入力デバイスのホームとなります。
2 Android入力サービス
2.1 InputReaderポンプ
各ループで、入力リーダーはイベントハブに新しいイベントすべてのリストを要求します。イベントごとに関連付けられた発生元InputDeviceを特定し、追加処理を実行させます。次に、これらは一連の「入力マッパー」によって、デバイスタイプに固有の形態でイベントを処理します(例:タッチスクリーンは位置データをTouchInputMapperで処理します。一方、マウスは同じデータをCursorInputMapperで処理します)。
一般的に、カーネルから受信したデータは未処理の状態で残ります。通常、入力マッパーは値を直接保存します。もしくは、「累算器」に提供する場合もあります(例:相対値から絶対値への変換)。ただし、より大規模な処理が必要になる場合もあります(例:入力デバイス設定ファイルで指定されたパラメータを調整する場合)。
カーネルから完全なイベントパケットを受信したことを入力マッパーが気づくと、処理するInputDispatcherポンプのキューの最後に公開状態を追加します。
2.2 InputDispatcherポンプ
InputDispatcherは、イベントをハードウェアから中継するだけではなく、イベント投入やANR警告なども処理します。
3 フレームワークの機能
3.1 設定
IDCファイルを使用してタッチスクリーンまたはEMRセンサーの校正を指定することはできないことに注意してください。これを行うための機能はAndroidにはまだありません。ただし、過去にはtslibなどのサードパーティツールおよび校正パラメータを適用するInputReaderのパッチが回避策として使用されました。
3.2 デバッグ
dmesg
dmesgコマンドを使用すると、カーネルがデジタイザを認識しているかどうかを判定できます。ログの「input」から始まる行には、入力デバイスの名前とsysfsパスの両方が含まれています。ワコムドライバは「Wacom」から始まる独自のメッセージを生成する場合があります。
getevent
Androidには、カーネルデバイスのデバッグを行うためのgeteventツールがあります。このツールを使用すると、既知のすべてのカーネル入力デバイスのリストを取得したり、プロパティを表示したり、イベントストリームをリアルタイムで監視したりすることができます。
カーネルの入力イベントインターフェースのドキュメントはオンラインで参照できます。特に、イベントコードとマルチタッチプロトコルのドキュメントを参照してください。
dumpsys
dumpsysツール(参照)を使用すると、Androidサービスに関する情報をダンプすることができます。特に、入力サービスとウィンドウサービスには、Android自身の入力ドライバの状態に関する情報が多く含まれています。
Wacom Technology Corp.
バージョン 1.0 2013年