56 lines
3.3 KiB
Markdown
56 lines
3.3 KiB
Markdown
## 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
|