【问题标题】:Finding out which keyboard generated a key event in javascript找出哪个键盘在javascript中生成了一个键事件
【发布时间】:2018-09-25 16:56:13
【问题描述】:

有没有办法确定连接到设备的哪个键盘在 JS 中发送了特定的按键事件?例如,带有 USB 键盘的笔记本电脑会很高兴地支持两个键盘上的按键,但我似乎无法找到一种方法让浏览器告诉我按键事件来自哪个源,因此我可以根据它进行过滤(例如,对于玩家 1/ 2 基于浏览器的游戏的输入过滤、基于浏览器的作曲工具的键盘与“虚拟乐器”等)

我在 MDN 上的关键事件规范中找不到任何表明这是可能的内容,但我非常乐意接受任何使这项工作“尽管”而不是“感谢”规格。

有人did ask this question back in 2013,虽然它的回答建议使用游戏手柄 API 作为解决方法,但现在是 2018 年,对 JS API 进行了三年的更改意味着这个问题值得重新提出,以便根据当前状态得到答案浏览器。

【问题讨论】:

标签: javascript keyevent


【解决方案1】:

我不知道这是否已经可行,但如果尝试类似的方法,我会研究 WebUSB Api:

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

不太容易,但似乎有可能

【讨论】:

  • 我正在考虑使用游戏手柄 API,以便可以在键盘->虚拟游戏手柄工具的帮助下注册同时输入,但可能还有其他选项。我想远离只能在单个浏览器中工作的解决方案(我并不特别想建立一个“chrome 网站”,而不是一个“网站”=)
  • 你说得很好。考虑到这一点,我也会使用游戏手柄 API。
【解决方案2】:

目前不可以。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-08
    • 2016-12-30
    • 2013-11-16
    • 2012-11-13
    • 2015-08-03
    • 2010-11-09
    • 2023-04-07
    • 1970-01-01
    相关资源
    最近更新 更多