问题标签 [gamepad-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
356 浏览

javascript - Gamepad API 未在 Windows server 2012 上的 Chrome 中检测到 Xbox 控制器

我正在尝试使用游戏手柄 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。

0 投票
1 回答
385 浏览

javascript - 监听游戏手柄连接和输入

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

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

我创建了这个例子

我插入了我的 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 似乎在挣扎

0 投票
2 回答
413 浏览

bluetooth - 如何查看从蓝牙设备传到计算机的所有原始数据?

我有一个带 giroscope 的游戏手柄,可与 Nintendo Switch 配合使用,但 windows 没有这样的功能,但我认为游戏手柄无论如何都会从 giroscope 发送信息,但 windows 不响应它。

0 投票
1 回答
51 浏览

javascript - 如何区分两个相同类型的游戏手柄?

我有两个通过 USB 连接的游戏手柄,它们的类型完全相同。当它们具有相同的字段时,我如何区分它们?我可以使用索引,但是当我将它们再次连接到计算机时会发生什么,这些索引可能会被交换(这些游戏手柄具有不同的功能)。另外我认为索引可能会在运行时被交换。有UUID之类的吗?

在此处输入图像描述

0 投票
0 回答
98 浏览

android - 1.12更新后如何更换AndroidTouch+Keyprocessor(FlutterView弃用)

我需要修复这个 GitHub 问题,所以我自己对错误进行了一些挖掘。我有点卡住了,但这是我所拥有的:

在 Flutter 1.12 更新后,使用FlutterView的 API 现在已弃用,应使用新的嵌入包。主要是,平台特定的 java/android/kotlin 代码应该通过DartExecutor或通过方法 channels的回调与 Flutter 对话。但是,我找不到有关如何使用 dart 插件添加新按钮调用的信息。

我理解这段代码的方式(也在下面),Flutter 使用的渲染器被一个非常相似的渲染器覆盖,它将处理从游戏手柄的按钮按下的功能添加到原始 Flutter 渲染器的按钮按下处理。但是,这将不再起作用,因为为此所需的原始 FlutterView 自 1.12 以来已弃用,并且是获取viewand{key|touch}ProcessorField对象所必需的。

Flutter 1.12 之后如何实现集成游戏手柄按键?

0 投票
1 回答
675 浏览

google-chrome - 使用 Xbox One 控制器监听游戏手柄按钮事件

我想在 xbox one 控制器上收听按钮按下事件,但似乎对此的许多解决方案都是实验性的并且正在开发中。我发现的大多数显示如何从游戏手柄接收输入的示例都使用轮询方法来重复检查游戏手柄的事件,但对于我的应用程序来说,我可以记录按钮按下的确切时间是至关重要的,而我没有想要在扫描游戏手柄之间错过按钮按下。

我可以使用 Firefox 或 Chrome,但我还没有在这两种浏览器中使用以下解决方案:

Firefox:根据此页面https://www.chromestatus.com/feature/5989275208253440#,“游戏手柄按钮和轴事件在 Firefox 中实现在 flag 后面dom.gamepad.non_standard_events.enabled”。我已在 Firefox 中启用此功能,但收听状态更改事件(如https://www.smashingmagazine.com/2015/11/gamepad-api-in-web-games/所述)仍然无效。

Chrome:这个 github 页面https://github.com/MozillaReality/gamepad-plus/blob/master/README.md看起来它可以扩展 Gamepad API,所以我也可以在 Chrome 中监听按钮按下事件,但是当我尝试使用npm run build我得到错误node_modules_missing并且构建失败将JavaScript编译为独立模块。

我很感激有关如何启用.addEventListener('gamepadbuttondown'... 在这些浏览器中的任何一个中工作的建议。

0 投票
1 回答
135 浏览

html - HTML5 GamePad API 返回错误或卡住的轴

我遇到了一个问题,当我使用 html5 游戏手柄 API 并偶尔轮询控制器触发值的 Gamepad.axes 时(通常是当我给控制器一堆随机输入时)轴数组中的值会卡住。就像在 gamepad.axes 中一样,即使没有触摸控制器,其中一个触发器也会被完全按下。

堆:

角 6.1

节点 12

火狐 74

我尝试了什么:我尝试了很多可能与我们的代码相关的事情,我尝试了一些主要的事情:

  1. 使用手柄时间戳检查是否卡住

这将起作用,但也会导致其他问题。时间戳卡在某个位置时不会更新,但是当用户按住其中一个触发器时它也不会更新,从而导致误报它被卡住了。

  1. 看看我是否可以强制数组更新

gamepad api 还没有内置方法,并且轴数组是不可变的。

  1. 提高轮询率

我不需要非常高的轮询率,因此将其设置为每 100 毫秒,但将其降低到 8 毫秒似乎已经解决了问题!唯一的问题是我不知道为什么,我更频繁地点击 gamepad.axes 数组,但我想不出任何原因会导致数组比以前更准确地更新。

这有什么原因吗?谢谢!

0 投票
2 回答
2128 浏览

javascript - 如何使用 Gamepad API 检测按钮按下?

我正在尝试编写一个网页,我可以在其中检测 Xbox 控制器上的按钮按下,并根据按下的按钮向用户显示布尔值。现在,我可以检测到正在连接的控制器并将其显示为字符串。文档说在这里使用此代码来检测按钮按下:

但 Chrome 在使用时显示此错误:

该错误与.pressed上述代码行的一部分有关。所有文档都在 Mozilla 网站上,所以我假设他们在编写教程时使用了 FireFox。

我最理想的结果是:

该代码将在屏幕上打印一个布尔值,供用户在按下按钮时查看。这是我第一次使用 JavaScript 和 HTML。如果你能让你的答案对菜鸟友好,那就太好了!Gamepad APIGamepadButton的文档

0 投票
0 回答
99 浏览

uwp - 如何在 uwp 中接收来自 Xbox 游戏手柄的消息?

我知道可以通过下面的方法获取按键状态Windows.Gaming.Input,但是获取不到游戏手柄发送的USB指令,因为游戏手柄有一些非标准功能,比如多键映射,需要获取当前的映射。

GipGameControllerProvider.SendReceiveMessage看起来像我想要的,但调用它会得到一个错误:不支持请求(HResult 的异常:0x80070032)。

这是一个相关的问题:How to communication with Xbox one controller in uwp

感谢您的阅读,祝您有美好的一天!

0 投票
1 回答
166 浏览

javascript - Navigator.getGamepads() 不会返回相同类型游戏手柄的不同实例

正如标题所说,我没有为同一类型的控制器获得 2 个不同的游戏手柄(是的,我可以在控制面板中看到它们joy.cpl

即使用 Windows 我可以在joy.cpl以下列表中看到:

在 Chrome (v84) 中,我只得到这个:

如果有相同的类型,我试图调查如何区分它们,但结果是我什至没有得到它们......

有什么办法可以拿到第26B Controller吗?

编辑 在使用较新的 Chrome 版本进行测试后,我可以确认它现在正在工作......所以可能是旧版本中的一个问题,它已经修复了 :)