Rename bind -> map
This commit is contained in:
parent
70cc318518
commit
62abfc5ee5
7 changed files with 60 additions and 59 deletions
|
@ -23,7 +23,7 @@ const c = @import("c.zig");
|
||||||
|
|
||||||
const Log = @import("log.zig").Log;
|
const Log = @import("log.zig").Log;
|
||||||
const Server = @import("Server.zig");
|
const Server = @import("Server.zig");
|
||||||
const Keybind = @import("Keybind.zig");
|
const Mapping = @import("Mapping.zig");
|
||||||
|
|
||||||
/// Width of borders in pixels
|
/// Width of borders in pixels
|
||||||
border_width: u32,
|
border_width: u32,
|
||||||
|
@ -34,11 +34,11 @@ view_padding: u32,
|
||||||
/// Amount of padding arount the outer edge of the layout in pixels
|
/// Amount of padding arount the outer edge of the layout in pixels
|
||||||
outer_padding: u32,
|
outer_padding: u32,
|
||||||
|
|
||||||
/// Map of mode name to mode id
|
/// Map of keymap mode name to mode id
|
||||||
mode_to_id: std.StringHashMap(usize),
|
mode_to_id: std.StringHashMap(usize),
|
||||||
|
|
||||||
/// All user-defined keybinding modes, indexed by mode id
|
/// All user-defined keymap modes, indexed by mode id
|
||||||
modes: std.ArrayList(std.ArrayList(Keybind)),
|
modes: std.ArrayList(std.ArrayList(Mapping)),
|
||||||
|
|
||||||
/// List of app_ids which will be started floating
|
/// List of app_ids which will be started floating
|
||||||
float_filter: std.ArrayList([*:0]const u8),
|
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("normal", 0);
|
||||||
try self.mode_to_id.putNoClobber("passthrough", 1);
|
try self.mode_to_id.putNoClobber("passthrough", 1);
|
||||||
|
|
||||||
self.modes = std.ArrayList(std.ArrayList(Keybind)).init(allocator);
|
self.modes = std.ArrayList(std.ArrayList(Mapping)).init(allocator);
|
||||||
try self.modes.append(std.ArrayList(Keybind).init(allocator));
|
try self.modes.append(std.ArrayList(Mapping).init(allocator));
|
||||||
try self.modes.append(std.ArrayList(Keybind).init(allocator));
|
try self.modes.append(std.ArrayList(Mapping).init(allocator));
|
||||||
|
|
||||||
self.float_filter = std.ArrayList([*:0]const u8).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;
|
const mod = c.WLR_MODIFIER_LOGO;
|
||||||
|
|
||||||
// Mod+Shift+Return to start an instance of alacritty
|
// Mod+Shift+Return to start an instance of alacritty
|
||||||
try normal_keybinds.append(try Keybind.init(
|
try normal_keybinds.append(try Mapping.init(
|
||||||
allocator,
|
allocator,
|
||||||
c.XKB_KEY_Return,
|
c.XKB_KEY_Return,
|
||||||
mod | c.WLR_MODIFIER_SHIFT,
|
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
|
// Mod+Q to close the focused view
|
||||||
try normal_keybinds.append(try Keybind.init(
|
try normal_keybinds.append(try Mapping.init(
|
||||||
allocator,
|
allocator,
|
||||||
c.XKB_KEY_q,
|
c.XKB_KEY_q,
|
||||||
mod,
|
mod,
|
||||||
|
@ -78,7 +78,7 @@ pub fn init(self: *Self, allocator: *std.mem.Allocator) !void {
|
||||||
));
|
));
|
||||||
|
|
||||||
// Mod+E to exit river
|
// Mod+E to exit river
|
||||||
try normal_keybinds.append(try Keybind.init(
|
try normal_keybinds.append(try Mapping.init(
|
||||||
allocator,
|
allocator,
|
||||||
c.XKB_KEY_e,
|
c.XKB_KEY_e,
|
||||||
mod,
|
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
|
// 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,
|
allocator,
|
||||||
c.XKB_KEY_j,
|
c.XKB_KEY_j,
|
||||||
mod,
|
mod,
|
||||||
&[_][]const u8{ "focus", "next" },
|
&[_][]const u8{ "focus", "next" },
|
||||||
));
|
));
|
||||||
try normal_keybinds.append(try Keybind.init(
|
try normal_keybinds.append(try Mapping.init(
|
||||||
allocator,
|
allocator,
|
||||||
c.XKB_KEY_k,
|
c.XKB_KEY_k,
|
||||||
mod,
|
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,
|
// Mod+Return to bump the focused view to the top of the layout stack,
|
||||||
// making it the new master
|
// making it the new master
|
||||||
try normal_keybinds.append(try Keybind.init(
|
try normal_keybinds.append(try Mapping.init(
|
||||||
allocator,
|
allocator,
|
||||||
c.XKB_KEY_Return,
|
c.XKB_KEY_Return,
|
||||||
mod,
|
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
|
// 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,
|
allocator,
|
||||||
c.XKB_KEY_h,
|
c.XKB_KEY_h,
|
||||||
mod,
|
mod,
|
||||||
&[_][]const u8{ "mod_master_factor", "+0.05" },
|
&[_][]const u8{ "mod_master_factor", "+0.05" },
|
||||||
));
|
));
|
||||||
try normal_keybinds.append(try Keybind.init(
|
try normal_keybinds.append(try Mapping.init(
|
||||||
allocator,
|
allocator,
|
||||||
c.XKB_KEY_l,
|
c.XKB_KEY_l,
|
||||||
mod,
|
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
|
// Mod+Shift+H and Mod+Shift+L to increment/decrement the number of
|
||||||
// master views in the layout
|
// master views in the layout
|
||||||
try normal_keybinds.append(try Keybind.init(
|
try normal_keybinds.append(try Mapping.init(
|
||||||
allocator,
|
allocator,
|
||||||
c.XKB_KEY_h,
|
c.XKB_KEY_h,
|
||||||
mod | c.WLR_MODIFIER_SHIFT,
|
mod | c.WLR_MODIFIER_SHIFT,
|
||||||
&[_][]const u8{ "mod_master_count", "+1" },
|
&[_][]const u8{ "mod_master_count", "+1" },
|
||||||
));
|
));
|
||||||
try normal_keybinds.append(try Keybind.init(
|
try normal_keybinds.append(try Mapping.init(
|
||||||
allocator,
|
allocator,
|
||||||
c.XKB_KEY_l,
|
c.XKB_KEY_l,
|
||||||
mod | c.WLR_MODIFIER_SHIFT,
|
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) {
|
inline while (i < 9) : (i += 1) {
|
||||||
const str = &[_]u8{i + '0' + 1};
|
const str = &[_]u8{i + '0' + 1};
|
||||||
// Mod+[1-9] to focus tag [1-9]
|
// Mod+[1-9] to focus tag [1-9]
|
||||||
try normal_keybinds.append(try Keybind.init(
|
try normal_keybinds.append(try Mapping.init(
|
||||||
allocator,
|
allocator,
|
||||||
c.XKB_KEY_1 + i,
|
c.XKB_KEY_1 + i,
|
||||||
mod,
|
mod,
|
||||||
&[_][]const u8{ "focus_tag", str },
|
&[_][]const u8{ "focus_tag", str },
|
||||||
));
|
));
|
||||||
// Mod+Shift+[1-9] to tag focused view with tag [1-9]
|
// 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,
|
allocator,
|
||||||
c.XKB_KEY_1 + i,
|
c.XKB_KEY_1 + i,
|
||||||
mod | c.WLR_MODIFIER_SHIFT,
|
mod | c.WLR_MODIFIER_SHIFT,
|
||||||
&[_][]const u8{ "tag_view", str },
|
&[_][]const u8{ "tag_view", str },
|
||||||
));
|
));
|
||||||
// Mod+Ctrl+[1-9] to toggle focus of tag [1-9]
|
// 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,
|
allocator,
|
||||||
c.XKB_KEY_1 + i,
|
c.XKB_KEY_1 + i,
|
||||||
mod | c.WLR_MODIFIER_CTRL,
|
mod | c.WLR_MODIFIER_CTRL,
|
||||||
&[_][]const u8{ "toggle_tag_focus", str },
|
&[_][]const u8{ "toggle_tag_focus", str },
|
||||||
));
|
));
|
||||||
// Mod+Shift+Ctrl+[1-9] to toggle tag [1-9] of focused view
|
// 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,
|
allocator,
|
||||||
c.XKB_KEY_1 + i,
|
c.XKB_KEY_1 + i,
|
||||||
mod | c.WLR_MODIFIER_CTRL | c.WLR_MODIFIER_SHIFT,
|
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
|
// Mod+0 to focus all tags
|
||||||
try normal_keybinds.append(try Keybind.init(
|
try normal_keybinds.append(try Mapping.init(
|
||||||
allocator,
|
allocator,
|
||||||
c.XKB_KEY_0,
|
c.XKB_KEY_0,
|
||||||
mod,
|
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
|
// 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,
|
allocator,
|
||||||
c.XKB_KEY_0,
|
c.XKB_KEY_0,
|
||||||
mod | c.WLR_MODIFIER_SHIFT,
|
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
|
// 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,
|
allocator,
|
||||||
c.XKB_KEY_period,
|
c.XKB_KEY_period,
|
||||||
mod,
|
mod,
|
||||||
&[_][]const u8{ "focus_output", "next" },
|
&[_][]const u8{ "focus_output", "next" },
|
||||||
));
|
));
|
||||||
try normal_keybinds.append(try Keybind.init(
|
try normal_keybinds.append(try Mapping.init(
|
||||||
allocator,
|
allocator,
|
||||||
c.XKB_KEY_comma,
|
c.XKB_KEY_comma,
|
||||||
mod,
|
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
|
// Mod+Shift+Period/Comma to send the focused view to the the
|
||||||
// next/previous output
|
// next/previous output
|
||||||
try normal_keybinds.append(try Keybind.init(
|
try normal_keybinds.append(try Mapping.init(
|
||||||
allocator,
|
allocator,
|
||||||
c.XKB_KEY_period,
|
c.XKB_KEY_period,
|
||||||
mod | c.WLR_MODIFIER_SHIFT,
|
mod | c.WLR_MODIFIER_SHIFT,
|
||||||
&[_][]const u8{ "send_to_output", "next" },
|
&[_][]const u8{ "send_to_output", "next" },
|
||||||
));
|
));
|
||||||
try normal_keybinds.append(try Keybind.init(
|
try normal_keybinds.append(try Mapping.init(
|
||||||
allocator,
|
allocator,
|
||||||
c.XKB_KEY_comma,
|
c.XKB_KEY_comma,
|
||||||
mod | c.WLR_MODIFIER_SHIFT,
|
mod | c.WLR_MODIFIER_SHIFT,
|
||||||
|
@ -216,7 +216,7 @@ pub fn init(self: *Self, allocator: *std.mem.Allocator) !void {
|
||||||
));
|
));
|
||||||
|
|
||||||
// Mod+Space to toggle float
|
// Mod+Space to toggle float
|
||||||
try normal_keybinds.append(try Keybind.init(
|
try normal_keybinds.append(try Mapping.init(
|
||||||
allocator,
|
allocator,
|
||||||
c.XKB_KEY_space,
|
c.XKB_KEY_space,
|
||||||
mod,
|
mod,
|
||||||
|
@ -224,7 +224,7 @@ pub fn init(self: *Self, allocator: *std.mem.Allocator) !void {
|
||||||
));
|
));
|
||||||
|
|
||||||
// Mod+F11 to enter passthrough mode
|
// Mod+F11 to enter passthrough mode
|
||||||
try normal_keybinds.append(try Keybind.init(
|
try normal_keybinds.append(try Mapping.init(
|
||||||
allocator,
|
allocator,
|
||||||
c.XKB_KEY_F11,
|
c.XKB_KEY_F11,
|
||||||
mod,
|
mod,
|
||||||
|
@ -232,25 +232,25 @@ pub fn init(self: *Self, allocator: *std.mem.Allocator) !void {
|
||||||
));
|
));
|
||||||
|
|
||||||
// Change master orientation with Mod+{Up,Right,Down,Left}
|
// Change master orientation with Mod+{Up,Right,Down,Left}
|
||||||
try normal_keybinds.append(try Keybind.init(
|
try normal_keybinds.append(try Mapping.init(
|
||||||
allocator,
|
allocator,
|
||||||
c.XKB_KEY_Up,
|
c.XKB_KEY_Up,
|
||||||
mod,
|
mod,
|
||||||
&[_][]const u8{ "layout", "TopMaster" },
|
&[_][]const u8{ "layout", "TopMaster" },
|
||||||
));
|
));
|
||||||
try normal_keybinds.append(try Keybind.init(
|
try normal_keybinds.append(try Mapping.init(
|
||||||
allocator,
|
allocator,
|
||||||
c.XKB_KEY_Right,
|
c.XKB_KEY_Right,
|
||||||
mod,
|
mod,
|
||||||
&[_][]const u8{ "layout", "RightMaster" },
|
&[_][]const u8{ "layout", "RightMaster" },
|
||||||
));
|
));
|
||||||
try normal_keybinds.append(try Keybind.init(
|
try normal_keybinds.append(try Mapping.init(
|
||||||
allocator,
|
allocator,
|
||||||
c.XKB_KEY_Down,
|
c.XKB_KEY_Down,
|
||||||
mod,
|
mod,
|
||||||
&[_][]const u8{ "layout", "BottomMaster" },
|
&[_][]const u8{ "layout", "BottomMaster" },
|
||||||
));
|
));
|
||||||
try normal_keybinds.append(try Keybind.init(
|
try normal_keybinds.append(try Mapping.init(
|
||||||
allocator,
|
allocator,
|
||||||
c.XKB_KEY_Left,
|
c.XKB_KEY_Left,
|
||||||
mod,
|
mod,
|
||||||
|
@ -258,7 +258,7 @@ pub fn init(self: *Self, allocator: *std.mem.Allocator) !void {
|
||||||
));
|
));
|
||||||
|
|
||||||
// Mod+f to change to Full layout
|
// Mod+f to change to Full layout
|
||||||
try normal_keybinds.append(try Keybind.init(
|
try normal_keybinds.append(try Mapping.init(
|
||||||
allocator,
|
allocator,
|
||||||
c.XKB_KEY_f,
|
c.XKB_KEY_f,
|
||||||
mod,
|
mod,
|
||||||
|
@ -266,7 +266,7 @@ pub fn init(self: *Self, allocator: *std.mem.Allocator) !void {
|
||||||
));
|
));
|
||||||
|
|
||||||
// Mod+F11 to return to normal mode
|
// 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,
|
allocator,
|
||||||
c.XKB_KEY_F11,
|
c.XKB_KEY_F11,
|
||||||
mod,
|
mod,
|
||||||
|
|
|
@ -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 !)
|
// 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;
|
var raw_keysyms: ?[*]c.xkb_keysym_t = undefined;
|
||||||
const layout_index = c.xkb_state_key_get_layout(wlr_keyboard.xkb_state, keycode);
|
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(
|
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) {
|
if (event.state == .WLR_KEY_PRESSED) {
|
||||||
var i: usize = 0;
|
var i: usize = 0;
|
||||||
while (i < translated_keysyms_len) : (i += 1) {
|
while (i < translated_keysyms_len) : (i += 1) {
|
||||||
if (self.handleBuiltinKeybind(translated_keysyms.?[i])) {
|
if (self.handleBuiltinMapping(translated_keysyms.?[i])) {
|
||||||
handled = true;
|
handled = true;
|
||||||
break;
|
break;
|
||||||
} else if (self.seat.handleKeybinding(translated_keysyms.?[i], modifiers)) {
|
} else if (self.seat.handleMapping(translated_keysyms.?[i], modifiers)) {
|
||||||
handled = true;
|
handled = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -119,10 +119,10 @@ fn handleKey(listener: ?*c.wl_listener, data: ?*c_void) callconv(.C) void {
|
||||||
if (!handled) {
|
if (!handled) {
|
||||||
i = 0;
|
i = 0;
|
||||||
while (i < raw_keysyms_len) : (i += 1) {
|
while (i < raw_keysyms_len) : (i += 1) {
|
||||||
if (self.handleBuiltinKeybind(raw_keysyms.?[i])) {
|
if (self.handleBuiltinMapping(raw_keysyms.?[i])) {
|
||||||
handled = true;
|
handled = true;
|
||||||
break;
|
break;
|
||||||
} else if (self.seat.handleKeybinding(raw_keysyms.?[i], modifiers)) {
|
} else if (self.seat.handleMapping(raw_keysyms.?[i], modifiers)) {
|
||||||
handled = true;
|
handled = true;
|
||||||
break;
|
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.
|
/// 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) {
|
if (keysym >= c.XKB_KEY_XF86Switch_VT_1 and keysym <= c.XKB_KEY_XF86Switch_VT_12) {
|
||||||
Log.Debug.log("Switch VT keysym received", .{});
|
Log.Debug.log("Switch VT keysym received", .{});
|
||||||
const wlr_backend = self.seat.input_manager.server.wlr_backend;
|
const wlr_backend = self.seat.input_manager.server.wlr_backend;
|
||||||
|
|
12
src/Seat.zig
12
src/Seat.zig
|
@ -45,7 +45,7 @@ cursor: Cursor,
|
||||||
/// Mulitple keyboards are handled separately
|
/// Mulitple keyboards are handled separately
|
||||||
keyboards: std.TailQueue(Keyboard),
|
keyboards: std.TailQueue(Keyboard),
|
||||||
|
|
||||||
/// Id of the current keybind mode
|
/// ID of the current keymap mode
|
||||||
mode_id: usize,
|
mode_id: usize,
|
||||||
|
|
||||||
/// Currently focused output, may be the noop output if no
|
/// 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
|
/// 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;
|
const modes = &self.input_manager.server.config.modes;
|
||||||
for (modes.items[self.mode_id].items) |keybind| {
|
for (modes.items[self.mode_id].items) |mapping| {
|
||||||
if (modifiers == keybind.modifiers and keysym == keybind.keysym) {
|
if (modifiers == mapping.modifiers and keysym == mapping.keysym) {
|
||||||
// Execute the bound command
|
// Execute the bound command
|
||||||
const allocator = self.input_manager.server.allocator;
|
const allocator = self.input_manager.server.allocator;
|
||||||
var failure_message: []const u8 = undefined;
|
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
|
// TODO: log the error
|
||||||
if (err == command.Error.CommandFailed)
|
if (err == command.Error.CommandFailed)
|
||||||
allocator.free(failure_message);
|
allocator.free(failure_message);
|
||||||
|
|
|
@ -27,7 +27,7 @@ const impl = struct {
|
||||||
const focus = @import("command/focus.zig").focus;
|
const focus = @import("command/focus.zig").focus;
|
||||||
const focusAllTags = @import("command/focus_all_tags.zig").focusAllTags;
|
const focusAllTags = @import("command/focus_all_tags.zig").focusAllTags;
|
||||||
const focusOutput = @import("command/focus_output.zig").focusOutput;
|
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 focusTag = @import("command/focus_tag.zig").focusTag;
|
||||||
const layout = @import("command/layout.zig").layout;
|
const layout = @import("command/layout.zig").layout;
|
||||||
const modMasterCount = @import("command/mod_master_count.zig").modMasterCount;
|
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 = "mod_master_factor", .impl = impl.modMasterFactor },
|
||||||
.{ .name = "send_to_output", .impl = impl.sendToOutput },
|
.{ .name = "send_to_output", .impl = impl.sendToOutput },
|
||||||
.{ .name = "spawn", .impl = impl.spawn },
|
.{ .name = "spawn", .impl = impl.spawn },
|
||||||
.{ .name = "bind", .impl = impl.bind },
|
.{ .name = "map", .impl = impl.map },
|
||||||
.{ .name = "tag_view", .impl = impl.tagView },
|
.{ .name = "tag_view", .impl = impl.tagView },
|
||||||
.{ .name = "tag_view_all_tags", .impl = impl.tagViewAllTags },
|
.{ .name = "tag_view_all_tags", .impl = impl.tagViewAllTags },
|
||||||
.{ .name = "toggle_float", .impl = impl.toggleFloat },
|
.{ .name = "toggle_float", .impl = impl.toggleFloat },
|
||||||
|
|
|
@ -20,10 +20,10 @@ const std = @import("std");
|
||||||
const c = @import("../c.zig");
|
const c = @import("../c.zig");
|
||||||
|
|
||||||
const Error = @import("../command.zig").Error;
|
const Error = @import("../command.zig").Error;
|
||||||
const Keybind = @import("../Keybind.zig");
|
const Mapping = @import("../Mapping.zig");
|
||||||
const Seat = @import("../Seat.zig");
|
const Seat = @import("../Seat.zig");
|
||||||
|
|
||||||
/// Declare a new keybind mode
|
/// Declare a new keymap mode
|
||||||
pub fn declareMode(
|
pub fn declareMode(
|
||||||
allocator: *std.mem.Allocator,
|
allocator: *std.mem.Allocator,
|
||||||
seat: *Seat,
|
seat: *Seat,
|
||||||
|
@ -47,5 +47,5 @@ pub fn declareMode(
|
||||||
|
|
||||||
try config.mode_to_id.putNoClobber(new_mode_name, config.modes.items.len);
|
try config.mode_to_id.putNoClobber(new_mode_name, config.modes.items.len);
|
||||||
errdefer _ = config.mode_to_id.remove(new_mode_name);
|
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));
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ const std = @import("std");
|
||||||
const c = @import("../c.zig");
|
const c = @import("../c.zig");
|
||||||
|
|
||||||
const Error = @import("../command.zig").Error;
|
const Error = @import("../command.zig").Error;
|
||||||
const Keybind = @import("../Keybind.zig");
|
const Mapping = @import("../Mapping.zig");
|
||||||
const Seat = @import("../Seat.zig");
|
const Seat = @import("../Seat.zig");
|
||||||
|
|
||||||
const modifier_names = [_]struct {
|
const modifier_names = [_]struct {
|
||||||
|
@ -37,10 +37,11 @@ const modifier_names = [_]struct {
|
||||||
.{ .name = "Mod5", .modifier = c.WLR_MODIFIER_MOD5 },
|
.{ .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
|
/// Example:
|
||||||
pub fn bind(
|
/// map normal Mod4|Shift Return spawn alacritty
|
||||||
|
pub fn map(
|
||||||
allocator: *std.mem.Allocator,
|
allocator: *std.mem.Allocator,
|
||||||
seat: *Seat,
|
seat: *Seat,
|
||||||
args: []const []const u8,
|
args: []const []const u8,
|
||||||
|
@ -54,7 +55,7 @@ pub fn bind(
|
||||||
const mode_id = config.mode_to_id.getValue(target_mode) orelse {
|
const mode_id = config.mode_to_id.getValue(target_mode) orelse {
|
||||||
failure_message.* = try std.fmt.allocPrint(
|
failure_message.* = try std.fmt.allocPrint(
|
||||||
allocator,
|
allocator,
|
||||||
"cannot add keybind to non-existant mode '{}'",
|
"cannot add mapping to non-existant mode '{}p'",
|
||||||
.{target_mode},
|
.{target_mode},
|
||||||
);
|
);
|
||||||
return Error.CommandFailed;
|
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..]));
|
||||||
}
|
}
|
Loading…
Reference in a new issue