ボタン、レポート レベルの使用状況 (touchpad-buttons-report-level-usages)
このトピックでは、Windows 高精度タッチパッド コレクションのコンテキスト内でのボタンのレポート レベルの使用状況について説明します。
次の表は、すべての Windows 高精度タッチパッド入力レポートに存在する必要があるすべての必須の使用状況を示しています。 この表には、ボタン1、2、3 の使用法が含まれています。
メンバー | 説明 | ページ | id | 必須/省略可能 |
---|---|---|---|---|
レポート ID | Windows 高精度タッチパッドのレポート ID | 0x0D | 0x05 | Mandatory |
スキャン時刻 | 相対スキャン時間。 | 0x0D | 0x56 | オプション |
接触の数 | 特定のレポートで報告される接触の総数。 | 0x0D | 0x54 | Mandatory |
ボタン 1 | デジタイザーに統合されたタッチパッド ボタンのボタンの状態を示します。 | 0x09 | 0x01 | オプション |
ボタン 2 | プライマリ (既定では左) クリックの外部ボタンのボタン状態を示します。 | 0x09 | 0x02 | オプション |
ボタン 3 | セカンダリ (既定では右) クリックの外部ボタンのボタン状態を示します。 | 0x09 | 0x03 | オプション |
以降のセクションでは、ボタンの使用状況について説明します。 他のメンバー (レポート ID など) の詳細については、「Windows 高精度タッチパッド コレクション」を参照してください。
ボタン 1
ボタン 1 スイッチは、デジタイザーの下にある Windows 高精度タッチパッド ボタンのアップ/ダウン状態を指定します。 ボタンの種類の実装 (圧力または機械的) に関係なく、ボタンが必要な量の作用力を受け取った場合、ボタン ビットを設定することでそのダウン状態がレポートされる必要があります。 ボタンに適用された作用力が必要なしきい値を下回ると、ボタン ビットをクリアすることによって "アップ" 状態がレポートされる必要があります。
前の図で概説した例を参照して、ボタンを押すのに十分な作用力で Windows 高精度タッチパッドに接触していると仮定します。 その後、しばらくすると、作用化力が低下します。これにより、しばらくの間表面に接触していると、ボタンが呼び出されます。 これは、次の表で説明されているようにレポートされます。
レポート | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
---|---|---|---|---|---|---|---|---|---|---|---|
接触の数 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Button | 1 | 1 | 1 | 1 | 1 | 0 | NR | NR | NR | NR | NR |
接触 2: 先端スイッチ | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
接触 2: X、Y | X₁、Y₁ | X₂、Y₂ | X₃、Y₃ | X₄、Y₄ | X₅、Y₅ | X₆、Y₆ | X₇、Y₇ | X₈、Y₈ | X₉、Y₉ | X₁₀、Y₁₀ | X₁₀、Y₁₀ |
前の図で概説した例を参照して、ボタンを押すのに十分な作用力で Windows 高精度タッチパッドに非容量接触があると仮定します。 その後、しばらくすると、作用化力が低下します。これにより、ボタンのアップが呼び出されます。 これは、次の表で説明されているようにレポートされます。
レポート | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|
接触の数 | 0 | 0 | 0 | 0 | 0 | 0 |
Button | 1 | 1 | 1 | 1 | 1 | 0 |
ボタン 2 と 3 (個別の左クリックと右クリック)
Windows 高精度タッチバッド デバイスでは、デジタイザーと統合されたボタンの使用 (左クリック、右クリック) がネイティブにサポートされますが、追加のボタンはサードパーティのドライバーによってサービスが提供される必要があります。
また、デバイスが外部ボタンのみをサポートしている場合でも、ボタン 2 とボタン 3 を使用してその外部ボタンを参照する必要があります。
タッチパッドで使用するためのボタンが複数存在する場合は、記述子で追加のボタン スイッチを宣言する必要があります。 外部ボタンはデジタイザー ボタンと同様にパケット レベルでレポートされます。ただし、外部ボタンと接触状態を調整する必要はありません。
パケット報告モード
並列モード
並列モードでは、デバイスによってすべての接触情報が 1 つのパケットでレポートされます。 物理的な接触はそれぞれ、最上位のコレクションに埋め込まれている論理コレクションによって表されます。 この論理コレクションには、デバイスが各接触に対してサポートしているすべての使用状況が含まれています。 並列モードを使用する場合、各論理コレクションは同一である必要があります。 デバイスは通常、最大数よりも少ない接触をレポートするため、並列パケットでレポートされる接触の数は、接触数の使用状況を介して通信する必要があります。
たとえば、3 つの接触をサポートするデバイスを考えてみます。 ユーザーがデジタイザー上に 2 本の指しか置いていない場合、並列パケットには、3 つの接触のデータを伝送できるレポートに 2 つの有効な接触データしか含まれません。 この場合、接触数を 2 に設定して、クライアント アプリケーションが 3 つ以上の接触に関する情報は無効であることを認識できるようにする必要があります。
1 つのレポートで複数の接触をレポートすることの欠点は、接触数が可能な最大数よりも少なくなるたびに、レポートあたりのスペースが無駄になることです。 デバイスでハイブリッド モードを使用すると、この非効率性を低減できます。
ハイブリッド モード
ハイブリッド モードでは、1 つのレポートで報告できる接触の数が、デバイスがサポートしている接触の最大数よりも少なくなります。 たとえば、最大 4 つの物理的な同時接触をサポートするデバイスでは、1 つのレポートに最大 2 つの接触を配信するようにその最高レベルのコレクションを設定できます。 4 つの接触ポイントが存在する場合、デバイスでこれらをそれぞれ 2 つの接触を配信する 2 つのシリアル レポートに分割できます。
この方法でデバイスでデータを配信する場合、最初のレポートの接触数の使用状況の値には、ハイブリッド レポートで配信されている接触の総数が反映されている必要があります。 その他のシリアル レポートの接触数は、0 (ゼロ) にする必要があります。
1 本指ハイブリッド レポート モード
特定のフレームの最初の入力レポートは、接触数の使用状況によって報告される接触の総数を示します。 同じフレームの後続のすべての入力レポートでは、それらが以前にレポートされたフレームの一部であることを示すために、接触の使用状況の値を 0 (ゼロ) にする必要があります。 特定のフレームのすべてのレポートのスキャン時間は同じである必要があります。
2 つの接触のレポート シーケンスを示す表を次に示します (1 本指ハイブリッド レポート モード)。
レポート | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|
接触の数 | 2 | 0 | 2 | 0 | 2 | 0 |
接触 ID | 1 | 2 | 1 | 2 | 1 | 2 |
接触 1: X、Y | X₁、Y₁ | NR | X₂、Y₂ | NR | X₃、Y₃ | NR |
接触 1: 先端スイッチ | 1 | NR | 1 | NR | 1 | NR |
接触 2: X、Y | NR | X₁、Y₁ | NR | X₂、Y₂ | NR | X₃、Y₃ |
接触 2: 先端スイッチ | NR | 1 | NR | 1 | NR | 1 |
スキャン時刻 | T₁ | T₁ | T₂ | T₂ | T₃ | T₃ |
USB および I²C で接続された Windows 高精度タッチパッド デバイスは、1 本指ハイブリッド レポート モードまたは 2 本指ハイブリッド レポート モードのいずれかで入力レポートを配信できます。