Gamepad/Joystick APIs across operating systems, APIs, manufacturers, and browsers are extremely inconsistent. In order to provide a more functional API on top of the platform data, gamepad.js tries to know about all devices and map them into a nice standard gamepad style.
Additionally, it provides images of the buttons for help/explanatory text. So, rather than saying something generic like "Press Button 2", you can provide a picture of that button on the gamepad the player is using.
Add
<script src=".../gamepad.js" type="text/javascript"></script>
to your html.
Check if the browser supports gamepads via Gamepad.supported. If
that's true, get gamepad data each window.requestAnimationFrame via
Gamepad.getStates(). getStates returns an array of gamepads that the
user has interacted with (pressed a button at least once). Data
available on each gamepad detailed below.
Each item in the array contains:
Axes, in the range [-1..1]:
.leftStickX
.leftStickY
.rightStickX
.rightStickY
Buttons, in the range [0..1]:
.faceButton0
.faceButton1
.faceButton2
.faceButton3
.leftShoulder0
.rightShoulder0
.leftShoulder1
.rightShoulder1
.select
.start
.leftStickButton
.rightStickButton
.dpadUp
.dpadDown
.dpadLeft
.dpadRight
User identifier, which can be displayed to the user to identify the player+controller (e.g. "Xbox 360 #1")
.name
The stick and shoulder data are dead-zoned in a 2D fashion, according to recommended tolerances.
There are also additional access points for getting data:
Gamepad.getState(index) which retrieves only a particular gamepad, and
Gamepad.getPreviousStates() and Gamepad.getPreviousState(index),
which retrieve the state of the gamepad(s) from the previous frame.
These can be useful for edge-triggered transitions (i.e. button-went-up
as opposed to button-is-up).
.image[button_name] is the URL of an image that can be used to
communicate with the user. For example .image['faceButton0'] will be a
picture of a green "A" button if the connected device is an Xbox 360
controller.
For the axes, the names are leftStick, and rightStick, rather than
separate items for X/Y. There is also a generic dpad image (with no
direction specified).
Scott Graham (@h4kr, http://h4ck3r.net/)
Xbox 360 Icon Pack by Jeff Jenkins (@sinnix, http://sinnix.net/downloads/?did=1)