Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Library for accessing gamepads in modern browsers.
JavaScript CSS

README.md

HTML5-JavaScript-Gamepad-Controller-Library

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

Development

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.

Something went wrong with that request. Please try again.