Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tentone/syncinput
Synchronous keyboard and mouse input for web applications. Useful for games and canvas / webgl synchronous content in web applications.
https://github.com/tentone/syncinput
canvas game-controller gamepads synchronous web-game-dev webgl
Last synced: 3 months ago
JSON representation
Synchronous keyboard and mouse input for web applications. Useful for games and canvas / webgl synchronous content in web applications.
- Host: GitHub
- URL: https://github.com/tentone/syncinput
- Owner: tentone
- License: mit
- Created: 2016-09-25T13:01:55.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2024-09-03T22:38:27.000Z (5 months ago)
- Last Synced: 2024-10-04T13:25:43.454Z (4 months ago)
- Topics: canvas, game-controller, gamepads, synchronous, web-game-dev, webgl
- Language: TypeScript
- Homepage: https://tentone.github.io/syncinput/
- Size: 9.29 MB
- Stars: 20
- Watchers: 3
- Forks: 4
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
[![GitHub version](https://badge.fury.io/gh/tentone%2Fsyncinput.svg)](https://badge.fury.io/gh/tentone%2Fsyncinput)[![npm version](https://badge.fury.io/js/syncinput.svg)](https://badge.fury.io/js/syncinput)
- 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](https://tentone.github.io/syncinput/demo/) running from the examples directory.
- [TSDoc](https://tentone.github.io/syncinput/docs/) documentation available.### Sync Events
- 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.### Getting Started
- Get from NPM using ` npm install syncinput --save-prod`
- Here is a small code example showing the basic functionality of the library.```javascript
import {Keyboard, Keys, Mouse, MouseButton, Touch, Gamepad, GamepadButton} from 'syncinput';//Initialization
mouse = new Mouse();
keyboard = new Keyboard();
touch = new Touch();
gamepad = new Gamepad();[...]
//Inside of the logic/rendering loop
mouse.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");
}
```### Mouse
- `position {x, y}` -Actual mouse position
- `delta {x, y}` - Mouse delta since last time update() was called
- `wheel` - Mouse wheel value- `buttonPressed(button)` - Check if mouse button is pressed (touchscreen tap same as left click)
- `buttonJustPressed(button)` - Check if mouse button was just pressed
- `buttonJustReleased(button)` - Check if mouse button was just released
- `setCanvas(canvas)` - Attach canvas to mouse object for position coordinated to be calculated relatively to the canvas.
- `insideCanvas()` - Check if mouse is inside attached canvas
- `setLock(value)` - Set mouse lock on/off.### Keyboard
- `keyPressed(button)` - Check if key is currently pressed
- `keyJustPressed(button)` - Check if key was just pressed
- `keyJustReleased(button)` - Check if key was just released
- `reset()` - Reset all keys### Touch
- `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 pressed
- `touchJustPressed(point)` - Check if touch point was just pressed
- `touchJustReleased(point)` - Check if touch point was just released### Gamepad
[Gamepad input](https://developer.mozilla.org/en-US/docs/Web/API/Gamepad_API) is only available in secure context using HTTPS.- `buttonPressed(button)` - Check if gamepad button is pressed
- `buttonJustPressed(button)` - Check if gamepad button was just pressed
- `buttonJustReleased(button)` - Check if gamepad button was just released
- `getAxis(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.