HIDDevice

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

注意:此功能在 Web Workers 中可用,但 共享 Web Workers 除外。

HIDDevice 介面是 WebHID API 的一部分,用於表示一個 HID 裝置。它提供了用於訪問裝置資訊的屬性、用於開啟和關閉連線的方法,以及用於傳送和接收報告的功能。

EventTarget HIDDevice

例項屬性

此介面還繼承了 EventTarget 的屬性。

HIDDevice.opened 只讀 實驗性

返回一個 boolean 值,如果裝置連線已開啟,則為 true

HIDDevice.vendorId 只讀 實驗性

返回 HID 裝置的 vendorId。

HIDDevice.productId 只讀 實驗性

返回 HID 裝置的 productId。

HIDDevice.productName 只讀 實驗性

返回一個包含 HID 裝置產品名稱的字串。

HIDDevice.collections 只讀 實驗性

返回 HID 裝置報告格式的陣列。

事件

inputreport 實驗性

當從裝置傳送報告時觸發。

例項方法

此介面還繼承了 EventTarget 的方法。

HIDDevice.open() 實驗性

開啟與此 HID 裝置的連線,並返回一個 Promise,該 Promise 在連線成功後解析。

HIDDevice.close() 實驗性

關閉與此 HID 裝置的連線,並返回一個 Promise,該 Promise 在連線關閉後解析。

HIDDevice.forget() 實驗性

關閉與此 HID 裝置的連線並重置訪問許可權,然後返回一個 Promise,該 Promise 在許可權重置後解析。

HIDDevice.sendReport() 實驗性

向此 HID 裝置傳送一個輸出報告,並返回一個 Promise,該 Promise 在報告發送後解析。

HIDDevice.sendFeatureReport() 實驗性

向此 HID 裝置傳送一個功能報告,並返回一個 Promise,該 Promise 在報告發送後解析。

HIDDevice.receiveFeatureReport() 實驗性

Promise 的形式從此 HID 裝置接收一個功能報告,該 Promise 解析為一個 DataView。這允許對該訊息的內容進行型別化訪問。

示例

以下示例演示瞭如何監聽 inputreport 事件,該事件允許應用程式檢測 Joy-Con Right 裝置上哪個按鈕被按下。

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

  // Handle only the Joy-Con Right device and a specific report 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(`User pressed button ${someButtons[value]}.`);
});

在以下示例中,sendFeatureReport 用於使裝置閃爍。

js
const reportId = 1;
for (let i = 0; i < 10; i++) {
  // Turn off
  await device.sendFeatureReport(reportId, Uint32Array.from([0, 0]));
  await new Promise((resolve) => setTimeout(resolve, 100));
  // Turn on
  await device.sendFeatureReport(reportId, Uint32Array.from([512, 0]));
  await new Promise((resolve) => setTimeout(resolve, 100));
}

您可以在文章 Connecting to uncommon HID devices 中看到更多示例和即時演示。

規範

規範
WebHID API
# dom-hiddevice

瀏覽器相容性