找出哪个键盘在javascript中产生了按键事件

时间:2018-09-25 16:56:14

标签: javascript keyevent

是否有某种方法可以确定连接到设备的哪个键盘在JS中发送了特定的按键事件?例如,带USB键盘的笔记本电脑会很乐意在两个键盘上都按下按键,但是我似乎找不到一种方法让浏览器告诉我按键事件来自哪个来源,因此我可以基于该来源进行过滤(例如,播放器1 /基于浏览器的游戏的2种输入过滤,基于浏览器的合成工具的键盘与“虚拟乐器”等)

我在MDN上的关键事件规范中找不到任何表明可能的方法,但是我很乐意接受任何使该工作“尽管”而不是“感谢”该程序的创造性黑客手段。规格。

有人did ask this question back in 2013,虽然它的答案建议使用gamepad API作为解决方法,但现在是2018年,并且JS API进行了三年更改,这意味着该问题值得再次提出,以便根据当前答案获得答案。浏览器的状态。

2 个答案:

答案 0 :(得分:1)

我不知道是否已经可以,但是如果尝试这样的话,我会研究WebUSB Api:

https://developers.google.com/web/updates/2016/03/access-usb-devices-on-the-web https://wicg.github.io/webusb/

不太容易,但是似乎有可能

答案 1 :(得分:1)

目前不可能。

WebUSB不允许访问HID设备,WebHID不允许访问高级API已经支持的设备(包括键盘)。

我已经在WICG孵化器中开始了一个话题:https://discourse.wicg.io/t/identify-which-of-multiple-keyboards-an-event-came-from/3416