You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Electron中绕过navigator.getGamepads交互要求的方案问询

解决Electron启动时直接获取Gamepad状态的问题

核心方案:添加Chromium命令行开关绕过用户交互限制

Chromium(Electron基于它)的Gamepad API用户交互限制可以通过命令行开关直接禁用,完全不需要修改硬件或做模拟交互的粗糙操作。在你的Electron主进程初始化阶段添加以下配置:

const { app } = require('electron');

// 禁用Gamepad API的用户交互强制要求
app.commandLine.appendSwitch('disable-features', 'GamepadUserInteractionRequired');

app.whenReady().then(() => {
  // 初始化窗口等应用逻辑
});

如果上述开关在你的Electron版本中不生效,可以尝试另一个旧版兼容的开关:

app.commandLine.appendSwitch('enable-gamepad-no-user-gesture-required');

为什么这个方案可行?

这个开关直接关闭了Chromium为Gamepad API设置的安全校验——因为你的场景是完全可控的(自己掌控电脑、应用和摇杆),所以完全不需要顾虑原本的安全风险。应用启动后就能直接调用navigator.getGamepads()获取所有已连接的手柄状态,包括按钮和旋钮的实时数据。

备选方案:直接通过Node.js访问USB/HID硬件

如果出于某些原因命令行开关无法使用,你可以在Electron主进程中使用Node.js的USB/HID库(比如usb或node-hid)直接读取摇杆的硬件数据。这种方式完全绕过了浏览器的Gamepad API,需要你根据自定义摇杆的通信协议来解析数据,但因为你能掌控摇杆的编程,适配成本会很低。

内容的提问来源于stack exchange,提问作者Joe Jankowiak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 14:17:38