HIDDevice.collections

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

安全なコンテキスト用: この機能は一部またはすべての対応しているブラウザーにおいて、安全なコンテキスト (HTTPS) でのみ利用できます。

Experimental: これは実験的な機能です。
本番で使用する前にブラウザー互換性一覧表をチェックしてください。

HIDDevice インターフェイスの読み取り専用プロパティ collections は、レポート形式の配列を返します。

レポート形式の配列です。各エントリーは以下を含みます。

usagePage

このコレクションに紐づいた HID 使用法の Usage Page 部分を表す整数です。トップレベルのコレクションの使用法は、デバイスの種類を特定するために使用されます。

標準の HID 使用法の値は、HID Usage Tables に載っています。

usage

このコレクションに紐づいた HID 使用法の Usage ID 部分を表す整数です。

type

コレクションの種類を表す 8 ビットの値です。グループ化されたアイテムの関係を表します。以下のいずれかです。

0x00

Physical (軸のグループ)

0x01

Application (マウス、キーボード)

0x02

Logical (関連するデータ)

0x03

Report

0x04

Named array

0x05

Usage switch

0x06

Usage modified

0x07 to 0x7F

将来のために予約

0x80 to 0xFF

ベンダー定義

これらの種類についての追加情報は、Device Class Definition に載っています。

children

トップレベルコレクションと同じ形式の、サブコレクションの配列です。

inputReports

このコレクションで記述されているそれぞれの Input レポートを表す inputReport の配列です。

outputReports

このコレクションで記述されているそれぞれの Output レポートを表す outputReport の配列です。

featureReports

このコレクションで記述されているそれぞれの Feature レポートを表す featureReport の配列です。

この例は、collections プロパティが返された後、様々な要素にアクセスする方法を示しています。他の例や動くデモを記事 Connecting to uncommon HID devices で見ることができます。

js
for (const collection of device.collections) {
  // HID コレクションには、使用法、Usage Page、レポート、サブコレクションが含まれます。
  console.log(`Usage: ${collection.usage}`);
  console.log(`Usage page: ${collection.usagePage}`);

  for (const inputReport of collection.inputReports) {
    console.log(`Input report: ${inputReport.reportId}`);
    // inputReport.items をループで走査します
  }

  for (const outputReport of collection.outputReports) {
    console.log(`Output report: ${outputReport.reportId}`);
    //  outputReport.items をループで走査します
  }

  for (const featureReport of collection.featureReports) {
    console.log(`Feature report: ${featureReport.reportId}`);
    // featureReport.items をループで走査します
  }

  // collection.children を用いてサブコレクションをループで走査します
}

仕様書

Specification
WebHID API
# dom-hiddevice-collections

ブラウザーの互換性

BCD tables only load in the browser