Skip to content
Find file
Fetching contributors…
Cannot retrieve contributors at this time
81 lines (62 sloc) 2.13 KB


Library for accessing gamepads in modern browsers.

  • Works with modern browsers and has mappings to many controllers.
  • Very easy to add mappings to new controllers.
  • Lightweight.
  • Includes settings for deadzone and maximization.
  • Simple event-based system.
  • Includes state change events.
  • Minimal working example provided.
  • Does not depend on any other library.
  • Includes minimized version.

How to use

  • Include the library.
    <script src="gamepad.js"></script>
  • Create an instance of the Gamepad class.
    var gamepad = new Gamepad();
  • Bind to the events
    gamepad.bind(Gamepad.Event.CONNECTED, function(device) {
        // a new gamepad connected

    gamepad.bind(Gamepad.Event.DISCONNECTED, function(device) {
        // gamepad disconnected

    gamepad.bind(Gamepad.Event.UNSUPPORTED, function(device) {
        // an unsupported gamepad connected (add new mapping)

    gamepad.bind(Gamepad.Event.BUTTON_DOWN, function(e) {
        // e.control of gamepad e.gamepad pressed down

    gamepad.bind(Gamepad.Event.BUTTON_UP, function(e) {
        // e.control of gamepad e.gamepad released

    gamepad.bind(Gamepad.Event.AXIS_CHANGED, function(e) {
        // e.axis changed to value e.value for gamepad e.gamepad

    gamepad.bind(Gamepad.Event.TICK, function(gamepads) {
        // gamepads were updated (around 60 times a second)
  • Initilize the gamepads
    if (!gamepad.init()) {
        // Your browser does not support gamepads, get the latest Google Chrome or Firefox
  • Try the working example in index.html for more tips


The library is built using grunt and node.js. Have them installed according to their installation guidelines.

The build sequence consists of the following tasks:

  • 'format', executing js-beautify (according to .jsbeautifyrc) and jshint (according to .jshintrc)
  • 'compile', executing UglifyJS2
  • 'document', using yuidoc

The default grunt task executes them in the given order.

Jump to Line
Something went wrong with that request. Please try again.