6

我正在编写一些执行简单键盘事件捕获的测试应用程序。

我对这种基本方法没有任何问题。

但现在我需要更好的应用程序体验,我想连接至少两个或更多 USB 或 PS/2 键盘,区分哪个键盘是按键事件的来源,以便能够使用 JavaScript 在本地使用 Web 浏览器(和 HTML5),就好像它是一个游戏控制台,同时为多个玩家提供多个控制器。

我知道即使在 Windows 或 Linux 下,正常的行为是让多个键盘触发相同的事件。但是,我也知道完全有可能知道是哪个特定的键盘硬件设备触发了该事件。

有可能还是 JavaScript 的限制?将来可能会支持区分相同基本类型的多个输入设备,是否有一些替代方案,至少在 HTML5 中,或者在 Web 浏览器的上下文中,JavaScript 会几乎失去希望和 HTML5?

4

1 回答 1

3

不,在当前的浏览器环境中,您不能支持特定类型的多个不同输入设备。我也不知道任何即将推出的规范会启用这样的功能。通常假设浏览器一次只有一个用户。我认为不会支持这样的事情。

也就是说,目前正在开发游戏手柄支持规范。非开发版本的浏览器还不支持它,但 Firefox 和 Chrome 都在开发它。如果你对这项技术感兴趣,已经有一个有趣的库叫做gamepad.js 。

目前,要支持多个玩家,您可能必须像大多数游戏一样支持多个基于键盘的玩家,将每个玩家映射到不同的键组。

2015-05-04 更新

自此答案以来,对 Gamepad API 的支持变得更好,Firefox 和 Chrome 现在都支持返回多个版本,Opera 也支持它。但并非所有浏览器都这样做,Safari 和 IE 没有。微软的新浏览器 Edge 看起来将支持 Gamepad API,但可能需要很长时间才能让大多数 IE 用户迁移到 Edge 或其他浏览器。

于 2013-02-19T22:04:57.980 回答