如何在javascript中从控制器获取键码?

Den*_*nis 4 javascript controller keycode xbox360

我确实买了一个便宜的控制器(Windows 认为它​​是 xbox 360 控制器),我想从控制器获取一些 javascript 按键事件。我确实尝试了一些在线键码测试程序,例如http://keycode.info/,但他们没有回复。我的问题是如何从 javascript 中的控制器获取键码。

wal*_*tes 5

游戏手柄的按键不由事件处理。它是存储在以下位置的对象属性:

navigator.getGamepads()[$1].buttons[$2].pressed; 
Run Code Online (Sandbox Code Playgroud)

$1是一个整数,从 0 到 3,因此您最多可以控制 4 个游戏手柄。
$2一个整数,在我的例子中是从 0 到 16 ;

所以,我们必须自己检查。

navigator.getGamepads()返回一个Gamepad List,如下所示:

{0: null, 1: null, 2: null, 3: null, length: 4}
Run Code Online (Sandbox Code Playgroud)

如果连接了控制器,它看起来像这样:

{0: Gamepad, 1: null, 2: null, 3: null, length: 4}
Run Code Online (Sandbox Code Playgroud)

第一个元素是 游戏手柄对象,它看起来像这样:

{
    axes: [0, 0, 0, 0], //these are directions keys;
    buttons: [GamepadButton, GamepadButton, ...] //these are buttons;
    connected: true, 
    id: "ACGAM R1", 
    index: 0,
}
Run Code Online (Sandbox Code Playgroud)

按钮列表中的元素是GamepadButton对象,它看起来像这样:

{pressed: false, value: 0}
Run Code Online (Sandbox Code Playgroud)

如果您使用Google Chome ,您可以通过在控制台navigator.getGamepads()中输入dev -toolsCtrl++打开它)来检查所有这些信息。Shifti

如果您手头有游戏手柄,可以使用以下命令进行测试:

navigator.getGamepads()[$1].buttons[$2].pressed; 
Run Code Online (Sandbox Code Playgroud)
{0: null, 1: null, 2: null, 3: null, length: 4}
Run Code Online (Sandbox Code Playgroud)