Licence
MIT
Version
0.13.1
Deps
1
Size
20 kB
Vulns
0
Weekly
1.7K
@gjsify/gamepad
The W3C Gamepad API for GJS, backed by libmanette 0.2. Provides navigator.getGamepads() polling, Gamepad, GamepadButton, gamepadconnected/gamepaddisconnected events, and dual-rumble haptics via GamepadHapticActuator. The Manette monitor is lazily initialised and degrades gracefully when libmanette is unavailable.
Part of the gjsify project — Node.js and Web APIs for GJS (GNOME JavaScript).
Installation
gjsify install @gjsify/gamepad
# npm or yarn also work (e.g. adding it to an existing project):
npm install @gjsify/gamepad
yarn add @gjsify/gamepadUsage
import { GamepadManager, GamepadEvent } from '@gjsify/gamepad';
// Start monitoring connected gamepads
const manager = new GamepadManager();
window.addEventListener('gamepadconnected', (e) => {
const event = e as GamepadEvent;
const pad = event.gamepad;
console.log(`Connected: ${pad.id}, buttons: ${pad.buttons.length}`);
});
window.addEventListener('gamepaddisconnected', (e) => {
console.log(`Disconnected: ${(e as GamepadEvent).gamepad.id}`);
});
// Poll the current state
const gamepads = navigator.getGamepads();
for (const pad of gamepads) {
if (pad) console.log(pad.axes, pad.buttons.map((b) => b.pressed));
}License
MIT