【问题标题】:Gamepad API not detecting Xbox controller in Chrome on Windows server 2012Gamepad API 未在 Windows Server 2012 上的 Chrome 中检测到 Xbox 控制器
【发布时间】:2019-09-03 21:13:26
【问题描述】:

我正在尝试使用游戏手柄 API 连接到谷歌浏览器中的 Xbox 控制器。我遇到了一个问题,在插入控制器并按下控制器上的某些按钮后,navigator.GetGamepads() 未返回其数组中的任何游戏手柄对象,所有值均为空。

这仅发生在 Windows Server 2012 上的 Chrome 上。我已经尝试过 Firefox,并且可以正常检测到游戏手柄。在 Windows 8.1、Server 2016 和 Windows 10 chrome 上运行正常检测游戏手柄。

我尝试将 Xbox 驱动程序从我的 Windows 8.1 计算机复制到服务器 2012,但 navigator.GetGamepads() 仍然没有返回任何内容。我将 Windows 8.1 Xbox 驱动程序降级为在 Server 2012 上运行的相同驱动程序版本,但在 Windows 8.1 上一切正常。

查看 chrome://device-log/ 时,我可以看到 360 控制器在插入和拔出时显示为设备,因此 chrome 可以看到它,但由于某种原因似乎没有将其解析为游戏手柄。

关于什么可能导致 navigator.GetGamepads() 仅在 Windows Server 2012 上运行的 chrome 上失败的任何想法?我一直在使用 Chrome 76。

【问题讨论】:

  • XInput 的安装版本是多少?在 Windows Server 2012 和 Windows 8 上,Chrome 会查找 xinput1_4.dll。
  • @nondebug 将 xinput1_4.dll 从 windows 8.1 复制到 windows server 2012 system32 文件夹解决了我们的问题。 navigator.GetGamepads() 现在可以在 xbox 控制器上使用。 Server 2012 默认只有 xinput1_3.dll。谢谢您的帮助!如果您想将您的评论复制到答案,我可以将其标记为解决方案。再次感谢。
  • 很高兴你成功了!

标签: javascript google-chrome windows-server-2012 gamepad-api


【解决方案1】:

在 Windows Server 2012、Windows 8 和更高版本上,Chrome 会查找 xinput1_4.dll。在早期版本中,它会查找 xinput9_1_0.dll。

在此处查看 XInputDllFileName:

https://cs.chromium.org/chromium/src/device/gamepad/gamepad_platform_data_fetcher_win.cc?l=74

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 2016-08-25
    • 1970-01-01
    • 2016-04-23
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    相关资源
    最近更新 更多