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.
3.3 KiB
3.3 KiB
redbear-keymapd — Operator Runbook
Daemon: redbear-keymapd
Init service: /usr/lib/init.d/62_keymapd.service
Status check: cat /scheme/keymap/active
Restart: init-svc restart keymapd
Logs
- Destination:
stderr(tagged[keymapd]) - No env-var log level control; all messages are
INFOorERRORlevel. Keymap load success/failure is logged at startup.
Scheme
- Scheme name:
keymap - Root:
/scheme/keymap/(directory, mode 0555)
Scheme Paths
| Path | Type | Mode | Description |
|---|---|---|---|
active |
file | 0644 | R/W: current keymap name. Read returns name=<keymap>. Write a keymap name to switch. |
list |
file | 0644 | Read-only: newline-separated list of available keymap names |
keymap/<name> |
file | 0644 | Read-only: per-keymap detail (entries, compose, dead_keys, sample codepoints) |
set/<name> |
action | — | Open this path to activate keymap <name> (alternative to writing active) |
Built-in Keymaps (always available)
| Name | Description |
|---|---|
us |
US QWERTY (default) |
gb |
UK QWERTY |
dvorak |
Dvorak simplified layout |
azerty |
French AZERTY |
bepo |
French Bépo ergonomic layout |
it |
Italian QWERTY |
Configuration
KEYMAP_DIR— Directory to scan for JSON keymap files (default:/etc/keymaps)XKB_CONFIG_ROOT— xkbcommon XKB data directory (e.g./usr/share/X11/xkb). If set, the daemon loads an XKB keymap.XKB_DEFAULT_LAYOUT— XKB layout name (default:us)XKB_DEFAULT_VARIANT— Optional XKB variant (e.g.dvorak,intl)
JSON Keymap Format
Keymap files in KEYMAP_DIR must have .json extension. The daemon calls Keymap::from_json(&name, &json_str) to parse each file. The JSON format is documented in keymap.rs.
Scancode Translation
translate(scancode: u8, shift: bool, altgr: bool) -> char- Sample:
cat /scheme/keymap/activeshowssample_scancode_30=(scancode 0x1E = 'a' key, unshifted)
Signals / SIGTERM Behavior
- No SIGTERM handler. Scheme socket close triggers clean exit. Registered via
register_sync_scheme.
Common Issues
failed to register scheme:keymap— Another daemon already registered the scheme name.failed to load keymaps from <dir>— The directory does not exist or contains invalid JSON. Check file permissions and JSON syntax. The error is non-fatal; built-in keymaps are always available.- XKB keymap not loading — Requires
XKB_CONFIG_ROOTto point at a valid xkbcommon data tree. The daemon callsxkb::load_xkb_keymap()which readskeycodes/,symbols/,types/,compat/subdirectories. WithoutXKB_CONFIG_ROOT, only built-in + JSON keymaps are available. - Keymap switch not taking effect — Write the keymap name to
/scheme/keymap/activeor open/scheme/keymap/set/<name>. Verify the name exists incat /scheme/keymap/list. The compositor/terminal must re-read the active keymap after a switch — the daemon only updates its internal state. sample_scancode_30shows 'a' when expecting another character — Verify the keymap is actually active (cat /scheme/keymap/activereturnsname=<expected>). Ifactiveshows the correct keymap, check the keymap's own scancode table (cat /scheme/keymap/keymap/<name>).