USB HID クラス |
辞書:電算用語の基礎知識 計算機入力装置編 (TCPERII) |
読み:ユーエスビー-エイチアイディー-クラス |
外語:HID: Human Interface Device class |
品詞:名詞 |
|
概要 |
利用者が電子計算機に対して情報を入力するために使うクラスとして扱われ、主にキーボードやマウスが該当する。
キーボードとマウスに関してはHIDBPという簡易プロトコルが規定されている。
電源装置であるUPSも、(なぜか)殆どがUSB HID クラスである。
特徴 |
インターフェイスディスクリプター |
ホストPCに、HIDデバイスクラスのファンクションであることを通知するには、インターフェイスディスクリプターのbInterfaceClassフィールドを0x03とする。
USB HID クラスの種類を表わすために、当初はサブクラスを使うことが想定されていた。しかし、現実にはその種類は膨大となり、サブクラスのプロトコル定義は非現実的と判断された。
結果として、USB HID クラスデバイスはレポートディスクリプターでプロトコルを判別する。
しかし、キーボードおよびマウスはBIOSがサポートするデバイス(ブートデバイス)として、シンプルな実装が求められた。そこで、ブートデバイスとして用いられるUSB HID クラスデバイス(キーボードあるいはマウス)は、ブートプロトコルに対応することを示すためにサブクラスを使用する。
ホストPCに、デバイスがブートプロトコルに対応することを伝えるためには、インターフェイスディスクリプターのbInterfaceSubClassフィールドを0x01とする。
デバイスがブートプロトコルに対応している(サブクラスコードが0以外)場合は、デバイスの種類を表わすためにプロトコルコードフィールドを使う。
ホストPCに、デバイスの種類を通知するためには、インターフェイスディスクリプターのbInterfaceProtocolフィールドに値を設定する。
ディスクリプター |
USB HID クラスのファンクションデバイスは、他のUSBファンクションデバイスが持つディスクリプター情報の他に、「HIDディスクリプター」「レポートディスクリプター」「フィジカルディスクリプター」(オプション)が必要である。
次のような構成になる。
一部の例外を除いて、それぞれのディスクリプターは、長さ+ディスクリプタータイプに始まる定形のフォーマットを持つ。
複数のディスクリプターが続く場合、デバイスディスクリプター、コンフィギュレーションディスクリプターの後は、「インターフェイスディスクリプターと以下一式、エンドポイントディスクリプター」を繰り返す。
HIDディスクリプターは、レポートディスクリプターとフィジカルディスクリプター(オプション)を纏めるために存在する。
次のような構造である。
クラスディスクリプター数が複数ある場合、+6と+7の内容を、その数分繰り返すことになるが、その場合はbLengthも変更することになる。
レポートディスクリプターは、他と構造が全く違う。HIDディスクリプターに続いて送られるもので、独自の形式を持っている。
レポートディスクリプターは可変長で、デバイスに関する情報を提供する。
アイテムと呼ばれる情報のまとまり(階層構造)を持つのが特徴である。
アイテムには、短いアイテム(データ長0、1、2、4バイト)と、長いアイテム(データ長最大255バイト)がある。短いアイテムの場合、次のような構造である。
アイテムタイプには「Main」「Global」「Local」の3種類がある。各アイテムタイプごとにbTagでアイテムの種類を定義するが、Main(フィールドの定義やグループ化用)が5種類、Global(データの記述に使用)は12種類、Local(特性の定義に使用)は10種類ある。これらを組み合わせて、レポートディスクリプターを構成する。
なお、1バイト目が0xfe (1111 11 10)の場合、長いアイテムになる。
USBは、Usageと呼ばれる数値でデバイスの種類を定義する。これは32ビットの符号なし整数であり、USB-IFがHID Usage Tableで定義している。
このうち、Usageの上位16ビットがUsage page、下位16ビットがUsage IDである。
レポートディスクリプターでは、まずUsage Pageがあり大まかなデバイスの種類を選ぶ。次にUsage IDがあり、Usage Pageごとに定義される番号によって、実際のデバイスを選択することになる。
様々なものが定義されているが、よく使われるものを抜粋する。Usage Pageごとに一意になるので、Usage Pageにぶら下げるようにして表記する。
JoystickやGame Padは特殊なケースであり、Generic Desktop Pageで定義されている。Usage Page=0x05 Game Controls Pageではない。
アイテム | 値(HEX) | ||
Usage Page (Generic Desktop) | 05 01 | ||
Usage (Mouse) | 09 02 | ||
Collection (Application) | A1 01 | ||
Usage (Pointer) | 09 01 | ||
Collection (Physical) | A1 00 | ||
Usage Page (Buttons) | 05 09 | ||
Usage Minimum (01) | 19 01 | ||
Usage Maximum (03) | 29 03 | ||
Logical Minimum (0) | 15 00 | ||
Logical Maximum (1) | 25 01 | ||
Report Count (3) | 95 03 | ||
Report Size (1) | 75 01 | ||
Input (Data, Variable, Absolute) | 81 02 | ||
Report Count (1) | 95 01 | ||
Report Size (5) | 75 05 | ||
Input (Constant) | 81 01 | ||
Usage Page (Generic Desktop) | 05 01 | ||
Usage (X) | 09 30 | ||
Usage (Y) | 09 31 | ||
Usage (Wheel) | 09 38 | ||
Logical Minimum (-127) | 15 81 | ||
Logical Maximum (127) | 25 7F | ||
Report Size (8) | 75 08 | ||
Report Count (3) | 95 03 | ||
Input (Data, Variable, Relative) | 81 06 | ||
End Collection | C0 | ||
End Collection | C0 |
リンク |
通信用語の基礎知識検索システム WDIC Explorer Ver 7.04a (27-May-2022) Search System : Copyright © Mirai corporation Dictionary : Copyright © WDIC Creators club |