HIDDevice
注意:此功能在 Web Workers 中可用,但 共享 Web Workers 除外。
HIDDevice 介面是 WebHID API 的一部分,用於表示一個 HID 裝置。它提供了用於訪問裝置資訊的屬性、用於開啟和關閉連線的方法,以及用於傳送和接收報告的功能。
例項屬性
此介面還繼承了 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 裝置上哪個按鈕被按下。
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 用於使裝置閃爍。
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 |
瀏覽器相容性
載入中…