Files
VerseVDI-Data-Plane/openspec/changes/phase-3d-macos-native-mvp/specs/macos-input-control/spec.md
T

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-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