The Gamepad API is a way for developers to access and respond to signals from gamepads and other game controllers in a simple, consistent way. It contains three interfaces, two events and one specialist function, to respond to gamepads being connected and disconnected, and to access other information about the gamepads themselves, and what buttons and other controls are currently being pressed.
Interfaces
Gamepad
- Represents a gamepad/controller connected to the computer.
GamepadButton
- Represents a button on one of the connected controllers.
GamepadEvent
- The event object representing events fired that are related to gamepads.
Experimental Gamepad extensions
GamepadHapticActuator
- Represents hardware in the controller designed to provide haptic feedback to the user (if available), most commonly vibration hardware.
See also the extensions to the Gamepad interface, for features that allow you to access the above information.
Extensions to other interfaces
Navigator
Navigator.getGamepads()
- An extension to the
Navigator
object that returns an array ofGamepad
objects, one for each connected gamepad.
Window events
Window.ongamepadconnected
- Represents an event handler that will run when a gamepad is connected (when the
gamepadconnected
event fires). Window.ongamepaddisconnected
- Represents an event handler that will run when a gamepad is disconnected (when the
gamepaddisconnected
event fires).
Tutorials and guides
Specifications
Specification | Status | Comment |
---|---|---|
Gamepad Extensions | Editor's Draft | Defines the Experimental Gamepad extensions. |
Gamepad The definition of 'The Gamepad API specification' in that specification. |
Working Draft | Initial definition |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Gamepad | Chrome
Full support
35
| Edge Full support ≤18 | Firefox
Full support
29
| IE No support No | Opera
Full support
22
| Safari Full support 10.1 | WebView Android No support No | Chrome Android
Full support
35
| Firefox Android Full support 32 | Opera Android
Full support
22
| Safari iOS Full support 10.3 | Samsung Internet Android
Full support
4.0
|
Gamepad() constructor | Chrome Full support 35 | Edge Full support 12 | Firefox
Full support
29
| IE No support No | Opera Full support 22 | Safari Full support 10.1 | WebView Android No support No | Chrome Android Full support 35 | Firefox Android Full support 32 | Opera Android Full support 22 | Safari iOS Full support 10.3 | Samsung Internet Android Full support 4.0 |
axes | Chrome
Full support
35
| Edge Full support 12 | Firefox
Full support
29
| IE No support No | Opera
Full support
22
| Safari Full support 10.1 | WebView Android No support No | Chrome Android
Full support
35
| Firefox Android Full support 32 | Opera Android
Full support
22
| Safari iOS Full support 10.3 | Samsung Internet Android
Full support
4.0
|
buttons | Chrome
Full support
35
| Edge Full support 12 | Firefox
Full support
29
| IE No support No | Opera
Full support
22
| Safari Full support 10.1 | WebView Android No support No | Chrome Android
Full support
35
| Firefox Android Full support 32 | Opera Android
Full support
22
| Safari iOS Full support 10.3 | Samsung Internet Android
Full support
4.0
|
connected | Chrome
Full support
35
| Edge Full support 12 | Firefox
Full support
29
| IE No support No | Opera
Full support
22
| Safari Full support 10.1 | WebView Android No support No | Chrome Android
Full support
35
| Firefox Android Full support 32 | Opera Android
Full support
22
| Safari iOS Full support 10.3 | Samsung Internet Android
Full support
4.0
|
hand | Chrome No support No | Edge No support 15 — 79 | Firefox
Full support
Yes
| IE No support No | Opera No support No | Safari No support No | WebView Android No support No | Chrome Android No support No | Firefox Android No support No | Opera Android No support No | Safari iOS No support No | Samsung Internet Android No support No |
hapticActuators | Chrome No support No | Edge No support 15 — 79 | Firefox
Full support
Yes
| IE No support No | Opera No support No | Safari No support No | WebView Android No support No | Chrome Android No support No | Firefox Android No support No | Opera Android No support No | Safari iOS No support No | Samsung Internet Android No support No |
id | Chrome
Full support
35
| Edge Full support 12 | Firefox
Full support
29
| IE No support No | Opera
Full support
22
| Safari No support No | WebView Android No support No | Chrome Android
Full support
35
| Firefox Android Full support 32 | Opera Android
Full support
22
| Safari iOS No support No | Samsung Internet Android
Full support
4.0
|
index | Chrome
Full support
35
| Edge Full support 12 | Firefox
Full support
29
| IE No support No | Opera
Full support
22
| Safari Full support 10.1 | WebView Android No support No | Chrome Android
Full support
35
| Firefox Android Full support 32 | Opera Android
Full support
22
| Safari iOS Full support 10.3 | Samsung Internet Android
Full support
4.0
|
mapping | Chrome
Full support
35
| Edge Full support 12 | Firefox
Full support
29
| IE No support No | Opera
Full support
22
| Safari Full support 10.1 | WebView Android No support No | Chrome Android
Full support
35
| Firefox Android Full support 32 | Opera Android
Full support
22
| Safari iOS Full support 10.3 | Samsung Internet Android
Full support
4.0
|
timestamp | Chrome
Full support
35
| Edge Full support 12 | Firefox
Full support
29
| IE No support No | Opera
Full support
22
| Safari Full support 10.1 | WebView Android No support No | Chrome Android
Full support
35
| Firefox Android Full support 32 | Opera Android
Full support
22
| Safari iOS Full support 10.3 | Samsung Internet Android
Full support
4.0
|
vibrationActuator | Chrome Full support 68 | Edge Full support 79 | Firefox No support No | IE No support No | Opera Full support 55 | Safari No support No | WebView Android No support No | Chrome Android Full support 68 | Firefox Android No support No | Opera Android Full support 48 | Safari iOS No support No | Samsung Internet Android Full support 10.0 |
Legend
- Full support
- Full support
- No support
- No support
- Compatibility unknown
- Compatibility unknown
- Experimental. Expect behavior to change in the future.
- Experimental. Expect behavior to change in the future.
- Non-standard. Expect poor cross-browser support.
- Non-standard. Expect poor cross-browser support.
- Deprecated. Not for use in new websites.
- Deprecated. Not for use in new websites.
- See implementation notes.
- See implementation notes.
- User must explicitly enable this feature.
- User must explicitly enable this feature.
- Requires a vendor prefix or different name for use.
- Requires a vendor prefix or different name for use.
See also
- The Gamepad API by Ted Mielczarek and Robert Nyman
- Simple API demo page (source)