LittleJS Input System
- Keyboard input with key down, pressed, and released states
- Mouse input with position (world and screen space), buttons, and wheel
- Gamepad support for multiple controllers with analog sticks and buttons
- Touch input mapped to mouse position and buttons
- Virtual on-screen gamepad for mobile devices
- Automatic gamepad vs keyboard/mouse detection
- Input event prevention for canvas focus
- Clipboard copy/paste support
- Source
Members
(static) gamepadPrimary :number
Primary gamepad index, automatically set to first gamepad with input
- number
- Source
(static) inputMouseMoveThreshold :number
Screen-pixel mouse movement per frame that counts as "using the mouse" (so sub-pixel hand jitter doesn't steal focus from the keyboard/gamepad).
- number
- Default Value
- 6
- Source
(static) inputPreventDefault :boolean
Prevents input continuing to the default browser handling (true by default)
- boolean
- Source
(static, constant) isTouchDevice
True if a touch device has been detected
- Source
(static) isUsingGamepad :boolean
True if a gamepad is the most recently used input device. Equivalent to usingGamepadInput(); derived from lastInputDevice each frame.
- boolean
- Source
(static) lastInputDevice :'mouse'|'keyboard'|'gamepad'
The most recently used input device: 'mouse' | 'keyboard' | 'gamepad'. Sticky: it holds its value while every device is idle, so a mouse-follow control (e.g. paddle = mousePos) won't snap back the instant the stick/keys are released. With several devices in play at once (e.g. keyboard to move + mouse to aim) it tracks whichever was touched last each frame, so it may alternate — that's intended; use it to pick which control drives a shared action. Updated every frame by inputUpdate().
- 'mouse' |
'keyboard' | 'gamepad'
- Source
(static) mouseDelta :Vector2
Mouse movement delta in world space
- Vector2
- Source
(static) mouseDeltaScreen :Vector2
Mouse movement delta in screen space
- Vector2
- Source
(static) mouseInWindow :boolean
True if mouse was inside the document window, set to false when mouse leaves
- boolean
- Source
(static) mousePos :Vector2
Mouse pos in world space
- Vector2
- Source
(static) mousePosScreen :Vector2
Mouse pos in screen space
- Vector2
- Source
(static) mouseWheel :number
Mouse wheel delta this frame
- number
- Source
Methods
(static) gamepadConnected(gamepadopt) → {boolean}
Returns true if passed in gamepad is connected
| Name | Type | Attributes | Description |
|---|---|---|---|
gamepad | number | <optional> |
- Source
- Type:
- boolean
(static) gamepadDpad(gamepadopt) → {Vector2}
Returns gamepad dpad value
| Name | Type | Attributes | Description |
|---|---|---|---|
gamepad | number | <optional> |
- Source
- Type:
- Vector2
(static) gamepadIsDown(button, gamepadopt) → {boolean}
Returns true if gamepad button is down
| Name | Type | Attributes | Description |
|---|---|---|---|
button | number | ||
gamepad | number | <optional> |
- Source
- Type:
- boolean
(static) gamepadStick(stick, gamepadopt) → {Vector2}
Returns gamepad stick value
| Name | Type | Attributes | Description |
|---|---|---|---|
stick | number | ||
gamepad | number | <optional> |
- Source
- Where the stick points, y up, length 0 to 1 past the dead zone, zero when there is no such stick
- Type:
- Vector2
(static) gamepadStickCount(gamepadopt) → {number}
Returns how many control sticks the passed in gamepad has
| Name | Type | Attributes | Description |
|---|---|---|---|
gamepad | number | <optional> |
- Source
- Type:
- number
(static) gamepadVibrate(gamepadopt, durationopt, strongMagnitudeopt, weakMagnitudeopt, startDelayopt)
Pulse a gamepad's vibration hardware using the dual-rumble effect if it exists Strong magnitude is usually the left side motor, weak magnitude is usually the right side motor
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
gamepad | number | <optional> | gamepad index | |
duration | number | <optional> | 200 | effect duration in ms, browsers limit it and the delay to 5 seconds together |
strongMagnitude | number | <optional> | 1 | strong (left) motor intensity, 0 to 1 |
weakMagnitude | number | <optional> | 1 | weak (right) motor intensity, 0 to 1 |
startDelay | number | <optional> | 0 | delay in ms before the effect starts |
- Source
(static) gamepadVibrateStop(gamepadopt)
Stop vibration on a gamepad
| Name | Type | Attributes | Description |
|---|---|---|---|
gamepad | number | <optional> | gamepad index |
- Source
(static) gamepadWasPressed(button, gamepadopt) → {boolean}
Returns true if gamepad button was pressed
| Name | Type | Attributes | Description |
|---|---|---|---|
button | number | ||
gamepad | number | <optional> |
- Source
- Type:
- boolean
(static) gamepadWasReleased(button, gamepadopt) → {boolean}
Returns true if gamepad button was released
| Name | Type | Attributes | Description |
|---|---|---|---|
button | number | ||
gamepad | number | <optional> |
- Source
- Type:
- boolean
(static) inputClear()
Clears all input
- Source
(static) inputClearKey(key, deviceopt, clearDownopt, clearPressedopt, clearReleasedopt)
Clear a key's state, so it stops reading as down, pressed or released this frame; a key still held is not pressed again until it is let go
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
key | string | | A key code like 'Space', or a mouse or gamepad button number | ||
device | number | <optional> | 0 | 0 for the keyboard and mouse, gamepad n is device n + 1 |
clearDown | boolean | <optional> | true | Clear the held state |
clearPressed | boolean | <optional> | true | Clear the pressed this frame state |
clearReleased | boolean | <optional> | true | Clear the released this frame state |
- Source
(static) keyDirection(upopt, downopt, leftopt, rightopt) → {Vector2}
Returns input vector from arrow keys or WASD if enabled
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
up | string | <optional> | ArrowUp | |
down | string | <optional> | ArrowDown | |
left | string | <optional> | ArrowLeft | |
right | string | <optional> | ArrowRight |
- Source
- Type:
- Vector2
(static) keyIsDown(key, deviceopt) → {boolean}
Returns true if device key is down
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
key | string | | |||
device | number | <optional> | 0 | 0 for the keyboard and mouse, gamepad n is device n + 1 |
- Source
- Type:
- boolean
(static) keyWasPressed(key, deviceopt) → {boolean}
Returns true if device key was pressed this frame
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
key | string | | |||
device | number | <optional> | 0 | 0 for the keyboard and mouse, gamepad n is device n + 1 |
- Source
- Type:
- boolean
(static) keyWasReleased(key, deviceopt) → {boolean}
Returns true if device key was released this frame
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
key | string | | |||
device | number | <optional> | 0 | 0 for the keyboard and mouse, gamepad n is device n + 1 |
- Source
- Type:
- boolean
(static) mouseIsDown(button) → {boolean}
Returns true if mouse button is down
| Name | Type | Description |
|---|---|---|
button | number |
- Source
- Type:
- boolean
(static) mouseWasPressed(button) → {boolean}
Returns true if mouse button was pressed
| Name | Type | Description |
|---|---|---|
button | number |
- Source
- Type:
- boolean
(static) mouseWasReleased(button) → {boolean}
Returns true if mouse button was released
| Name | Type | Description |
|---|---|---|
button | number |
- Source
- Type:
- boolean
(static) pointerLockExit()
Request to unlock the pointer
- Source
(static) pointerLockIsActive() → {boolean}
Check if pointer is locked (true if locked)
- Source
- Type:
- boolean
(static) pointerLockRequest()
Request to lock the pointer, for a mouse; a device with only touch refuses it
- Source
(static) setInputMouseMoveThreshold(threshold)
Set the screen-pixel mouse movement per frame that counts as using the mouse
| Name | Type | Description |
|---|---|---|
threshold | number |
- Source
(static) setInputPreventDefault(preventDefaultopt)
Prevents input continuing to the default browser handling This is useful to disable for html menus so the browser can handle input normally, the right click menu included; over an html text field that menu always shows
- While on, the mouse's back and forward buttons don't leave the page, a game can read them as mouse 3 and 4
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
preventDefault | boolean | <optional> | true |
- Source
(static) usingGamepadInput() → {boolean}
Is a gamepad the most recently used input device?
- Source
- Type:
- boolean
(static) usingKeyboardInput() → {boolean}
Is the keyboard the most recently used input device?
- Source
- Type:
- boolean
(static) usingMouseInput() → {boolean}
Is the mouse the most recently used input device?
- Source
- Type:
- boolean
(static) vibrate(patternopt)
Pulse the vibration hardware if it exists
| Name | Type | Attributes | Default | Description |
|---|---|---|---|---|
pattern | number | | <optional> | 100 | single value in ms or vibration interval array |
- Source
(static) vibrateStop()
Cancel any ongoing vibration
- Source