A universal input manager for web games and interactive art. Built in Typescript. Loosely inspired by Unity's Input System. Needs a better name.
Built-in support for the following device types:
- Gamepad
- Keyboard
- Pointer (mouse, touch, pen)
- On-screen virtual stick
Install via npm.
npm install @brianchirls/game-inputAnd import each class individually
import Gamepad from '@brianchirls/game-input/devices/Gamepad';
import Action from '@brianchirls/game-input/Action';Or load directly from CDN
<script src="https://unpkg.com/@brianchirls/game-input"></script>And access classes on the global GameInput object.
const myGamepad = new GameInput.Gamepad();import Gamepad from '@brianchirls/game-input/devices/Gamepad';
import Keyboard from '@brianchirls/game-input/devices/Keyboard';
import DPadComposite from '@brianchirls/game-input/controls/DPadComposite';
import Action from '@brianchirls/game-input/Action';
/**
 * devices
 */
const gamepad = new Gamepad();
const keyboard = new Keyboard();
/**
 * get controls from each device
 */
const leftStick = gamepad.getControl('leftStick');
// It takes four keys to go in four directions
const kbdWASD = new DPadComposite({
	up: kbd.getControl('KeyW'),
	left: kbd.getControl('KeyA'),
	down: kbd.getControl('KeyS'),
	right: kbd.getControl('KeyD')
});
/**
 * Combine controls into actions.
 * The action will respond to whichever control is used.
 */
const moveAction = new Action({
	bindings: [
		leftStick,
		kbdWASD
	]
});
/**
 * Access action values inside update loop.
 */
function update() {
	// gamepad is a polling device and won't work unless
	// we update on every frame
	gamepad.update();
	const [x, y] = moveAction.value;
	// ... game logic goes here ...
	requestAnimationFrame(update);
}
update();MIT License © Brian Chirls