1.7 KiB
MODIFIED Requirements
Requirement: Typed sequenced input envelope
The input.sequenced.v1 payload SHALL begin with ASCII VGI1, a one-byte
event kind, and one-byte payload length. It SHALL contain exactly one bounded
keyboard, mouse-button, relative-mouse, UTF-8 scalar, controller-state,
absolute-mouse, or high-resolution-scroll event. Absolute mouse kind 0x06
SHALL contain big-endian u16 x, y, viewport width, and viewport height, reject
zero viewports and coordinates outside the viewport, and require negotiated
input.absolute.v1. Scroll kind 0x07 SHALL contain big-endian signed i16
vertical and horizontal deltas and require negotiated input.scroll.v1. False
keyboard/mouse state and zeroed controller state are explicit releases.
Unknown or unadvertised kinds, length mismatches, malformed UTF-8, unsupported
controller indices, and reserved fields SHALL be rejected before provider
translation.
Scenario: Keyboard state change
- WHEN a client sends a valid keyboard press or release envelope
- THEN the gateway forwards the corresponding typed provider input on its reliable keyboard channel and records the pressed state for cleanup.
Scenario: Absolute pointer and scroll
- WHEN an advertised client sends an in-viewport absolute coordinate or signed scroll delta with the exact body length
- THEN the gateway accepts the provider-neutral event without adding it to pressed-state cleanup.
Scenario: Invalid input envelope
- WHEN a client sends an unknown or unadvertised kind, invalid length, malformed UTF-8 scalar, zero viewport, out-of-range coordinate, or nonzero reserved field
- THEN the gateway rejects it without sending provider input or changing pressed state.