手柄 API 未在 Windows 服务器 2012 上的 Chrome 中检测到 Xbox 控制器

Gamepad API not detecting Xbox controller in Chrome on Windows server 2012

我正在尝试使用游戏手柄 API 连接到 google chrome 中的 Xbox 控制器。我 运行 遇到一个问题,即在插入控制器并按下控制器上的一些按钮后,navigator.GetGamepads() 没有 return 其数组中的任何游戏手柄对象,所有值都是空。

只有在 Windows Server 2012 上的 Chrome 上才会出现这种情况。我已经尝试过 Firefox,并且可以正常检测到游戏手柄。 运行 在 Windows 8.1、Server 2016 和 Windows 10 chrome 上正常检测游戏手柄。

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

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

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

在 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