Files
RedBear-OS/local/docs/operator-runbooks/redbear-accessibility.md
T
vasilito 9f2de2a0b1 docs+build: correct version drift, mangled prose, and toolchain-version gaps
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.
2026-08-03 13:07:25 +03:00

2.8 KiB

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.