This feature is not Baseline because it does not work in some of the most widely-used browsers.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
The read-only XRInputSource property gamepad returns a Gamepad object describing the state of the buttons and axes on the XR input source, if it is a gamepad or comparable device. If the device isn't a gamepad-like device, this property's value is null.
The Gamepad instance returned behaves as described by the Gamepad API. However, there are a few things to note:
Gamepad instances belonging to XRInputSource are not included in the array returned by navigator.getGamepads(). Gamepads are strictly associated with the WebXR hardware and are not general-purpose gaming devices.Gamepad.id is an empty string ("")Gamepad.index is -1
Gamepad.connected is true until the XRInputSource is removed from the list of active XR input sources or the XRSession is ended.Gamepad.axes represents an axis of a touchpad, the value is 0 when the associated GamepadButton.touched property is false.Gamepad.mapping returns "xr-standard".for (const source of frame.session.inputSources) {
const gamepad = source.gamepad;
if (gamepad) {
if (gamepad.buttons[2].pressed) {
// do something
}
}
}
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
gamepad |
79 | 79 | No | 66 | No | 79 | No | 57 | No | 11.2 | No | No |
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/XRInputSource/gamepad