Skip to content

sightsdev/gamepad.js

 
 

Repository files navigation

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.

This fork fixes an issue where the library would not work on modern browsers, thanks to @khanbabaeifanap. Original library by @kallaspriit.

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.

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 95.7%
  • HTML 4.3%