From 39c2332d35c16454820426269e97d8abdc07d607 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Sat, 26 Aug 2023 07:42:12 -0700 Subject: [PATCH] input: keypad enter should act as normal "\r" if no other seq matches This matches Kitty behavior on both macOS and Linux. In certain keyboard modes and Kitty keyboard modes, the behavior changes but those already matched (tested). --- src/input/KeyEncoder.zig | 14 ++++++++++++++ src/input/function_keys.zig | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/input/KeyEncoder.zig b/src/input/KeyEncoder.zig index cc0b129ff..e8bb5a466 100644 --- a/src/input/KeyEncoder.zig +++ b/src/input/KeyEncoder.zig @@ -1042,6 +1042,20 @@ test "legacy: shift+function key should use all mods" { try testing.expectEqualStrings("\x1b[1;2A", actual); } +test "legacy: keypad enter" { + var buf: [128]u8 = undefined; + var enc: KeyEncoder = .{ + .event = .{ + .key = .kp_enter, + .mods = .{}, + .consumed_mods = .{}, + }, + }; + + const actual = try enc.legacy(&buf); + try testing.expectEqualStrings("\r", actual); +} + test "ctrlseq: normal ctrl c" { const seq = ctrlSeq(.c, .{ .ctrl = true }); try testing.expectEqual(@as(u8, 0x03), seq.?); diff --git a/src/input/function_keys.zig b/src/input/function_keys.zig index 52dfe75bf..9c6c486d3 100644 --- a/src/input/function_keys.zig +++ b/src/input/function_keys.zig @@ -116,7 +116,7 @@ pub const keys = keys: { result.set(.kp_multiply, kpDefault("j") ++ pcStyle("\x1bO{}j")); result.set(.kp_subtract, kpDefault("m") ++ pcStyle("\x1bO{}m")); result.set(.kp_add, kpDefault("k") ++ pcStyle("\x1bO{}k")); - result.set(.kp_enter, kpDefault("M") ++ pcStyle("\x1bO{}M")); + result.set(.kp_enter, kpDefault("M") ++ pcStyle("\x1bO{}M") ++ .{.{ .sequence = "\r" }}); result.set(.backspace, &.{ // Modify Keys Normal