From a0bc6ae966896c9df6d95d89e9a58289176700a5 Mon Sep 17 00:00:00 2001 From: Tristan Partin Date: Thu, 5 Sep 2024 19:08:29 -0500 Subject: [PATCH] gtk: silence bad accelerator warnings Before this a commit a keybind of CTRL + \ would create a GTK accelerator of \, which is incorrect. It needs to be backslash, which can be retrieved with gdk_keyval_name(). Signed-off-by: Tristan Partin --- src/apprt/gtk/key.zig | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/apprt/gtk/key.zig b/src/apprt/gtk/key.zig index 887e10d7a..da4f6ea2b 100644 --- a/src/apprt/gtk/key.zig +++ b/src/apprt/gtk/key.zig @@ -20,7 +20,13 @@ pub fn accelFromTrigger(buf: []u8, trigger: input.Binding.Trigger) !?[:0]const u try writer.writeAll(std.mem.sliceTo(c.gdk_keyval_name(keyval), 0)); }, - .unicode => |cp| try writer.print("{u}", .{cp}), + .unicode => |cp| { + if (c.gdk_keyval_name(cp)) |name| { + try writer.writeAll(std.mem.sliceTo(name, 0)); + } else { + try writer.print("{u}", .{cp}); + } + }, } // We need to make the string null terminated. @@ -74,6 +80,11 @@ test "accelFromTrigger" { .mods = .{ .super = true }, .key = .{ .translated = .q }, })).?); + + try testing.expectEqualStrings("backslash", (try accelFromTrigger(&buf, .{ + .mods = .{ .ctrl = true, .alt = true, .super = true, .shift = true }, + .key = .{ .unicode = 92 }, + })).?); } /// A raw entry in the keymap. Our keymap contains mappings between