diff --git a/src/Config.zig b/src/Config.zig index e887efe..20b7504 100644 --- a/src/Config.zig +++ b/src/Config.zig @@ -23,7 +23,7 @@ const c = @import("c.zig"); const Log = @import("log.zig").Log; const Server = @import("Server.zig"); -const Keybind = @import("Keybind.zig"); +const Mapping = @import("Mapping.zig"); /// Width of borders in pixels border_width: u32, @@ -34,11 +34,11 @@ view_padding: u32, /// Amount of padding arount the outer edge of the layout in pixels outer_padding: u32, -/// Map of mode name to mode id +/// Map of keymap mode name to mode id mode_to_id: std.StringHashMap(usize), -/// All user-defined keybinding modes, indexed by mode id -modes: std.ArrayList(std.ArrayList(Keybind)), +/// All user-defined keymap modes, indexed by mode id +modes: std.ArrayList(std.ArrayList(Mapping)), /// List of app_ids which will be started floating float_filter: std.ArrayList([*:0]const u8), @@ -52,9 +52,9 @@ pub fn init(self: *Self, allocator: *std.mem.Allocator) !void { try self.mode_to_id.putNoClobber("normal", 0); try self.mode_to_id.putNoClobber("passthrough", 1); - self.modes = std.ArrayList(std.ArrayList(Keybind)).init(allocator); - try self.modes.append(std.ArrayList(Keybind).init(allocator)); - try self.modes.append(std.ArrayList(Keybind).init(allocator)); + self.modes = std.ArrayList(std.ArrayList(Mapping)).init(allocator); + try self.modes.append(std.ArrayList(Mapping).init(allocator)); + try self.modes.append(std.ArrayList(Mapping).init(allocator)); self.float_filter = std.ArrayList([*:0]const u8).init(allocator); @@ -62,7 +62,7 @@ pub fn init(self: *Self, allocator: *std.mem.Allocator) !void { const mod = c.WLR_MODIFIER_LOGO; // Mod+Shift+Return to start an instance of alacritty - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_Return, mod | c.WLR_MODIFIER_SHIFT, @@ -70,7 +70,7 @@ pub fn init(self: *Self, allocator: *std.mem.Allocator) !void { )); // Mod+Q to close the focused view - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_q, mod, @@ -78,7 +78,7 @@ pub fn init(self: *Self, allocator: *std.mem.Allocator) !void { )); // Mod+E to exit river - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_e, mod, @@ -86,13 +86,13 @@ pub fn init(self: *Self, allocator: *std.mem.Allocator) !void { )); // Mod+J and Mod+K to focus the next/previous view in the layout stack - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_j, mod, &[_][]const u8{ "focus", "next" }, )); - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_k, mod, @@ -101,7 +101,7 @@ pub fn init(self: *Self, allocator: *std.mem.Allocator) !void { // Mod+Return to bump the focused view to the top of the layout stack, // making it the new master - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_Return, mod, @@ -109,13 +109,13 @@ pub fn init(self: *Self, allocator: *std.mem.Allocator) !void { )); // Mod+H and Mod+L to increase/decrease the width of the master column - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_h, mod, &[_][]const u8{ "mod_master_factor", "+0.05" }, )); - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_l, mod, @@ -124,13 +124,13 @@ pub fn init(self: *Self, allocator: *std.mem.Allocator) !void { // Mod+Shift+H and Mod+Shift+L to increment/decrement the number of // master views in the layout - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_h, mod | c.WLR_MODIFIER_SHIFT, &[_][]const u8{ "mod_master_count", "+1" }, )); - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_l, mod | c.WLR_MODIFIER_SHIFT, @@ -141,28 +141,28 @@ pub fn init(self: *Self, allocator: *std.mem.Allocator) !void { inline while (i < 9) : (i += 1) { const str = &[_]u8{i + '0' + 1}; // Mod+[1-9] to focus tag [1-9] - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_1 + i, mod, &[_][]const u8{ "focus_tag", str }, )); // Mod+Shift+[1-9] to tag focused view with tag [1-9] - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_1 + i, mod | c.WLR_MODIFIER_SHIFT, &[_][]const u8{ "tag_view", str }, )); // Mod+Ctrl+[1-9] to toggle focus of tag [1-9] - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_1 + i, mod | c.WLR_MODIFIER_CTRL, &[_][]const u8{ "toggle_tag_focus", str }, )); // Mod+Shift+Ctrl+[1-9] to toggle tag [1-9] of focused view - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_1 + i, mod | c.WLR_MODIFIER_CTRL | c.WLR_MODIFIER_SHIFT, @@ -171,7 +171,7 @@ pub fn init(self: *Self, allocator: *std.mem.Allocator) !void { } // Mod+0 to focus all tags - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_0, mod, @@ -179,7 +179,7 @@ pub fn init(self: *Self, allocator: *std.mem.Allocator) !void { )); // Mod+Shift+0 to tag focused view with all tags - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_0, mod | c.WLR_MODIFIER_SHIFT, @@ -187,13 +187,13 @@ pub fn init(self: *Self, allocator: *std.mem.Allocator) !void { )); // Mod+Period and Mod+Comma to focus the next/previous output - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_period, mod, &[_][]const u8{ "focus_output", "next" }, )); - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_comma, mod, @@ -202,13 +202,13 @@ pub fn init(self: *Self, allocator: *std.mem.Allocator) !void { // Mod+Shift+Period/Comma to send the focused view to the the // next/previous output - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_period, mod | c.WLR_MODIFIER_SHIFT, &[_][]const u8{ "send_to_output", "next" }, )); - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_comma, mod | c.WLR_MODIFIER_SHIFT, @@ -216,7 +216,7 @@ pub fn init(self: *Self, allocator: *std.mem.Allocator) !void { )); // Mod+Space to toggle float - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_space, mod, @@ -224,7 +224,7 @@ pub fn init(self: *Self, allocator: *std.mem.Allocator) !void { )); // Mod+F11 to enter passthrough mode - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_F11, mod, @@ -232,25 +232,25 @@ pub fn init(self: *Self, allocator: *std.mem.Allocator) !void { )); // Change master orientation with Mod+{Up,Right,Down,Left} - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_Up, mod, &[_][]const u8{ "layout", "TopMaster" }, )); - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_Right, mod, &[_][]const u8{ "layout", "RightMaster" }, )); - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_Down, mod, &[_][]const u8{ "layout", "BottomMaster" }, )); - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_Left, mod, @@ -258,7 +258,7 @@ pub fn init(self: *Self, allocator: *std.mem.Allocator) !void { )); // Mod+f to change to Full layout - try normal_keybinds.append(try Keybind.init( + try normal_keybinds.append(try Mapping.init( allocator, c.XKB_KEY_f, mod, @@ -266,7 +266,7 @@ pub fn init(self: *Self, allocator: *std.mem.Allocator) !void { )); // Mod+F11 to return to normal mode - try self.modes.items[1].append(try Keybind.init( + try self.modes.items[1].append(try Mapping.init( allocator, c.XKB_KEY_F11, mod, diff --git a/src/Keyboard.zig b/src/Keyboard.zig index 8c19b84..cbfd6cd 100644 --- a/src/Keyboard.zig +++ b/src/Keyboard.zig @@ -91,7 +91,7 @@ fn handleKey(listener: ?*c.wl_listener, data: ?*c_void) callconv(.C) void { ); // Get a list of keysyms ignoring modifiers (e.g. 1 instead of !) - // Important for bindings like Mod+Shift+1 + // Important for mappings like Mod+Shift+1 var raw_keysyms: ?[*]c.xkb_keysym_t = undefined; const layout_index = c.xkb_state_key_get_layout(wlr_keyboard.xkb_state, keycode); const raw_keysyms_len = c.xkb_keymap_key_get_syms_by_level( @@ -108,10 +108,10 @@ fn handleKey(listener: ?*c.wl_listener, data: ?*c_void) callconv(.C) void { if (event.state == .WLR_KEY_PRESSED) { var i: usize = 0; while (i < translated_keysyms_len) : (i += 1) { - if (self.handleBuiltinKeybind(translated_keysyms.?[i])) { + if (self.handleBuiltinMapping(translated_keysyms.?[i])) { handled = true; break; - } else if (self.seat.handleKeybinding(translated_keysyms.?[i], modifiers)) { + } else if (self.seat.handleMapping(translated_keysyms.?[i], modifiers)) { handled = true; break; } @@ -119,10 +119,10 @@ fn handleKey(listener: ?*c.wl_listener, data: ?*c_void) callconv(.C) void { if (!handled) { i = 0; while (i < raw_keysyms_len) : (i += 1) { - if (self.handleBuiltinKeybind(raw_keysyms.?[i])) { + if (self.handleBuiltinMapping(raw_keysyms.?[i])) { handled = true; break; - } else if (self.seat.handleKeybinding(raw_keysyms.?[i], modifiers)) { + } else if (self.seat.handleMapping(raw_keysyms.?[i], modifiers)) { handled = true; break; } @@ -161,9 +161,9 @@ fn handleModifiers(listener: ?*c.wl_listener, data: ?*c_void) callconv(.C) void ); } -/// Handle any builtin, harcoded compsitor bindings such as VT switching. +/// Handle any builtin, harcoded compsitor mappings such as VT switching. /// Returns true if the keysym was handled. -fn handleBuiltinKeybind(self: Self, keysym: c.xkb_keysym_t) bool { +fn handleBuiltinMapping(self: Self, keysym: c.xkb_keysym_t) bool { if (keysym >= c.XKB_KEY_XF86Switch_VT_1 and keysym <= c.XKB_KEY_XF86Switch_VT_12) { Log.Debug.log("Switch VT keysym received", .{}); const wlr_backend = self.seat.input_manager.server.wlr_backend; diff --git a/src/Keybind.zig b/src/Mapping.zig similarity index 100% rename from src/Keybind.zig rename to src/Mapping.zig diff --git a/src/Seat.zig b/src/Seat.zig index 22388d1..82979fc 100644 --- a/src/Seat.zig +++ b/src/Seat.zig @@ -45,7 +45,7 @@ cursor: Cursor, /// Mulitple keyboards are handled separately keyboards: std.TailQueue(Keyboard), -/// Id of the current keybind mode +/// ID of the current keymap mode mode_id: usize, /// Currently focused output, may be the noop output if no @@ -246,16 +246,16 @@ pub fn handleViewUnmap(self: *Self, view: *View) void { } } -/// Handle any user-defined keybinding for the passed keysym and modifiers +/// Handle any user-defined mapping for the passed keysym and modifiers /// Returns true if the key was handled -pub fn handleKeybinding(self: *Self, keysym: c.xkb_keysym_t, modifiers: u32) bool { +pub fn handleMapping(self: *Self, keysym: c.xkb_keysym_t, modifiers: u32) bool { const modes = &self.input_manager.server.config.modes; - for (modes.items[self.mode_id].items) |keybind| { - if (modifiers == keybind.modifiers and keysym == keybind.keysym) { + for (modes.items[self.mode_id].items) |mapping| { + if (modifiers == mapping.modifiers and keysym == mapping.keysym) { // Execute the bound command const allocator = self.input_manager.server.allocator; var failure_message: []const u8 = undefined; - command.run(allocator, self, keybind.command_args, &failure_message) catch |err| { + command.run(allocator, self, mapping.command_args, &failure_message) catch |err| { // TODO: log the error if (err == command.Error.CommandFailed) allocator.free(failure_message); diff --git a/src/command.zig b/src/command.zig index 2bd53ba..c1db559 100644 --- a/src/command.zig +++ b/src/command.zig @@ -27,7 +27,7 @@ const impl = struct { const focus = @import("command/focus.zig").focus; const focusAllTags = @import("command/focus_all_tags.zig").focusAllTags; const focusOutput = @import("command/focus_output.zig").focusOutput; - const bind = @import("command/bind.zig").bind; + const map = @import("command/map.zig").map; const focusTag = @import("command/focus_tag.zig").focusTag; const layout = @import("command/layout.zig").layout; const modMasterCount = @import("command/mod_master_count.zig").modMasterCount; @@ -77,7 +77,7 @@ const str_to_impl_fn = [_]Definition{ .{ .name = "mod_master_factor", .impl = impl.modMasterFactor }, .{ .name = "send_to_output", .impl = impl.sendToOutput }, .{ .name = "spawn", .impl = impl.spawn }, - .{ .name = "bind", .impl = impl.bind }, + .{ .name = "map", .impl = impl.map }, .{ .name = "tag_view", .impl = impl.tagView }, .{ .name = "tag_view_all_tags", .impl = impl.tagViewAllTags }, .{ .name = "toggle_float", .impl = impl.toggleFloat }, diff --git a/src/command/declare_mode.zig b/src/command/declare_mode.zig index 6cc1489..943ede8 100644 --- a/src/command/declare_mode.zig +++ b/src/command/declare_mode.zig @@ -20,10 +20,10 @@ const std = @import("std"); const c = @import("../c.zig"); const Error = @import("../command.zig").Error; -const Keybind = @import("../Keybind.zig"); +const Mapping = @import("../Mapping.zig"); const Seat = @import("../Seat.zig"); -/// Declare a new keybind mode +/// Declare a new keymap mode pub fn declareMode( allocator: *std.mem.Allocator, seat: *Seat, @@ -47,5 +47,5 @@ pub fn declareMode( try config.mode_to_id.putNoClobber(new_mode_name, config.modes.items.len); errdefer _ = config.mode_to_id.remove(new_mode_name); - try config.modes.append(std.ArrayList(Keybind).init(allocator)); + try config.modes.append(std.ArrayList(Mapping).init(allocator)); } diff --git a/src/command/bind.zig b/src/command/map.zig similarity index 92% rename from src/command/bind.zig rename to src/command/map.zig index f8571bc..90c0b33 100644 --- a/src/command/bind.zig +++ b/src/command/map.zig @@ -20,7 +20,7 @@ const std = @import("std"); const c = @import("../c.zig"); const Error = @import("../command.zig").Error; -const Keybind = @import("../Keybind.zig"); +const Mapping = @import("../Mapping.zig"); const Seat = @import("../Seat.zig"); const modifier_names = [_]struct { @@ -37,10 +37,11 @@ const modifier_names = [_]struct { .{ .name = "Mod5", .modifier = c.WLR_MODIFIER_MOD5 }, }; -/// Create a new keybind for a given mode +/// Create a new mapping for a given mode /// -/// bind normal Control|Shift|Mod4 Comma spawn alacritty -pub fn bind( +/// Example: +/// map normal Mod4|Shift Return spawn alacritty +pub fn map( allocator: *std.mem.Allocator, seat: *Seat, args: []const []const u8, @@ -54,7 +55,7 @@ pub fn bind( const mode_id = config.mode_to_id.getValue(target_mode) orelse { failure_message.* = try std.fmt.allocPrint( allocator, - "cannot add keybind to non-existant mode '{}'", + "cannot add mapping to non-existant mode '{}p'", .{target_mode}, ); return Error.CommandFailed; @@ -105,5 +106,5 @@ pub fn bind( } } - try mode_mappings.append(try Keybind.init(allocator, keysym, modifiers, args[4..])); + try mode_mappings.append(try Mapping.init(allocator, keysym, modifiers, args[4..])); }