From debeba99db71bd5ff42607bfddfcf5e14c3f3a37 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Fri, 3 Nov 2023 17:48:19 -0700 Subject: [PATCH] input: Binding.Trigger format --- src/cli/list_keybinds.zig | 32 +------------------------------- src/input/Binding.zig | 21 +++++++++++++++++++++ 2 files changed, 22 insertions(+), 31 deletions(-) diff --git a/src/cli/list_keybinds.zig b/src/cli/list_keybinds.zig index 625b6a8ec..1ce0d317c 100644 --- a/src/cli/list_keybinds.zig +++ b/src/cli/list_keybinds.zig @@ -57,40 +57,10 @@ fn listDefaultKeybinds(alloc: Allocator) !u8 { } fn iterConfig(stdout: anytype, iter: anytype) !u8 { - const start = @intFromEnum(inputpkg.Key.one); - var amount: u8 = 0; - while (iter.next()) |next| { const keys = next.key_ptr.*; const value = next.value_ptr.*; - try stdout.print("{}", .{value}); - - switch (keys.key) { - .one, .two, .three, .four, .five, .six, .seven, .eight, .nine => try stdout.print(" {d} +", .{(@intFromEnum(keys.key) - start) + 1}), - inline else => try stdout.print(" {s} +", .{@tagName(keys.key)}), - } - const fields = @typeInfo(@TypeOf(keys.mods)).Struct.fields; - inline for (fields) |field| { - switch (field.type) { - bool => { - if (@field(keys.mods, field.name)) { - if (amount >= 1) { - try stdout.print(" +", .{}); - } - try stdout.print(" {s}", .{field.name}); - amount += 1; - } - }, - u6 => continue, - - inline else => { - try stdout.print("\n", .{}); - continue; - }, - } - } - - amount = 0; + try stdout.print("{}={}\n", .{ keys, value }); } return 0; diff --git a/src/input/Binding.zig b/src/input/Binding.zig index d0af763a9..0531d6b12 100644 --- a/src/input/Binding.zig +++ b/src/input/Binding.zig @@ -416,6 +416,27 @@ pub const Trigger = extern struct { std.hash.autoHash(&hasher, self.physical); return hasher.final(); } + + /// Format implementation for fmt package. + pub fn format( + self: Trigger, + comptime layout: []const u8, + opts: std.fmt.FormatOptions, + writer: anytype, + ) !void { + _ = layout; + _ = opts; + + // Modifiers first + if (self.mods.super) try writer.writeAll("super+"); + if (self.mods.ctrl) try writer.writeAll("ctrl+"); + if (self.mods.alt) try writer.writeAll("alt+"); + if (self.mods.shift) try writer.writeAll("shift+"); + + // Key + if (self.physical) try writer.writeAll("physical:"); + try writer.print("{s}", .{@tagName(self.key)}); + } }; /// A structure that contains a set of bindings and focuses on fast lookup.