マルチタッチ デバイスでのパケット報告モードの選択
Windows 8 以降、システムへのマルチタッチ データのレポートは、並列モードまたはハイブリッド モードの 2 つの方法でサポートされています。 ベンダーが提供する HID レポート記述子は、選択したモードによって異なります。
注 シリアル モードは、レガシ デバイスでのみ選択されます。 Windows 8 以降、シリアル モードを使用する新しいデバイスでは認定に失敗します。
並列モード
並列モードでは、デバイスによってすべての接触情報が 1 つのパケットでレポートされます。 物理的な接触はそれぞれ、最上位コレクションに埋め込まれている論理コレクションによって表されます。 この論理コレクションには、デバイスで各接触 (たとえば、X、Y、圧力) に対してサポートしているすべての使用状況が含まれています。 並列モードを活用する場合、各論理コレクションは同一である必要があります。 通常、デバイスでは最大よりも少ない接触数をレポートします。このため、並列パケットでレポートされる接触の数の通信は、接触数の使用状況か、またはパケット内のすべての無効な接触に対して NULL 値を設定することで行う必要があります。
たとえば、3 つの接触をサポートするデバイスを考えてみます。 ユーザーがデジタイザー上に 2 本の指しか置いていない場合、並列パケットでは、3 つの接触のデータを伝送できるレポートに 2 つの有効な接触データしか含んでいません。 この場合、接触数を 2 に設定して、3 つ以上の接触に関する情報は無効であることをクライアント アプリケーションで認識できるようにする必要があります。
または、デバイスでは、2 番目のエントリを超える接触の使用状況の値を NULL 値に設定できます。 NULL 値のサポートとレポートのオーバーヘッドを考慮して、実際の数を使用することをお勧めします。
1 つのレポートで複数の接触をレポートすることの欠点は、接触数が可能な最大数よりも少なくなるたびに、レポートあたりのスペースが無駄になることです。 デバイスでハイブリッド モードを使用すると、この非効率性を低減できます。
ハイブリッド モード
ハイブリッド モードでは、1 つのレポートでレポートできる接触の数が、デバイスでサポートされる接触の最大数よりも少なくなります。 たとえば、最大 48 の物理的な同時接触をサポートするデバイスでは、1 つのレポートに最大 12 の接触を配信するようにその最高レベルのコレクションを設定できます。 48 の接触ポイントが存在する場合、デバイスでこれらをそれぞれ 12 の接触を配信する 4 つのシリアル レポートに分割できます。
デバイスによってこの方法でデータを配信する場合、最初のレポートの接触数の使用状況の値には、ハイブリッド レポートで配信されている接触の総数が反映されている必要があります。 その他のシリアル レポートの接触数は、0 にする必要があります。 前の例を使用すると、最初のレポートの接触数の使用状況の値は 48 ですが、後者の 3 つのレポートの接触数の使用状況は 0 です。 このデータ配信プロトコルにより、デバイスのレポート記述子の入力レポートに実際の数の使用状況が含まれている必要があります。
null 値
null 値は、HID 仕様で概説されているように指定する必要があります。 NULL ビットは、レポート記述子内のすべてのメイン項目に設定する必要があります。 デバイスでは、パケット内の有効な接触の実際の数をホストに通知するために、接触数の使用状況または NULL 値を使用できます。
レポート内の接触
ハイブリッドまたは並列モードでデータを送信する場合、1 つのレポートで配信される接触は、画面から離れるまで、後続のすべてのレポートで配信する必要があります。 接触が表面から離れたかどうかを適切に判断するために時間が必要な場合、デバイスでは接触の最後の既知の位置をレポートし、その後のレポートで接触の "アップ" 状態を配信する必要があります。 デバイスでは、現在の状態を確認しようとしているときに、その接触に関する情報が含まれていないレポートを送信することはできません。