Skip to content

ghostty: make the herdr key table actually pass Hyper chords through - #20

Merged
froppa merged 1 commit into
masterfrom
ghostty-herdr-table-passthrough
Oct 7, 2026
Merged

froppa merged 1 commit into
masterfrom
ghostty-herdr-table-passthrough

Conversation

@froppa

@froppa froppa commented Oct 6, 2026

Copy link
Copy Markdown
Owner

With the herdr key table active, Hyper-C still opened a Ghostty tab. In Ghostty 1.3.1, unbind inside a table only deletes the table's own entry for that chord (Binding.zig Set.remove). The lookup then finds nothing in the table and falls back to the default bindings (Surface.zig), whatever the docs say.

  • Each herdr/ entry is now performable:<chord>=activate_key_table:herdr. With herdr already the innermost table, Ghostty ignores that activation and reports it as not run. An unperformed performable: binding is treated as if it didn't exist, so Ghostty sends the key to herdr.
  • test.sh checks that the table covers every Hyper chord Ghostty binds and fails if an =unbind line comes back in the table.

In Ghostty 1.3.1, unbind inside a key table only removes the table's own
entry, so the lookup fell through to the default bindings and Hyper-C
still ran new_tab with the table active.

Each table entry is now a performable activate_key_table:herdr. With
herdr already innermost that is a no-op returning false, and an
unperformed performable binding sends the key to the pty.
@froppa
froppa enabled auto-merge (squash) October 7, 2026 07:29
@froppa
froppa disabled auto-merge October 7, 2026 07:29
@froppa
froppa merged commit 7063ac8 into master Oct 7, 2026
2 checks passed
@froppa
froppa deleted the ghostty-herdr-table-passthrough branch October 7, 2026 07:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant