From c1ce38daaa9b1a44b6019283de215972dcf84ef2 Mon Sep 17 00:00:00 2001 From: CJ van den Berg Date: Sun, 9 Jun 2024 00:29:12 +0200 Subject: [PATCH] fix: ignore extended modifier bits --- src/renderer/vaxis/renderer.zig | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/renderer/vaxis/renderer.zig b/src/renderer/vaxis/renderer.zig index f2dbf9d..8f30693 100644 --- a/src/renderer/vaxis/renderer.zig +++ b/src/renderer/vaxis/renderer.zig @@ -146,7 +146,8 @@ pub fn leave_alternate_screen(self: *Self) void { pub fn process_input_event(self: *Self, input_: []const u8) !void { const event = std.mem.bytesAsValue(vaxis.Event, input_); switch (event.*) { - .key_press => |key_| { + .key_press => |key__| { + const key_ = filter_mods(key__); try self.sync_mod_state(key_.codepoint, key_.mods); const cbor_msg = try self.fmtmsg(.{ "I", @@ -162,7 +163,8 @@ pub fn process_input_event(self: *Self, input_: []const u8) !void { return e; }) {} else if (self.dispatch_input) |f| f(self.handler_ctx, cbor_msg); }, - .key_release => |*key_| { + .key_release => |key__| { + const key_ = filter_mods(key__); const cbor_msg = try self.fmtmsg(.{ "I", event_type.RELEASE, @@ -369,6 +371,16 @@ fn send_sync_key(self: *Self, event_type_: usize, keypress: u32, key_string: []c ); } +fn filter_mods(key_: vaxis.Key) vaxis.Key { + var key__ = key_; + key__.mods = .{ + .shift = key_.mods.shift, + .alt = key_.mods.alt, + .ctrl = key_.mods.ctrl, + }; + return key__; +} + const Loop = struct { tty: *vaxis.Tty, vaxis: *vaxis.Vaxis,