# AAC sub-spec — The access model Normative refinement of [SPEC §5](../SPEC.md). Reference: `aac_core::{AccessMethod, MotorProfile, ScanConfig, ScanMode, DwellConfig}`. Every access method is a first-class input. The method and its tuning travel with the **user**, not the board: a board authored for eye-gaze MUST still open under touch or a switch (SPEC §5.3). ## 1. Access method — `AccessMethod` `DirectTouch` (default) · `EyeGaze` · `HeadTracking` · `SwitchScan { switches: u8 }` · `Joystick` · `Bci` · `PartialVoice` · `Pointer`. `SwitchScan` carries the number of switches available (1, 2, or more); a 1-switch user relies on auto-scan timing, a 2-switch user steps and selects manually. ## 2. Motor profile — `MotorProfile` The user's physical capabilities, used to adapt targets and timing: `fine_motor` and `sustained_press` (`Full | Limited | None`), `tremor_level` (`None | Mild | Moderate | Severe`), `min_target_mm: f32`, optional `max_reach_mm`, and `preferred_side`. A client SHOULD derive target size and dwell/scan timing from this profile and MUST NOT render a target smaller than `min_target_mm`. ## 3. Switch scanning — `ScanConfig` A conforming scanner MUST support at minimum the `Linear`, `RowColumn`, and `Group` modes of `ScanMode` (also defined: `Block`, and inverse scanning). It MUST honor: - `scan_rate_ms` — highlight dwell per step; - `start_delay_ms` — delay before auto-scan begins after a press; - `max_cycles` — complete cycles before stopping (`0` = infinite); - `auto_restart` — whether scanning restarts after a selection. If `adaptive_rate` is enabled, the adapted rate MUST stay within an explicit `[min, max]` bound (the reference clamps to `[300, 5000]` ms). Adaptation MUST never produce a rate outside the bound, however the user's responses trend. ## 4. Dwell / eye-gaze — `DwellConfig` Gaze selection MUST use a configurable `base_dwell_ms` with **visible progress feedback** (`DwellFeedback`), a `tolerance_px` radius within which gaze may wander without resetting, and — where `fatigue_adaptation` is enabled — an `effective_dwell_ms` that grows toward but never exceeds `max_dwell_ms`. A selection MUST NOT fire before the effective dwell elapses. ## 5. Universality No access method MAY be a precondition for opening or reading a board (SPEC §5.3). Selection of an access method for a given person is a clinical decision (SPEC §11); the standard guarantees only that whichever method is chosen is a first-class, fully-specified input — never a bolt-on.