browser-input
Installation
SKILL.md
Browser input
This skill adapts browser/device events into the semantic actions defined by input-design. It does not redefine the action grammar.
Pointer and focus lifecycle
- Pointer Lock is state, not an assumption. Observe
pointerlockchange; handlepointerlockerror; publish a usable non-lock fallback when core look needs one. - On
visibilitychangeto hidden and on relevant window focus loss, synthesize semantic releases/reset for held transient actions. On return, require fresh input edges rather than replaying stale key/pointer state. - Treat
pointercanceland lost pointer capture as termination of the affected pointer gesture. Mobile browser scrolling, app switching, orientation changes or palm rejection can cancel a pointer withoutpointerup. - Menu/modal transitions release gameplay look/gesture ownership before widgets consume input.
Touch and gamepad
- Track touch/pointer IDs so movement and look can coexist; one canceled pointer must not erase unrelated active pointers unless the platform/browser cancels them too.
- Handle
gamepadconnectedandgamepaddisconnected, but also poll current pads through the runtime's supported Gamepad API path because availability can depend on page focus/user interaction. A disconnected pad releases its held semantic actions. - Gamepad button/axis indices are device data. Map through an explicit profile/deadzone layer; do not assume one controller layout for every device.
- A runtime may not support every browser API equally. Missing Pointer Lock, touch, gamepad or haptics becomes a capability/fallback decision in
platform-targets, not silent failure.