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

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
HIDDevice
Experimental
close
Experimental
collections
Experimental
forget
Experimental
inputreport event
Experimental
open
Experimental
opened
Experimental
productId
Experimental
productName
Experimental
receiveFeatureReport
Experimental
sendFeatureReport
Experimental
sendReport
Experimental
vendorId
Experimental
Available in workers
Experimental

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
Partial support
Partial support
In development. Supported in a pre-release version.
In development. Supported in a pre-release version.
No support
No support
Experimental. Expect behavior to change in the future.
See implementation notes.
Has more compatibility info.