3.3 KiB
ADDED Requirements
Requirement: P3D-016 complete MVP input
Input SHALL support keyboard, absolute and relative mouse, high-resolution scroll, and one standard controller with a pressed-state ledger and release-all on every authority/interruption boundary.
Scenario: Authority loss with pressed input
- WHEN focus, network, session authority, sleep, cancellation, or termination changes while input is pressed
- THEN release-all is sent/recorded once and no pressed state remains
Requirement: P3D-017 Windows password is ordinary input
Windows lock-screen credentials SHALL travel only as normal encrypted input events and SHALL never be collected, stored, autofilled, or separately injected.
Scenario: Lock-screen typing
- WHEN the user types into a remote Windows credential field
- THEN the client handles the keys like any remote input and retains no credential value
Requirement: P3D-028 controller layouts
Controller input SHALL support user-selectable Xbox, PlayStation, and Nintendo/Switch-style normalized layouts with explicit unsupported-capability behavior.
Scenario: Layout selection
- WHEN the user changes controller layout
- THEN subsequent normalized events use the selected mapping and unsupported controls are surfaced explicitly
Requirement: P3D-029 bounded text clipboard
The client SHALL expose clipboard enablement/direction and visible failure behavior, permit only bounded text, and reject files, file URLs, folders, binary data, and oversized content.
Scenario: File clipboard attempt
- WHEN a local or remote clipboard advertises a file or file URL
- THEN transfer is rejected without reading or persisting file content
Requirement: P3D-035 native pointer modes and escape safety
The client SHALL aspect-fit video, emit absolute pointer events only inside the rendered viewport, default to macOS-owned absolute cursor behavior, and provide session-only relative capture with reserved local control chords.
Scenario: Letterbox pointer
- WHEN the absolute pointer is in a letterbox bar
- THEN no remote absolute-pointer event is emitted
Scenario: Toggle relative mode
- WHEN
Control-Option-Shift-Mis pressed during a session - THEN pressed input is released, the chord is not forwarded, capture switches, and the saved/restored cursor point is clamped inside the rendered viewport
Scenario: Emergency release
- WHEN
Control-Option-Shift-Escapeis pressed in any input mode - THEN pressed input is released, absolute/local cursor ownership and controls return, and the chord is not forwarded
Requirement: P3D-036 scoped keyboard mappings
Keyboard mapping SHALL support physical/logical keys and simultaneous chords with Mac-to-Windows and language defaults, deterministic global/resource precedence and modifier order, conflicts, enablement, add/remove, and Restore Defaults; macros and reserved-chord remapping are prohibited.
Scenario: Conflicting resource mapping
- WHEN an enabled resource mapping conflicts with a global mapping
- THEN deterministic resource precedence applies and the conflict is visible/editable
Scenario: Reserved mapping attempt
- WHEN a mapping targets either local reserved escape chord
- THEN the mapping is rejected and the local chord remains intercepted