From 37e3cdd2d281feb2bb403600974289406f891461 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Fri, 4 Sep 2026 09:41:08 -0700 Subject: [PATCH] input: encode alt+escape with MOK2 --- src/input/function_keys.zig | 3 ++- src/input/key_encode.zig | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/input/function_keys.zig b/src/input/function_keys.zig index 5390e2f63..b68b26362 100644 --- a/src/input/function_keys.zig +++ b/src/input/function_keys.zig @@ -237,7 +237,8 @@ pub const keys = keys: { result.set(.escape, &.{ .{ .mods = .{ .shift = true }, .sequence = "\x1b[27;2;27~" }, - .{ .mods = .{ .alt = true }, .sequence = "\x1b\x1b" }, + .{ .mods = .{ .alt = true }, .modify_other_keys = .set, .sequence = "\x1b\x1b" }, + .{ .mods = .{ .alt = true }, .modify_other_keys = .set_other, .sequence = "\x1b[27;3;27~" }, .{ .mods = .{ .alt = true, .shift = true }, .sequence = "\x1b[27;4;27~" }, .{ .mods = .{ .ctrl = true }, .sequence = "\x1b[27;5;27~" }, .{ .mods = .{ .ctrl = true, .shift = true }, .sequence = "\x1b[27;6;27~" }, diff --git a/src/input/key_encode.zig b/src/input/key_encode.zig index 96eb6dec2..2b0a668ee 100644 --- a/src/input/key_encode.zig +++ b/src/input/key_encode.zig @@ -2033,6 +2033,28 @@ test "legacy: esc with utf8 (dead key state)" { try testing.expectEqualStrings("A", writer.buffered()); } +test "legacy: alt+escape with modify other state 2" { + var buf: [128]u8 = undefined; + + { + var writer: std.Io.Writer = .fixed(&buf); + try legacy(&writer, .{ + .key = .escape, + .mods = .{ .alt = true }, + }, .{}); + try testing.expectEqualStrings("\x1b\x1b", writer.buffered()); + } + + { + var writer: std.Io.Writer = .fixed(&buf); + try legacy(&writer, .{ + .key = .escape, + .mods = .{ .alt = true }, + }, .{ .modify_other_keys_state_2 = true }); + try testing.expectEqualStrings("\x1b[27;3;27~", writer.buffered()); + } +} + test "legacy: ctrl+shift+minus (underscore on US)" { var buf: [128]u8 = undefined; var writer: std.Io.Writer = .fixed(&buf);