首页 > 解决方案 > 监听游戏手柄连接和输入

问题描述

我想为我的 Web 应用程序提供游戏手柄支持。此应用程序是一个套接字客户端(使用 socket.io),它还应该能够处理游戏手柄输入。

因此,当通过 USB 或蓝牙插入游戏手柄时,我想触发一个事件,与输入相同。我希望Gamepad API能解决它。不幸的是,它没有。

我创建了这个例子

$(document).ready(() => {
  window.addEventListener("gamepadconnected", e => {
    console.log("connected gamepad");
  });

  window.addEventListener("gamepaddisconnected", e => {
    console.log("disconnected gamepad");
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

我插入了我的 Xbox360 控制器,但不幸的是没有触发任何事件。我错过了什么吗?

我在 Manjaro Linux(64 位)上使用 Chrome 版本 76.0.3809.132(官方构建)

navigator.getGamepads()在控制台中运行时,我得到了这个结果GamepadList {0: null, 1: null, 2: null, 3: null, length: 4}

顺便说一句。当然,我的控制器正在开发其他应用程序,例如游戏 :)


更新

我安装了 Firefox 68.0.1(64 位)并且它工作正常......但 Chromium 似乎在挣扎

标签: javascriptgamepad-api

解决方案


Gamepad API 上有很多过时的信息。我最近发表了一篇专门讨论新 API 的文章。对于具体的问题:正如前面所指出的,您很可能需要通过按下游戏手柄的任何按钮来唤醒您的游戏手柄。


推荐阅读