refactor: move formatters for input types to input module
This commit is contained in:
parent
572f74d8ba
commit
5d381dcc7b
2 changed files with 44 additions and 16 deletions
|
@ -1,6 +1,7 @@
|
|||
const vaxis = @import("vaxis");
|
||||
|
||||
const utf8Encode = @import("std").unicode.utf8Encode;
|
||||
const FormatOptions = @import("std").fmt.FormatOptions;
|
||||
|
||||
pub const key = vaxis.Key;
|
||||
pub const Key = u21;
|
||||
|
@ -166,3 +167,44 @@ pub const utils = struct {
|
|||
};
|
||||
}
|
||||
};
|
||||
|
||||
pub fn event_fmt(evt: Event) struct {
|
||||
event: Event,
|
||||
pub fn format(self: @This(), comptime _: []const u8, _: FormatOptions, writer: anytype) !void {
|
||||
return switch (self.event) {
|
||||
event.press => writer.writeAll("press"),
|
||||
event.repeat => writer.writeAll("repeat"),
|
||||
event.release => writer.writeAll("release"),
|
||||
};
|
||||
}
|
||||
} {
|
||||
return .{ .event = evt };
|
||||
}
|
||||
|
||||
pub fn key_fmt(key_: Key) struct {
|
||||
key: Key,
|
||||
pub fn format(self: @This(), comptime _: []const u8, _: FormatOptions, writer: anytype) !void {
|
||||
var key_string = utils.key_id_string(self.key);
|
||||
var buf: [6]u8 = undefined;
|
||||
if (key_string.len == 0) {
|
||||
const bytes = try ucs32_to_utf8(&[_]u32{self.key}, &buf);
|
||||
key_string = buf[0..bytes];
|
||||
}
|
||||
try writer.writeAll(key_string);
|
||||
}
|
||||
} {
|
||||
return .{ .key = key_ };
|
||||
}
|
||||
|
||||
pub fn mod_fmt(mods: Mods) struct {
|
||||
modifiers: Mods,
|
||||
pub fn format(self: @This(), comptime _: []const u8, _: FormatOptions, writer: anytype) !void {
|
||||
const modset: ModSet = @bitCast(self.modifiers);
|
||||
if (modset.super) try writer.writeAll("super+");
|
||||
if (modset.ctrl) try writer.writeAll("ctrl+");
|
||||
if (modset.alt) try writer.writeAll("alt+");
|
||||
if (modset.shift) try writer.writeAll("shift+");
|
||||
}
|
||||
} {
|
||||
return .{ .modifiers = mods };
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue