9f2de2a0b1
Docs:
- Baseline was stated as 0.3.1 across the canonical set while the branch,
Cat 0/1 crates and every Cat 2 fork are 0.3.2. AGENTS.md also cited a
sources/redbear-0.3.1/ archive that does not exist; the only archive
present is sources/redbear-0.1.0/. Versioning examples now match the
forks as they actually stand (redoxfs/syscall 0.9.1, libredox 0.1.19).
- Repaired 18 instances of 'immutable archived' across 8 documents, where
a global find/replace had turned sync/synced/archived into that phrase
and produced ungrammatical text ('never auto-immutable archived',
'### Source immutable archived').
- Settled the apply-patches.sh contradiction empirically. Both sides were
wrong: the GROSS WARNING blocks (x5) described it as routine
patch-linking, and SCRIPT-BEHAVIOR-MATRIX.md said build-redbear.sh
'never invokes' it. It is invoked at build-redbear.sh:487, but only to
auto-repair a failed verify-overlay-integrity.sh check.
- Dropped the dangling reference to a local/AGENTS.md section
'NO OVERLAY-STYLE PATCHES — SCOPED POLICY' that does not exist.
Build system:
- mk/prefix.mk hardcoded 13.2.0 in the limits.h removal, which silently
no-ops after a toolchain upgrade and leaves the conflicting header.
Version-globbed.
- Parameterized GCC_RECIPE so the from-source toolchain path is not
pinned to gcc13.
- The three cstdlib strtold seds were not idempotent -- the shipped GCC
13 toolchain carried that comment block 17 times from repeated
'make prefix' runs. Each is now guarded.
51 lines
2.8 KiB
Markdown
51 lines
2.8 KiB
Markdown
# redbear-accessibility — Operator Runbook
|
|
|
|
**Daemon:** redbear-accessibility
|
|
**Init service:** `/usr/lib/init.d/60_accessibility.service`
|
|
**Status check:** `cat /scheme/accessibility/status`
|
|
**Restart:** `init-svc restart accessibility`
|
|
|
|
## Logs
|
|
- Destination: `stderr` (tagged `[accessibility]`)
|
|
- No env-var log level control; all messages are `INFO` or `ERROR` level. To increase verbosity, modify `src/main.rs:log_msg` calls.
|
|
|
|
## Scheme
|
|
- **Scheme name:** `accessibility`
|
|
- **Root:** `/scheme/accessibility/` (directory, mode 0555)
|
|
|
|
## Scheme Paths
|
|
| Path | Type | Mode | Description |
|
|
|------|------|------|-------------|
|
|
| `config` | file | 0644 | Read/write accessibility config (`key=value` lines) |
|
|
| `status` | file | 0644 | Read-only runtime status summary |
|
|
| `sticky-keys` | file | 0644 | Read active sticky modifiers; write `key <code> <pressed> [now_ms]` to feed input |
|
|
|
|
## Config Properties (read/write via `config`)
|
|
| Key | Type | Default | Description |
|
|
|-----|------|---------|-------------|
|
|
| `sticky_keys` | bool | false | Enable sticky key modifier latching |
|
|
| `slow_keys` | bool | false | Enforce minimum key press duration |
|
|
| `slow_key_delay_ms` | u64 | 300 | Minimum press duration for slow keys |
|
|
| `bounce_keys` | bool | false | Debounce rapid double-presses |
|
|
| `bounce_key_delay_ms` | u64 | 300 | Minimum interval between presses |
|
|
| `repeat_keys` | bool | true | Enable key repeat |
|
|
| `repeat_delay_ms` | u64 | 500 | Delay before repeat starts |
|
|
|
|
## Sticky Key Modifier Scan Codes
|
|
| Code | Modifier |
|
|
|------|----------|
|
|
| 0x1D, 0x61, 0x64 | Ctrl |
|
|
| 0x2A, 0x36 | Shift |
|
|
| 0x38 | Alt |
|
|
| 0x5B, 0x5C | Meta (Super) |
|
|
|
|
## Signals / SIGTERM Behavior
|
|
- No SIGTERM handler. Scheme socket close triggers clean exit. Registered via `register_sync_scheme`.
|
|
|
|
## Common Issues
|
|
1. **`failed to register scheme:accessibility`** — Another daemon already registered the scheme name, or the scheme socket could not be created. Check for duplicate instances.
|
|
2. **Sticky keys not working** — Verify `sticky_keys=true` in config (`cat /scheme/accessibility/config`). The daemon must receive key events via `write` to `sticky-keys` (format: `key <scancode> <pressed_bool> [now_ms]`). Passive — not auto-fed by the input stack yet.
|
|
3. **Bounce/slow key filtering too aggressive** — Adjust `slow_key_delay_ms` and `bounce_key_delay_ms` via config write. Increase values for users with tremors, decrease for fast typists.
|
|
4. **Config changes not persisting** — Config is in-memory only. No persistence to disk. Re-apply config via init service `[[files]]` entries or a startup script that writes to `/scheme/accessibility/config`.
|
|
5. **Root listing returns empty** — The root directory listing is hardcoded (`config\nstatus\nsticky-keys\n`). If `getdents` returns unexpected results, check that the caller uses correct Redox scheme I/O conventions.
|