- Synchronous keyboard, mouse and gamepad input for fixed step applications.
- Multi-browser support, compatible with mobile devices and and touchscreen events.
- Currently supports input from: Mouse, Keyboard, Gamepad, Touchscreen
- Detailed API docs available on the docs folder of the project.
- Demo of the library running from the examples directory.
- TSDoc documentation available.
- Browser events fire at a different rate than your application logic/render code.
- This library allow to access input state for variable frame rate scenarios.
- Skip the need to process out of sync browser callbacks.
- Get from NPM using
npm install syncinput --save-prod - Here is a small code example showing the basic functionality of the library.
import{Keyboard,Keys,Mouse,MouseButton,Touch,Gamepad,GamepadButton}from'syncinput';//Initializationmouse=newMouse();keyboard=newKeyboard();touch=newTouch();gamepad=newGamepad();[...]//Inside of the logic/rendering loopmouse.update();keyboard.update();console.log("Position X:"mouse.position.x+" Y:"+mouse.position.y);console.log("Delta X:"mouse.delta.x+" Y:"+mouse.delta.y);console.log("Scroll wheel:"mouse.wheel);if(touch.touchJustPressed(0)){console.log("First touch point just pressed.");}if(touch.touchJustReleased(1)){console.log("Second touch point just released.");}if(mouse.buttonPressed(MouseButton.LEFT)){console.log("Mouse left is pressed");}if(mouse.buttonPressed(MouseButton.LEFT)){console.log("Mouse left is pressed");}if(keyboard.keyPressed(Keys.W)||gamepad.buttonPressed(GamepadButton.UP)){console.log("W is pressed or Gamepad UP is pressed");}if(keyboard.keyJustPressed(Keys.W)){console.log("W was just pressed");}if(keyboard.keyJustReleased(Keys.W)){console.log("W was just released");}position {x, y}-Actual mouse positiondelta {x, y}- Mouse delta since last time update() was calledwheel- Mouse wheel valuebuttonPressed(button)- Check if mouse button is pressed (touchscreen tap same as left click)buttonJustPressed(button)- Check if mouse button was just pressedbuttonJustReleased(button)- Check if mouse button was just releasedsetCanvas(canvas)- Attach canvas to mouse object for position coordinated to be calculated relatively to the canvas.insideCanvas()- Check if mouse is inside attached canvassetLock(value)- Set mouse lock on/off.
keyPressed(button)- Check if key is currently pressedkeyJustPressed(button)- Check if key was just pressedkeyJustReleased(button)- Check if key was just releasedreset()- Reset all keys
points[]- List of touch points and their respective status.pan(points)- Multi-touch pan, retuns the average position and movement delta.pinchZoom()- Pinch to zoom (of the first two touch points) delta.touchPressed(point)- Check if touch point is pressedtouchJustPressed(point)- Check if touch point was just pressedtouchJustReleased(point)- Check if touch point was just released
Gamepad input is only available in secure context using HTTPS.
buttonPressed(button)- Check if gamepad button is pressedbuttonJustPressed(button)- Check if gamepad button was just pressedbuttonJustReleased(button)- Check if gamepad button was just releasedgetAxis(index)- Get axial input value from its index from -1 to 1.getAnalogueButton(index)- Get analog button from 0 to 1.getGamepads()- Get list of available gamepads.setGamepad(gamepad)- Set wich gamepad to use.


