macOS: Do not send control characters as UTF8 keyboard text (#7136)

Fixes a regression where `ctrl+enter` was not encoding properly since
our input stack changes.
This commit is contained in:
Mitchell Hashimoto
2025-04-19 07:06:39 -07:00
committed by GitHub
2 changed files with 7 additions and 2 deletions

View File

@ -1169,7 +1169,12 @@ extension Ghostty {
var key_ev = event.ghosttyKeyEvent(action, translationMods: translationEvent?.modifierFlags)
key_ev.composing = composing
if let text {
// For text, we only encode UTF8 if we don't have a single control
// character. Control characters are encoded by Ghostty itself.
// Without this, `ctrl+enter` does the wrong thing.
if let text, text.count > 0,
let codepoint = text.utf8.first, codepoint >= 0x20 {
return text.withCString { ptr in
key_ev.text = ptr
return ghostty_surface_key(surface, key_ev)

View File

@ -35,7 +35,7 @@ pub fn encode(
self: *const KeyEncoder,
buf: []u8,
) ![]const u8 {
// log.warn("KEYENCODER self={}", .{self.j});
// log.warn("KEYENCODER self={}", .{self.*});
if (self.kitty_flags.int() != 0) return try self.kitty(buf);
return try self.legacy(buf);
}