必要な HID Top-Level コレクション (required-hid-top-level-collections)
このトピックでは、Windows 10 以降のオペレーティング システムでペン レポートに使用される必要な HID トップレベル コレクションについて説明します。
統合 Windows ペン デバイスは、少なくとも、ペン レポート用の単一の必須のトップレベル コレクションを公開する必要があります。 ファームウェア更新用のオプションの (ただし、推奨される) コレクションも実装できます。 また、Windows 10 より前のオペレーティング システムでは、ペン カーソル サポート用のオプションの (ダミー) マウス コレクションを実装できます。
次の図は、統合 Windows ペン デバイスの HID コレクションを示しています。
マウス コレクション (ダミー)
統合 Windows ペン デバイスでは、HID プロトコルを使用して、汎用デスクトップ/マウスとして表示されるトップ レベルのコレクションを提供できます (ページ 0x01、使用法 0x02)。
統合 Windows ペン デバイスの (ダミー) マウス コレクションは、Windows 10 より前のオペレーティング システムにカーソルを表示するために、ホストに HID 準拠のマウス デバイスを提供する目的で機能します。 このコレクションから実際のマウス レポートは必要ありません。記述子内にマウス コレクションが存在する場合のみです。 Windows 10 より前のオペレーティング システムをサポートする必要がない場合は、このコレクションを省略できます。
統合 Windows ペン コレクション
統合 Windows ペン デバイスでは、デジタイザー/統合ペン (ページ 0x0D、使用方法 0x02) として表示される最上位レベルのコレクションをデバイスが提供するように、Windows 10 システムで HID プロトコルを使用する必要があります。
統合 Windows ペン コレクションは、ホストにリッチな接触、筆圧、消去、およびボタンのレポートを提供するという目的を果たします。 コレクションは、必要に応じて、デバイスの認定状態を取得する機能のレポートをサポートできます。 必須の入力レポートについては、このトピックの「統合 Windows ペン入力レポート」セクションで詳細に指定されています。 オプションの (ただし、強く推奨する) 機能レポートを実装して、ホストから待機時間モードのヒントを取得できます。 このオプション機能は、スリープ モードでウェイクさせるために利用される USB デバイスの消費電力を最小限に抑えるのに役立ちます。
"デバイス認定ステータス機能レポート"
デバイスの認定状態機能のレポートを実装する場合、統合されたWindowsペンデバイスのホストは、デバイスの256バイトblobを取得するために使用できます。
256 バイトは、デバイス認定ステータス機能レポートのベンダー定義の使用状況ページ (ページ 0xFF、使用状況 0xC5) で、ベンダー固有の HID 使用法を介して指定する必要があります。
デバイスは、認証ステータスを示す 256 バイトの BLOB を受信する前に、次のように既定の BLOB を実装する必要があります。
0xfc、0x28、0xfe、0x84、0x40、0xcb、0x9a、0x87、0x0d、0xbe、0x57、0x3c、0xb6、0x70、0x09、0x88、0x07、0x97、0x2d、0x2b、0xe3、0x38、0x34、0xb6、0x6c、0xed、0xb0、0xf7、0xe5、0x9c、0xf6、0xc2、0x2e、0x84、0x1b、0xe8、0xb4、0x51、0x78、0x43、0x1f、0x28、0x4b、0x7c、0x2d、0x53、0xaf、0xfc、0x47、0x70、0x1b、0x59、0x6f、0x74、0x43、0xc4、0xf3、0x47、0x18、0x53、0x1a、0xa2、0xa1、0x71、0xc7、0x95、0x0e、0x31、0x55、0x21、0xd3、0xb5、0x1e、0xe9、0x0c、0xba、0xec、0xb8、0x89、0x19、0x3e、0xb3、0xaf、0x75、0x81、0x9d、0x53、0xb9、0x41、0x57、0xf4、0x6d、0x39、0x25、0x29、0x7c、0x87、0xd9、0xb4、0x98、0x45、0x7d、0xa7、0x26、0x9c、0x65、0x3b、0x85、0x68、0x89、0xd7、0x3b、0xbd、0xff、0x14、0x67、0xf2、0x2b、0xf0、0x2a、0x41、0x54、0xf0、0xfd、0x2c、0x66、0x7c、0xf8、0xc0、0x8f、0x33、0x13、0x03、0xf1、0xd3、0xc1、0x0b、0x89、0xd9、0x1b、0x62、0xcd、0x51、0xb7、0x80、0xb8、0xaf、0x3a、0x10、0xc1、0x8a、0x5b、0xe8、0x8a、0x56、0xf0、0x8c、0xaa、0xfa、0x35、0xe9、0x42、0xc4、0xd8、0x55、0xc3、0x38、0xcc、0x2b、0x53、0x5c、0x69、0x52、0xd5、0xc8、0x73、0x02、0x38、0x7c、0x73、0xb6、0x41、0xe7、0xff、0x05、0xd8、0x2b、0x79、0x9a、0xe2、0x34、0x60、0x8f、0xa3、0x32、0x1f、0x09、0x78、0x62、0xbc、0x80、0xe3、0x0f、0xbd、0x65、0x20、0x08、0x13、0xc1、0xe2、0xee、0x53、0x2d、0x86、0x7e、0xa7、0x5a、0xc5、0xd3、0x7d、0x98、0xbe、0x31、0x48、0x1f、0xfb、0xda、0xaf、0xa2、0xa8、0x6a、0x89、0xd6、0xbf、0xf2、0xd3、0x32、0x2a、0x9a、0xe4、0xcf、0x17、0xb7、0xb8、0xf4、0xe1、0x33、0x08、0x24、0x8b、0xc4、0x43、0xa5、0xe5、0x24、0xc2
ホストは、レポート記述子を読み取った後、統合 Windows ペン デバイスのデバイス認定ステータス機能レポートをいつでも要求できます。
"待ち時間モード機能レポート"
Note
Windows 10 バージョン 1511 以前のオペレーティング システムでは、現在、この HID 機能レポートは、サポートを提供するペン デバイスまたはタッチ スクリーン デバイスに発行されていません。 ただし、"待ち時間モード機能レポート" のサポートをデバイスに追加すると、Windows がペン デバイスとタッチ スクリーン デバイスでデバイスをサポートする将来の日付にデバイスが対応できるようになります。
待機時間モード機能レポートは、ホストから統合 Windows ペン デバイスに送信されます。これは、高待機時間が省電力に望ましい場合と、逆に、操作に通常の待機時間が必要な場合を示します。 USB に接続された統合 Windows ペン デバイスの場合、これにより、デバイスでは、非アクティブ (ランタイム IDLE) のために中断されているか、システムが S3 またはコネクト スタンバイに入っているために中断されているかを区別できます。
待ち時間モードは、待ち時間モード機能レポートの待ち時間モード使用法 (ページ 0x0D、使用法 0x60) の値で示す必要があります。
待機時間モードの値 | 待機時間モード |
---|---|
0 | 標準 |
1 | 高 |
統合 Windows ペン入力レポート
次の表の使用法は、統合 Windows ペン コレクションを介して、入力レポートからペン データを抽出するためにホストによって使用されます。 この表は、ペンに関するレポートのすべての必須の使用法と Windows でサポートされているオプションの使用法を示しています。
メンバー | 説明 | ページ | id | 必須/省略可能 | HLK に必須 |
---|---|---|---|---|---|
x | 接触位置の X 座標 | 0x01 | 0x30 | 必須 | はい |
Y | 接触位置の Y 座標 | 0x01 | 0x31 | 必須 | はい |
ヒント | ペンがデジタイザーの表面に表示される場合に設定します | 0x0D | 0x42 | 必須 | はい |
範囲内 | ペンがデジタイザーの範囲内にあるかどうかを示します | 0x0D | 0x32 | 必須 | はい |
バレル ボタン | ペンの横にあるボタンの状態 | 0x0D | 0x44 | 必須 | はい |
Invert | ペンの向きで消去する意図があることを示します | 0x0D | 0x3C | 省略可能 | はい |
消しゴム | ペンが消去中かどうかを示します | 0x0D | 0x45 | 省略可能 | はい |
先端の圧力 | ペン先にかかる圧力 | 0x0D | 0x30 | 省略可能 | はい |
スキャン時刻 | フレームあたりの相対スキャン時間 | 0x0D | 0x56 | 省略可能 | いいえ |
X の傾斜 | X 軸に沿ったペンの傾きの角度 | 0x0D | 0x3D | 省略可能 | いいえ |
Y の傾斜 | Y 軸に沿ったペンの傾きの角度 | 0x0D | 0x3E | 省略可能 | いいえ |
Twist | ペンの時計回りの回転 | 0x0D | 0x41 | 省略可能 | いいえ |
変換器のシリアル番号 | 変換器の永続一意識別子 | 0x0D | 0x5B | 省略可能 | いいえ |
探触子のシリアル番号 - パート 2 | トランスデューサーのシリアル番号を追加の 32 ビットで拡張するために使用されます | 0x0D | 0x6E | 省略可能 | いいえ |
変換器ベンダー ID | 変換器のベンダーに割り当てられた識別子 | 0x0D | 0x91 | 省略可能 | いいえ |
次の表は、統合 Windows ペン入力レポートにおいて必須のレポート レベルの使用法を示しています。
メンバー | 説明 | ページ | id | 必須/省略可能 |
---|---|---|---|---|
レポート ID | 統合 Windows ペン レポート ID | 0x0D | 0x02 | 必須 |
必須と Windows でサポートされているオプションの使用状況
連絡先レベルまたはレポート レベルのいずれかですべての必須の使用法を報告しないデバイスは、統合 Windows ペン デバイスとして機能しなくなります。 必須の使用法は、Windows ホストによって厳密に適用されます。 論理最大値が設定されていない場合は、値を最適化して記述子のサイズを小さくすることができます。
次のセクションでは、前の表に示した必須および Windows でサポートされているオプションの使用法について詳しく説明します。
X、Y
X と Y は、統合ペンの座標を報告します。 X と Y の両方の使用法に対して、次のグローバル項目を指定する必要があります。
物理最小値 & 物理最大値
単位&単位指数
論理最小値 & 論理最大値 (入力解像度を保証する > = 150 DPI)
注 論理座標範囲全体は、X 軸と Y 軸の両方でレポート可能である必要があります。
ペンの先端
ペンの先端が表面に出ているか、またはデジタイザーの表面から離れているかを示すために使用されます。 これは、レポート サイズが 1 ビットのメイン アイテムによって示されます。 入力レポートを配信する場合は、ペンがデジタイザーの表面にあるときにビットを設定し、ペンが表面を離れたときにビットをクリアする必要があります。
ペンがレポート ストリームで初めてレポートされ、先端のスイッチがクリアされている場合、レポートされる X/Y 位置は、先端のスイッチ セットでレポートされる最後の位置と同じである必要があります。
範囲内
ペンの先端 (または後ろにある消しゴム) がデジタイザーの範囲内にあることを示すために使用されます。 これは、レポート サイズが 1 ビットのメイン アイテムによって示されます。 入力レポートを配信する場合は、ペンの先端 (または後ろにある消しゴム) がデジタイザーの表面にあるか、デジタイザーの検出可能な範囲内にあるときにビットを設定し、ペンが検出できなくなったときにクリアする必要があります。 ペンのX/Yの場所を確実に報告することができ、Windows 10のペンHLK要件で規定されているパラメーター内でのみ範囲内を報告する必要があることに注意してください。
範囲内スイッチがクリアされた状態でペンがレポートされている場合、レポートされる X/Y 位置は、範囲内スイッチが設定されたときに報告された最後の位置と同じである必要があります。
バレル ボタン
ペンの側面にあるボタンが押されたことを示すために使用されます。 これは、レポート サイズが 1 ビットのメイン アイテムによって示されます。 入力レポートを配信するときは、このボタンを押したときにビットを設定し、ボタンを離したときにビットをクリアする必要があります。
Invert
ペンの向きで消去の意図があることを示す場合に使用されます。 これは、レポート サイズが 1 ビットのメイン アイテムによって示されます。 さまざまな消しゴムの実装に関する入力レポートのガイドラインを次に示します。
後ろにある消しゴムの実装
入力レポートを配信するときは、ペンを反転させるたびにビットを設定し、ペンを反転させない場合はビットをクリアする必要があります。
消しゴム ボタンの実装
入力レポートを配信するときは、消しゴム ボタンを押すたびにビットを設定する必要があります。ペンはデジタイザーの範囲内にあり、それ以外の場合はクリアされます。
消しゴム
ペンがいつ消去されているかを示すために使用されます。 これは、レポート サイズが 1 ビットのメイン アイテムによって示されます。 さまざまな消しゴムの実装に関する入力レポートのガイドラインを次に示します。
後ろにある消しゴムの実装
入力レポートを配信するときは、ペンを反転させて画面に接触させるたびにビットを設定し、そうでない場合はクリアする必要があります。
消しゴム ボタンの実装
入力レポートを配信するときは、消しゴム ボタンを押してペンの先端が画面に接触するたびにビットを設定し、それ以外の場合はクリアする必要があります。
この実装の消去機能を誤ってアクティブ化したり、キャンセルしたりしないようにするため、ペンの先端が画面と接触している場合は、[消去] ボタンを押しても、消しゴムのビットのレポートに影響を与えないようにすることを強くお勧めします。
消去スイッチがクリアされた状態でレポート ストリームでペンが初めて報告される場合、報告される X/Y 位置は、消去スイッチが設定されたときに報告された最後の位置と同じである必要があります。
スキャン時刻
スキャン時刻では、100 マイクロ秒単位で相対的なデジタイザー時刻が報告されます。 非アクティブな期間の後にデバイスがデータのレポートを開始すると、スキャン時間は、レポートされた最初のフレームからレポートの時間までの期間を表します。 最初に受信されたスキャン時刻は、その後に報告される時刻の基準時間として処理されます。 レポートされたスキャン時間から次のスキャン時間までの経過時間は、デジタイザーのスキャン頻度を反映している必要があります。 他の使用法とは異なり、ホストが実装されている場合、スキャン時間の使用法についてユニットに柔軟性が提供されないことに注意してください。 100 マイクロ秒単位である必要があります。 カウンターに割り当てられるバイトは 2 バイトのみであるため、値はロール オーバーすると予想されます。
先端の圧力
ペンの先端にかかっている圧力を示すために使用されます。 これは、少なくとも 256 の異なるレベルの圧力に対応するために、少なくとも 8 ビットのレポート サイズを持つメイン項目によって示されます。 追加の粒度をレポートするには、より大きなレポート サイズを使用する必要があります。
レポートされた圧力の論理値は、次の図に示す理想的な対数曲線に可能な限り一致する必要があります。 Windows 10 用のペン HLK テスト スイートによって提供される圧力テストは、報告された圧力曲線が図に示されている上限と下限の範囲内にあることを確認するように設計されています。 図の理想的な曲線と、関連する式は、256 レベルをレポートするデバイスに対して概要が示されていますが、任意の数の不連続レベルに対応するようにスケーリングできます。
消しゴムスイッチは、筆圧感知機能を持たない末尾の消しゴムを使用したペンでアクティブになっていますが、ペン先の圧力は127 (最大圧力の50%)を報告する必要があります。 この値は、消しゴムスイッチがアクティブな間に実際の末尾のペンの圧力を消費する可能性があるペンとアプリをサポートするために選択されました。
X の傾斜
X 傾斜は、Y-Z 平面、ペンの縦軸を含む平面、および Y 軸の間の平面角度を表します。
物理範囲と論理範囲を指定する必要があります。 物理的な範囲は最大 -90 〜 90 度ですが、記述子で報告される物理的な最小値/最大値は、正しい単位 (0x14、度) でのペンの実際の最小/最大達成可能 X 傾斜に対応する必要があります。 論理範囲は、小数点以下 2 桁以上の正確なデータを配信するのに十分な大きさである必要があります。 ラジアンは、物理範囲にも使用できます。 Xの傾きは、デジタイザーのネイティブの向きでユーザーの右側に正です。
Y の傾斜
Y 傾斜は、X-Z 平面、ペンの縦軸を含む平面、および Y 軸の間の平面角度を表します。
物理範囲と論理範囲を指定する必要があります。 物理的な範囲は最大 -90 〜 90 度ですが、記述子で報告される物理的な最小値/最大値は、正しい単位 (0x14、度) でのペンの実際の最小/最大達成可能 Y 傾斜に対応する必要があります。 論理範囲は、小数点以下 2 桁以上の正確なデータを配信するのに十分な大きさである必要があります。 ラジアンは、物理範囲にも使用できます。 Yの傾きは、デジタイザーのネイティブの向きでユーザーに対して正です。
Twist
回転は、独自の長軸を中心にペンの時計回りの回転を指定します。
物理範囲と論理範囲を指定する必要があります。 物理範囲は 0 ~ 360 である必要があります。 論理範囲は、小数点以下 2 桁以上の正確なデータを配信するのに十分な大きさである必要があります。 物理範囲にはラジアンも使用できます。 この場合、論理範囲は、小数点以下 4 桁以上の正確な値を報告するのに十分な大きさである必要があります。
変換器のシリアル番号
変換器のシリアル番号は、ペン デジタイザーと通信するペン アクセサリで使用される変換器の一意の永続的な識別子です。 これは 32 ビットにする必要があり、変換器ベンダー ID で識別されるベンダーまたはエンティティによって定義されます。 ペンアクセサリがこの値の送信をサポートしていないか、または送信が完全に受信されていないために、デジタイザーにトランスデューサシリアル番号が不明な状況では、デジタイザーはホストに0を報告しなければなりません。 Null 位置は、ホストではサポートされていません。
探触子シリアル番号 – パート 2
トランスデューサシリアル番号 – パート2では、ペンアクセサリで使用されるトランスデューサの一意の永続的識別子の一部として追加の32ビットを指定できます。 ペンアクセサリがこの値の送信をサポートしていないか、または送信が完全に受信されていないために、デジタイザーにトランスデューサシリアル番号 - パート2が不明な状況では、デジタイザーはホストに0を報告しなければなりません。 Null 位置は、ホストではサポートされていません。
変換器ベンダー ID
変換器ベンダー ID は、ペン デジタイザーと通信するペン アクセサリで使用される変換器の製造元を伝えるためのフィールドです。 これは、製造元またはこの目的で USB IF ベンダー ID の使用を承認している IHV/OEM に割り当てられた 2 バイトの USB-IF ベンダー ID である必要があります。