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

浏览器兼容性