Reference for the default page-mode bindings shipped by
buffr_modal::Keymap::default_bindings. All entries assume the leader key is
\ (vim default); the leader is configurable per-profile via
Keymap::set_leader.
The engine speaks vim-flavoured chord notation. <C-...> = Ctrl, <S-...> =
Shift, <M-...> / <A-...> = Alt, <D-...> = Super (Cmd on macOS), <leader>
= configured leader char.
Count — leading digits accumulate: 5j scrolls down 5 lines, 12G jumps
to line 12 (when implemented). 0 alone is bindable (vim convention: column
0); digits 1-9 always start a count.
Register — "<char> selects a register before a yank. Phase 2 captures
register state on the engine but does not yet thread it through to actions.
Yank-to-register lands with Phase 5.
When a binding is a prefix of a longer one (g vs gg), the engine waits up to
Engine::timeout() (default 1000ms). If the user does not extend the prefix,
the shorter action fires.
TabClose (and :q) close the active tab. The application only exits when the
last tab is gone. DuplicateTab clones the active tab's URL into a fresh tab;
PinTab toggles the pinned bit (sort hint only — pin does not prevent close).
See multi-tab.md.
When : opens the command line or o/O opens the omnibar, all keystrokes
route to the input bar instead of the page-mode trie. The bindings below mirror
readline / vim's command-line conventions.
Keys
Action
<Esc> / <C-c>
Cancel — close overlay, return to Normal mode.
<CR>
Confirm — dispatch the command or navigate to the URL.
<Tab> / <Down>
Move suggestion selection one row down (cycles to last).
<S-Tab> / <Up>
Move suggestion selection one row up (clears at top).
When a page asks for a permission (camera, microphone, geolocation,
notifications, clipboard, MIDI sysex, …) buffr surfaces a prompt strip and
routes keystrokes to it until the request is resolved. The page content does not
see these keys.
Keys
Action
a / y
Allow once (no row written).
A / Y
Allow + remember for this origin.
d / n
Deny once (no row written).
D / N
Deny + remember for this origin.
s
Synonym for D — deny + remember.
<Esc>
Defer — Dismiss / cancel(), no persistence.
If multiple requests pile up they queue; the statusline shows (N more pending)
on the prompt strip. After resolving one the next prompt appears on the
following frame.
Bindings come from a static table in crates/buffr-modal/src/keymap.rs. User
overrides go in ~/.config/buffr/config.toml under [keymap.<mode>] — see
config.md for the full schema and action notation. The watcher
reloads the keymap on file changes (250ms debounced).