@footgun/input-web
v0.6.0
Published
An efficient, pollable interface for checking the state of keyboards, mice, and gamepads in a browser.
Maintainers
Readme
game-input
Provides an efficient, pollable interface for checking the state of keyboard keys, mouse buttons, and gamepad buttons in a web browser.
Web Example
import webInput from '@footgun/input-web'
const LEFT_MOUSE_BUTTON = 1
const MIDDLE_MOUSE_BUTTON = 2
const RIGHT_MOUSE_BUTTON = 3
const Input = webInput({
// whichever canvas element you want mouse events relative to
canvas: document.querySelector('canvas'),
bindings: [
// define all of the mouse and keyboard events you wish to listen for here
{
name: 'walk_left',
event: 'key',
value: 'KeyS',
},
{
name: 'walk_right',
event: 'key',
value: 'KeyF',
},
{
name: 'charge_arrow',
event: 'mouse',
value: MIDDLE_MOUSE_BUTTON
},
/*
{
name: 'fire',
event: 'gamepad',
gamepadIndex: 0,
buttonIndex: 4
},
// you can use the analog axes as digital values as well:
{
name: 'down',
event: 'gamepad',
gamepadIndex: 0,
isAnalog: true,
// 0, 1 <-- left analog stick x, y
// 2, 3 <-- right analog stick x, y
analogAxisId: 0,
// -1 for left or up, 1 for right or down
analogAxisDirection: -1,
// how much dead zone to allow before converting from analog to digital.
// defaults to 0.1
analogAxisDeadZone: 0.2,
}
*/
]
})
// runs every frame
function gameLoop () {
// should be called at the beginning of every frame
Input.pollState()
// query the input state here, perform game logic and rendering:
console.log(Input.down('walk_left')) // true when the key is first pushed down
console.log(Input.held('walk_left')) // true while the key is pushed and held down
console.log(Input.up('walk_left')) // true when the key is released
console.log('mouse position:', Input.Mouse.position[0], Input.Mouse.position[1])
requestAnimationFrame(gameLoop)
}
requestAnimationFrame(gameLoop) // start the game
All values for keyboard keys are from https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values
