HTML5 Gamepad API仅限于4个控制器吗?

Mat*_*hel 19 html javascript html5 gamepad-api gamepad

通过在浏览器中使用HTML5 Gamepad API,我能够正确地从4个控制器获得输入.

https://www.w3.org/TR/gamepad/

我遇到的问题是从8个控制器获取输入.这些都是Xbox 360控制器,我知道XInput API存在遗留限制.但是看看上面的HTML5 API文档,我看不到任何提及限制或API实现方式的内容.

navigator.getGamepads(); 似乎在Chrome和Edge中返回了4个未定义点的数组,而FireFox中的未指定数组似乎仍然达到了4的限制.

您可以看到Windows 10验证我在"设备"面板中连接了8个控制器,并且所有控制器在浏览器中最多可单独操作4个游戏手柄.所以我在质疑游戏手柄API为何限制我 - 这是游戏手柄API或XInput的设计吗?

8个控制器已连接

Mat*_*hel 8

好的,我已经做了一些广泛的研究和测试,并对回答这个问题感到有信心.

Gamepad API规范没有定义控制器的限制,您可以在上面的链接文档中看到.

在实践中,navigator.getGamepads()返回:

  • 在Chrome中,有GamepadList4个未定义的值,包含4个Gamepad对象.
  • 在Edge中,一个4个未定义值的对象数组,填充4个Gamepad对象.
  • 在Firefox中,长度为零的数组,填充了任意数量的Gamepad对象.

XInput似乎不是可能影响实现的罪魁祸首,因为我能够在Firefox中混合使用超过4的输入,而这些输入在其他浏览器中并未得到认可.

我认为这可以归结为Chrome和Edge背后的引擎的不良实现,我只能希望他们看到光和Firefox保持其实现灵活性.理想情况下,该标准明确规定了法律.