input-gamepads.js
TypeScript icon, indicating that this package has built-in type declarations

3.0.4 • Public • Published

inputs-gamepad.js

Wrapper for HTML5 Gamepad API. Not event-based.

Developed and tested with an xbox360 wired controller on Chrome and Firefox.

How To

Browser

  1. include ./dist/index.iife.js in HTML
<script src="vendor/input-gamepads.js/dist/index.iife.js"></script>
  1. reference global
const Gamepads = window.inputGamepads.Gamepads;
const Buttons = window.inputGamepads.Buttons;
const Axes = window.inputGamepads.Axes;

Node

  1. install
npm install input-gamepads.js --save
  1. import
const { Gamepads, Buttons, Axes } = require("input-gamepads.js");
import { Gamepads, Buttons, Axes } from 'input-gamepads.js';

Use

Loop:

// initialization
const gamepads = new Gamepads();
 
// main loop
function main(){
  // get inputs
  var button_is_currently_up = gamepads.isUp(Buttons.A);
  var button_is_currently_down = gamepads.isDown(Buttons.X);
  var button_is_currently_up_but_wasnt_last_frame = gamepads.isJustUp(Buttons.B);
  var button_is_currently_down_but_wasnt_last_frame = gamepads.isJustDown(Buttons.Y);
  var axis_value = gamepads.getAxis(Axes.LSTICK_H);
  var axis_crossed_threshold_like_button = gamepads.axisPast(Axes.LSTICK_H, 0.5, 1);
  var the_first_four_axis_values_as_a_4d_vector = gamepads.getAxes(0,4);
  var dpad_as_a_2d_vector = gamepads.getDpad();
  
  // do your code
  
  // update gamepads (clears arrays, polls connections, etc.)
  gamepads.update();
}

All input functions take player as an optional final argument. If player isn't provided, all controllers will contribute (i.e. a button will be considered down if any controller has them down, an axis will be considered as the sum of the axis on each controller).

Package Sidebar

Install

npm i input-gamepads.js

Weekly Downloads

0

Version

3.0.4

License

MIT

Unpacked Size

51.8 kB

Total Files

6

Last publish

Collaborators

  • seansleblanc