检测正在用 JavaScript 输入数据的设备

问题描述

我一直在研究一个功能,其目标是读取条形码和二维码。问题是: 我的 PC 上连接了两台条码扫描仪,想知道数据来自哪一台。

这是我到目前为止使用“navigator.usb”的内容

JS 函数

async function checkSource(e) {
     navigator.usb.getDevices()
         .then((device) => {
             console.log(device)
         })
    }

JSX 元素(我正在使用 ReactJS)

<Input onChange={checkSource} />

现在,是否可以代替 console.log 记录我连接的设备列表,检测对我的 Input 组件的“键入”?

解决方法

我假设您当前在键盘模拟模式下使用条形码扫描仪。理想情况下,为来自扫描仪的输入分派的 KeyboardEvent 将包含一个标识符,“键盘”为其生成了事件。这不是目前指定这些事件的方式。

如果您想使用 WebUSB,那么您需要将条码扫描器置于一种模拟键盘的模式。然后您就可以直接与两台设备进行通信,并且可以清楚地知道是哪台设备在发送数据。