HIDDevice

可用性有限

此功能不是基线功能,因为它在一些最广泛使用的浏览器中无法正常工作。

安全上下文:此功能仅在安全上下文(HTTPS)中可用,在某些或所有支持的浏览器中。

实验性:这是一个实验性技术
在生产环境中使用此功能之前,请仔细查看浏览器兼容性表格

HIDDeviceWebHID 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 waitFor(100);
  // Turn on
  await device.sendFeatureReport(reportId, Uint32Array.from([512, 0]));
  await waitFor(100);
}

您可以在文章连接到不常见的 HID 设备中查看更多示例和实时演示。

规范

规范
WebHID API
# dom-hiddevice

浏览器兼容性

BCD 表格仅在浏览器中加载