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