## 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-M` is 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-Escape` is 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