HIDDevice

Limited availability

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

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

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

WebHID APIHIDDevice インターフェイスは HID デバイスを表します。デバイスに関する情報にアクセスするためのプロパティと、接続を開いたり閉じたりするメソッド、そしてレポートの送受信を行うメソッドを提供します。

EventTarget HIDDevice

インスタンスプロパティ

このインターフェイスには、EventTarget から継承したプロパティもあります。

HIDDevice.opened 読取専用 Experimental

boolean を返します。このデバイスとの接続が開かれているとき true になります。

HIDDevice.vendorId 読取専用 Experimental

この HID デバイスのベンダー ID を返します。

HIDDevice.productId 読取専用 Experimental

この HID デバイスのプロダクト ID を返します。

HIDDevice.productName 読取専用 Experimental

この HID デバイスの製品名の文字列を返します。

HIDDevice.collections 読取専用 Experimental

この HID デバイスのレポート形式の配列を返します。

イベント

inputreport Experimental

レポートがデバイスから送られてきた時、発火します。

インスタンスメソッド

このインターフェイスには、EventTarget から継承したメソッドもあります。

HIDDevice.open() Experimental

この HID デバイスとの接続を開きます。接続に成功したら解決する Promise を返します。

HIDDevice.close() Experimental

この HID デバイスとの接続を閉じます。操作が完了したら解決する Promise を返します。

HIDDevice.forget() Experimental

この HID デバイスとの接続を閉じ、アクセスの許可をリセットします。操作が完了したら解決する Promise を返します。

HIDDevice.sendReport() Experimental

この HID デバイスに Output レポートを送信します。操作が完了したら解決する Promise を返します。

HIDDevice.sendFeatureReport() Experimental

この HID デバイスに Feature レポートを送信します。操作が完了したら解決する Promise を返します。

HIDDevice.receiveFeatureReport() Experimental

この HID デバイスから Feature レポートを、DataView で解決する Promise として受信します。これにより、メッセージの内容に型を用いてアクセスできます。

この例では、アプリケーションが Joy-Con Right デバイスでどのボタンが押されたかを検出するために inputReport イベントを監視する方法を示します。

js
device.addEventListener("inputreport", (event) => {
  const { data, device, reportId } = event;

  // Joy-Con Right デバイスで、かつ特定のレポート ID のイベントのみを扱います。
  if (device.productId !== 0x2007 && reportId !== 0x3f) return;

  const value = data.getUint8(0);
  if (value === 0) return;

  const someButtons = { 1: "A", 2: "X", 4: "B", 8: "Y" };
  console.log(`ユーザーがボタン ${someButtons[value]} を押しました。`);
});

この例では、デバイスを点滅させるために sendFeatureReport を使用します。

js
const reportId = 1;
for (let i = 0; i < 10; i++) {
  // 消灯させます
  await device.sendFeatureReport(reportId, Uint32Array.from([0, 0]));
  await waitFor(100);
  // 点灯させます
  await device.sendFeatureReport(reportId, Uint32Array.from([512, 0]));
  await waitFor(100);
}

記事 Connecting to uncommon HID devices で他の例や動くデモを見ることができます。

仕様書

Specification
WebHID API
# dom-hiddevice

ブラウザーの互換性

BCD tables only load in the browser