Files
komorebi/docs/dev
LGUG2Z ecf91f077f feat(hotkeys): read an skhdrc
komorebi for Mac's users bind komorebic in an skhdrc, so that is the first file
the crate reads. `skhd::parse` reads the whole syntax into the model: bindings
with every modifier skhd has, literal keys and macOS keycodes, mode declarations
(with `@` and an entry command), mode switches and bindings in one or more
modes, per-application lists with `~` and `*`, `.blacklist`, and skhd.zig's
`.define` command templates and application groups, which are expanded where
they are used. A mode may be used before it is declared, so bindings are put in
their modes at the end of the file.

Reading never fails. Text that is not valid skhd is an error with its span and
is skipped, up to the end of the line or of the list it opened, and reading goes
on. What is valid but not realized the way skhd does it has a warning that says
so: side-specific modifiers are the modifier, a capturing mode lets unbound keys
through, `->` does not pass the key on, and `fn`, `.load`, `.alias`, key
forwarding and key sequences are left out. Comments, continued lines and the
line numbers of diagnostics are shared with the readers that follow.

The tests cover the modifiers, macOS keycodes and the shifted symbol rule,
comments and continued lines, modes, lists, defines, spans and recovery after an
error, and the corpus test now checks that every skhdrc fixture reads into the
keymap of its case. The keymaps of the other cases are written down too, for the
readers to be written against.
2026-10-28 07:20:57 -07:00
..
2026-10-28 07:20:57 -07:00
2026-10-28 07:20:57 -07:00
2026-10-28 07:20:57 -07:00
2026-10-28 07:20:57 -07:00