Keybindings
The TUI and web share a single keybinding table, defined in scrutin_core::keymap::DEFAULT_KEYMAP. Press ? in the TUI (or click the help button in the web) to see the same table rendered live.
Navigation
| Key |
Action |
j / k or Down / Up |
Move cursor down / up |
g / G or Home / End |
Top / bottom |
PageDown / PageUp or Ctrl-f / Ctrl-b |
Page down / up |
J / K |
Scroll the source pane |
Enter / l / Right |
Drill in |
Esc / h / Left |
Pop one level |
q |
Quit (closes the overlay first when one is open) |
Run control
| Key |
Action |
r |
At Files: open run palette. At Detail/Failure: re-run current file |
R |
At Detail/Failure: open run palette |
x |
Cancel current file |
X |
Cancel entire run |
Filtering and display
| Key |
Action |
/ |
Filter palette |
s |
Sort palette (sequential, status, name, suite, time) |
o / O |
Cycle status filter (all / failures / errors / passes / running / ...) |
t / T |
Cycle tool filter (all / testthat / pytest / ...) |
f / F |
Cycle named filter group (only when [filter.groups.*] is defined in config) |
Space |
Toggle selection on current file |
v |
Visual select mode |
- |
Toggle vertical / horizontal split |
( / ) |
Shrink / grow list pane |
Other
| Key |
Action |
0-9 |
In Detail view, invoke the Nth chip action (plugin fixes for ruff/jarl; spell-check suggestions for skyspell; 0 adds a word to the dictionary) |
e |
Open test file in $EDITOR |
E |
Open source file in $EDITOR |
y |
Yank failure message to clipboard |
L |
Log overlay |
? |
Help overlay |
Custom keybindings
Override any binding in .scrutin/config.toml. Each [keymap.<mode>] table fully replaces the defaults for that mode (replace, not overlay): deleting a line unbinds the key, deleting the whole subtable restores the built-in defaults.
[keymap.normal]
j = "cursor_down"
k = "cursor_up"
Enter = "enter"
Mode names: normal, detail, failure, help, log. Action names are enumerated in scrutin_core::keymap::all_action_names() and the full default map is written out by scrutin init so you can edit in place.