Source: controls/Gamepad.js

/**
 * Gamepad input handling
 * @class Gamepad
 */
export class Gamepad {
  get gamepads() {
    return navigator.getGamepads ? navigator.getGamepads() : navigator.webkitGetGamepads || [];
  }

  get(id) {
    const gamepad = this.gamepads[id];
    return gamepad
      ? {
          axes: gamepad.axes.map((value) => (Math.abs(value) >= 0.05 ? value : 0)),
          buttons: gamepad.buttons.map((button) =>
            typeof button === "number" ? { pressed: button === 1, touched: button === 1, value: button } : button,
          ),
          timestamp: gamepad.timestamp,
        }
      : null;
  }
}