有没有办法确定连接到设备的哪个键盘在JS中发送了特定的键事件?例如,带有USB键盘的笔记本电脑将很高兴地尊重两个键盘上的按键,但我似乎无法找到一种方法让浏览器告诉我关键事件来自哪个源,所以我可以根据它进行过滤(例如对于播放器1 /基于浏览器的游戏的2输入过滤,基于浏览器的组合工具的键盘与“虚拟乐器”等。
我在MDN的关键事件规范中找不到任何暗示这是可能的,但我会非常乐意接受任何创造性的黑客,使这项工作“尽管”而非“感谢”规范。
有人did ask this question back in 2013,虽然它的回答建议使用游戏手柄API作为解决方法,但它现在是2018年,对JS API进行了三年的更改意味着这个问题值得重新研究,以便根据浏览器的当前状态得到答案。
我不知道它是否已经可行,但如果尝试这样的话,我会研究WebUSB Api:
https://developers.google.com/web/updates/2016/03/access-usb-devices-on-the-web https://wicg.github.io/webusb/
不是那么容易,但似乎有可能
目前还不可能。
WebUSB不允许访问HID设备,WebHID将不允许访问高级API已经支持的设备(包括键盘)。
我在WICG孵化器上开始了一个话题:https://discourse.wicg.io/t/identify-which-of-multiple-keyboards-an-event-came-from/3416