aboutsummaryrefslogtreecommitdiffstats
path: root/idatui
diff options
context:
space:
mode:
authorblasty <blasty@local>2026-08-06 16:36:53 +0200
committerblasty <blasty@local>2026-08-06 16:36:53 +0200
commit1eed36ec1cdd573ef5a095dcafff12a6dd4daab2 (patch)
tree2d21dbc913f5a8398ff5ecf237be9b7c8e001aa3 /idatui
parentgraph: navigate to blocks, not to coordinates (diff)
downloadida-tui-1eed36ec1cdd573ef5a095dcafff12a6dd4daab2.tar.gz
ida-tui-1eed36ec1cdd573ef5a095dcafff12a6dd4daab2.tar.xz
ida-tui-1eed36ec1cdd573ef5a095dcafff12a6dd4daab2.zip
help: reach the cheatsheet with H as well as F1
F1 is swallowed before it ever reaches us on at least one setup here -- the app's own binding fires when the key is injected directly, zellij has no F1 binding of its own, and every common F1 encoding written straight into the pane (SS3 ESC O P, CSI ESC [11~, CSI-u ESC [1;1P) opens it. So the key is being eaten by something upstream, which is not ours to fix, and a cheatsheet reachable only through a function key is fragile anyway: terminals and multiplexers claim them routinely. H opens and closes it too. '?' stays with the incremental search, which is what it has always done in the code views.
Diffstat (limited to 'idatui')
-rw-r--r--idatui/app.py14
1 files changed, 9 insertions, 5 deletions
diff --git a/idatui/app.py b/idatui/app.py
index 0779b93..b3367c4 100644
--- a/idatui/app.py
+++ b/idatui/app.py
@@ -3147,7 +3147,7 @@ _HELP = (
("?", "search backward"),
("N", "previous match"),
("Ctrl+Y", "copy the current line"),
- ("F1", "this cheatsheet"),
+ ("F1 / H", "this cheatsheet"),
("q", "quit"),
)),
("Graph (Space)", (
@@ -3205,7 +3205,7 @@ class QuitScreen(ModalScreen):
class HelpScreen(ModalScreen):
"""F1: the keyboard cheatsheet, replacing the permanent footer."""
- BINDINGS = [Binding("escape,f1,q,question_mark", "close", "Close")]
+ BINDINGS = [Binding("escape,f1,H,q,question_mark", "close", "Close")]
#: widest cell content, +2 for the card's border, +2 for its padding
_CARD_PAD = 4
@@ -3233,7 +3233,7 @@ class HelpScreen(ModalScreen):
classes="help-card", markup=False)
card.border_title = title
yield card
- yield Static("Esc / F1 to close", id="help-foot")
+ yield Static("Esc · F1 · H to close", id="help-foot")
@staticmethod
def _section_widths() -> list[int]:
@@ -4185,7 +4185,8 @@ class IdaCommands(Provider):
app.action_strings),
("Switch binary…", "another binary in the project (Ctrl+O)",
app.action_switch_binary),
- ("Keyboard shortcuts", "the key cheatsheet (F1)", app.action_help),
+ ("Keyboard shortcuts", "the key cheatsheet (F1 or H)",
+ app.action_help),
("Follow symbol under cursor", "jump to the referenced symbol (Enter)",
lambda: va("follow")),
("Show xrefs to symbol", "cross-references to the cursor symbol (x)",
@@ -4396,7 +4397,10 @@ class IdaTui(App):
Binding("left_square_bracket", "step_back", "Step back", show=False),
Binding("right_curly_bracket", "step_over_fwd", "Step over", show=False),
Binding("left_curly_bracket", "step_over_back", "Step over back", show=False),
- Binding("f1", "help", "Keys", show=False),
+ # H as well as F1: terminals and multiplexers swallow function keys all
+ # the time (and the one that does it is upstream of us, so there is
+ # nothing to fix on this side), which left the cheatsheet unreachable.
+ Binding("f1,H", "help", "Keys", show=False),
Binding("g", "goto", "Goto"),
Binding("slash", "filter", "Filter", show=False),
Binding("ctrl+b", "toggle_functions", "Names", show=False),