Commit Graph
476 Commits
Author SHA1 Message Date
Mitchell Hashimoto fdfc9fea2f input: send composed text in kitty keyboard protocol
When the kitty keyboard protocol "report all keys as escape codes" mode
was active, composed/IME text (e.g. from dead keys or compose sequences)
was silently dropped. 

This happened because the composed text is sent within our GTK apprt
with key=unidentified and no unshifted_codepoint, so no kitty entry was
found and the encoder returned without producing any output. The
plain-text fallback was also skipped because report_all bypasses it.

Send composed text as raw UTF-8 when no kitty entry is found, matching
the behavior of Kitty on Linux for me.

Fixes #10049
2026-03-03 08:57:24 -08:00
Jeffrey C. Ollie 57d570525b gtk: clean up title renaming and fix a small leak 2026-02-24 10:28:33 -06:00
Mitchell Hashimoto 37e902d90e input: paste encoding replaces unsafe control characters with spaces
For a hardcoded set of control characters, replace them with spaces when
encoding pasted text. This is to prevent unsafe control characters from being
pasted which could trick a user into executing commands unexpectedly.

This happens regardless of bracketed paste mode, because certain
characters processed by the kernel pty line discipline can break
bracketed paste (source from zsh: 
https://zsh-workers.zsh.narkive.com/Kd3evJ7t/bracketed-paste-mode-in-xterm-and-urxvt).

This behavior is based on xterm's behavior, including the list of
characters. Note that as a comment in the code says, we should be
sourcing some of these from a tcgetattr call instead of hardcoding them,
but this is a good start.
2026-02-16 10:03:50 -08:00
Mitchell Hashimoto 0e9ce7e450 input: change our binding set to use array hash map
This is recommended for ongoing performance: 
https://github.com/ziglang/zig/issues/17851

Likely not an issue for this particular use case which is why it never
bit us; we don't actively modify this map much once it is created. But,
its still good hygiene and ArrayHashMap made some of the API usage
nicer.
2026-01-09 09:06:03 -08:00
Mitchell Hashimoto 201198c74a input: do value comparison for Set hash maps
We previously only compared the hashes for triggers and actions for hash
map equality. I'm genuinely surprised this never bit us before because
it can result in false positives when two different values have the same
hash. Fix that up!
2026-01-09 08:59:05 -08:00
Mitchell Hashimoto 856ef1fc1b input: change the key_is_binding to return some information 2026-01-09 06:51:48 -08:00
Mitchell Hashimoto 21d9d89d32 input: RemapSet should support aliased mods 2026-01-08 10:26:46 -08:00
Mitchell Hashimoto 5b24aebcab update to use new RemapSet 2026-01-08 10:22:56 -08:00
Mitchell Hashimoto f804a4344e input: RemapSet 2026-01-08 10:22:56 -08:00
Mitchell Hashimoto 619427c84c input: move mods out to key_mods.zig 2026-01-08 10:22:56 -08:00
Jagjeevan Kashid 111b0996d2 feat: key-remap configuration to remap modifiers at the app-level
Signed-off-by: Jagjeevan Kashid <jagjeevandev97@gmail.com>
2026-01-08 10:22:56 -08:00
Mitchell Hashimoto 8e28f58b42 rename the selection search binding, unify into start_search action 2026-01-06 14:10:42 -08:00
Aaron Ruan 9b6a3be993 macOS: Selection for Find feature
Adds the `selection_for_search` action, with Cmd+E keybind by default.
This action inputs the currently selected text into the search
field without changing focus, matching standard macOS behavior.
2026-01-06 22:21:55 +08:00
Mitchell Hashimoto 978400b0b0 replace cimgui with dcimgui 2025-12-31 10:42:10 -08:00
Mitchell Hashimoto 61df50d70b input: add end_key_sequence binding action
End the currently active key sequence, if any, and flush the
keys up to this point to the terminal, excluding the key that
triggered this action.

For example: `ctrl+w>escape=end_key_sequence` would encode
`ctrl+w` to the terminal and exit the key sequence.

Normally, an invalid sequence will reset the key sequence and
flush all data including the invalid key. This action allows
you to flush only the prior keys, which is useful when you want
to bind something like a control key (`ctrl+w`) but not send
additional inputs.
2025-12-29 12:07:54 -08:00
rezky_nightky bf73f75304 chore: fixed some typo
Author: rezky_nightky <with dot rezky at gmail dot com>
Repository: ghostty
Branch: main
Signing: GPG (4B65AAC2)
HashAlgo: BLAKE3

[ Block Metadata ]
BlockHash: c37f4ee817412728a8058ba6087f5ca6aaff5a845560447d595d8055972d0eac
PrevHash: 3510917a780936278debe21786b7bae3a2162cb3857957314c3b8702e921b3d4
PatchHash: 5e5bb4ab35df304ea13c3d297c6d9a965156052c82bccf852b1f00b7bcaa7dd4

FilesChanged: 18
Lines: +92 / -92

Timestamp: 2025-12-25T17:27:08Z
Signature1: c1970dbb94600d1e24dfe8efcc00f001664db7b777902df9632a689b1d9d1498
Signature2: 30babb1e3ca07264931e067bfe36c676fb7988c2e06f8c54e0c9538fe7c7fc9a
2025-12-26 00:27:08 +07:00
Mitchell Hashimoto 017021787c config: RepeatableCommand cval 2025-12-24 14:26:47 -08:00
Mitchell Hashimoto 7dd903588b input: formatter for chained entries 2025-12-22 13:34:19 -08:00
Mitchell Hashimoto e4c7d4e059 input: handle unbind cleanup for leaf chains 2025-12-22 13:34:18 -08:00
Mitchell Hashimoto 442146cf9f input: implement leaf_chained clone 2025-12-22 13:13:39 -08:00
Mitchell Hashimoto b8fe66a701 input: parseAndPut handles chains 2025-12-22 13:06:29 -08:00
Mitchell Hashimoto 9bf1b9ac71 input: cleaner reverse mapping cleanup 2025-12-22 12:55:33 -08:00
Mitchell Hashimoto 67be309e3f input: Trigger.eql 2025-12-22 12:50:39 -08:00
Mitchell Hashimoto a3373f3c6a input: appendChain reverse mapping 2025-12-22 12:47:04 -08:00
Mitchell Hashimoto 4fdc52b920 input: appendChain 2025-12-22 12:37:53 -08:00
Mitchell Hashimoto 457fededeb input: keep track of chain parent 2025-12-22 12:00:50 -08:00
Mitchell Hashimoto 42c21eb16b input: leaf_chained tagged union value 2025-12-22 10:19:54 -08:00
Mitchell Hashimoto 3877ead071 input: parse chains (don't do anything with them yet) 2025-12-22 09:13:41 -08:00
Mitchell Hashimoto 14bbc4893f implement one-shot key tables 2025-12-20 14:36:39 -08:00
Mitchell Hashimoto 18ce219d78 input: activate/deactivate key table binding actions 2025-12-20 14:23:02 -08:00
Mitchell Hashimoto 63422f4d4e add the catch_all binding key
Part of #9963

This adds a new special key `catch_all` that can be used in keybinding
definitions to match any key that is not explicitly bound. For example:
`keybind = catch_all=new_window` (chaos!). 

`catch_all` can be used in combination with modifiers, so if you want to
catch any non-bound key with Ctrl held down, you can do:
`keybind = ctrl+catch_all=new_window`.

`catch_all` can also be used with trigger sequences, so you can do:
`keybind = ctrl+a>catch_all=new_window` to catch any key pressed after
`ctrl+a` that is not explicitly bound and make a new window!

And if you want to remove the catch all binding, it is like any other:
`keybind = catch_all=unbind`.
2025-12-19 15:03:38 -08:00
Mitchell Hashimoto f9a1f526c8 update some copy for the background opacity toggle 2025-12-16 11:40:12 -08:00
himura467 4c6d3f8ed2 macos: add toggle_background_opacity keybind action 2025-12-16 11:32:10 -08:00
Max Bretschneider 4f02e6c096 Wrong action typo fix 2025-12-13 13:45:45 -08:00
Max Bretschneider afbcfa9e3d Added GOTO_WINDOW to actions 2025-12-13 13:45:44 -08:00
Max Bretschneider 55ae4430b9 Formatting 2025-12-13 13:45:44 -08:00
Max Bretschneider 1c1ef99fb1 Window switching initial 2025-12-13 13:45:44 -08:00
Mitchell Hashimoto c5d6b951e9 input: shift+backspace in Kitty with only disambiguate should do CSIu
Fixes #9868 (shift+backspace part only)
2025-12-13 07:18:22 -08:00
Matthew Hrehirchuk 12bb2f3f47 feat: add readonly surface mode 2025-12-12 07:24:22 -08:00
Mitchell Hashimoto 6105344c31 macos: add change tab title to right click menu 2025-12-11 16:30:06 -08:00
Mitchell Hashimoto 32033c9e1a core: prompt_tab_title binding and apprt action 2025-12-11 16:03:19 -08:00
Mitchell Hashimoto 3352d5f081 Fix up close right description 2025-12-10 20:57:36 -08:00
Mitchell Hashimoto cca10f3ca8 Revert GTK UI changes, apple-sdk build stuff 2025-12-10 20:20:37 -08:00
George Papadakis 625d7274bf Add close tabs on the right action 2025-12-10 20:14:27 -08:00
Mitchell Hashimoto dbfc3eb679 Remove unused imports 2025-11-27 13:37:53 -08:00
Mitchell Hashimoto 4ff0e0c9d2 input: remove the unused end search entry in the palette 2025-11-27 07:21:59 -08:00
Mitchell Hashimoto c51170da9c add end_search binding 2025-11-26 08:50:06 -08:00
Mitchell Hashimoto b7e70ce534 apprt: end_search 2025-11-26 08:50:04 -08:00
Mitchell Hashimoto aeaa8d4ead add start_search binding and apprt action 2025-11-26 08:50:03 -08:00
Mitchell Hashimoto ba7b816af0 core: bindings for navigate_search 2025-11-25 11:05:38 -08:00