Make Keyboard a toplevel struct
This commit is contained in:
parent
97d395dbfc
commit
ed98e8fe1a
@ -1,20 +1,20 @@
|
|||||||
|
const Self = @This();
|
||||||
|
|
||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
|
|
||||||
const c = @import("c.zig");
|
const c = @import("c.zig");
|
||||||
|
|
||||||
const Log = @import("log.zig").Log;
|
const Log = @import("log.zig").Log;
|
||||||
const Seat = @import("seat.zig");
|
const Seat = @import("seat.zig");
|
||||||
|
|
||||||
pub const Keyboard = struct {
|
seat: *Seat,
|
||||||
const Self = @This();
|
wlr_input_device: *c.wlr_input_device,
|
||||||
|
wlr_keyboard: *c.wlr_keyboard,
|
||||||
|
|
||||||
seat: *Seat,
|
listen_key: c.wl_listener,
|
||||||
wlr_input_device: *c.wlr_input_device,
|
listen_modifiers: c.wl_listener,
|
||||||
wlr_keyboard: *c.wlr_keyboard,
|
|
||||||
|
|
||||||
listen_key: c.wl_listener,
|
pub fn init(self: *Self, seat: *Seat, wlr_input_device: *c.wlr_input_device) !void {
|
||||||
listen_modifiers: c.wl_listener,
|
|
||||||
|
|
||||||
pub fn init(self: *Self, seat: *Seat, wlr_input_device: *c.wlr_input_device) !void {
|
|
||||||
self.seat = seat;
|
self.seat = seat;
|
||||||
self.wlr_input_device = wlr_input_device;
|
self.wlr_input_device = wlr_input_device;
|
||||||
self.wlr_keyboard = @field(wlr_input_device, c.wlr_input_device_union).keyboard;
|
self.wlr_keyboard = @field(wlr_input_device, c.wlr_input_device_union).keyboard;
|
||||||
@ -50,9 +50,9 @@ pub const Keyboard = struct {
|
|||||||
|
|
||||||
self.listen_modifiers.notify = handleModifiers;
|
self.listen_modifiers.notify = handleModifiers;
|
||||||
c.wl_signal_add(&self.wlr_keyboard.events.modifiers, &self.listen_modifiers);
|
c.wl_signal_add(&self.wlr_keyboard.events.modifiers, &self.listen_modifiers);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handleKey(listener: ?*c.wl_listener, data: ?*c_void) callconv(.C) void {
|
fn handleKey(listener: ?*c.wl_listener, data: ?*c_void) callconv(.C) void {
|
||||||
// This event is raised when a key is pressed or released.
|
// This event is raised when a key is pressed or released.
|
||||||
const self = @fieldParentPtr(Self, "listen_key", listener.?);
|
const self = @fieldParentPtr(Self, "listen_key", listener.?);
|
||||||
const event = @ptrCast(
|
const event = @ptrCast(
|
||||||
@ -124,9 +124,9 @@ pub const Keyboard = struct {
|
|||||||
@intCast(u32, @enumToInt(event.state)),
|
@intCast(u32, @enumToInt(event.state)),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn handleModifiers(listener: ?*c.wl_listener, data: ?*c_void) callconv(.C) void {
|
fn handleModifiers(listener: ?*c.wl_listener, data: ?*c_void) callconv(.C) void {
|
||||||
// This event is raised when a modifier key, such as shift or alt, is
|
// This event is raised when a modifier key, such as shift or alt, is
|
||||||
// pressed. We simply communicate this to the client. */
|
// pressed. We simply communicate this to the client. */
|
||||||
const self = @fieldParentPtr(Self, "listen_modifiers", listener.?);
|
const self = @fieldParentPtr(Self, "listen_modifiers", listener.?);
|
||||||
@ -142,11 +142,11 @@ pub const Keyboard = struct {
|
|||||||
self.seat.wlr_seat,
|
self.seat.wlr_seat,
|
||||||
&self.wlr_keyboard.modifiers,
|
&self.wlr_keyboard.modifiers,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Handle any builtin, harcoded compsitor bindings such as VT switching.
|
/// Handle any builtin, harcoded compsitor bindings 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 handleBuiltinKeybind(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;
|
||||||
@ -160,5 +160,4 @@ pub const Keyboard = struct {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
@ -5,7 +5,7 @@ const std = @import("std");
|
|||||||
|
|
||||||
const Cursor = @import("cursor.zig");
|
const Cursor = @import("cursor.zig");
|
||||||
const InputManager = @import("input_manager.zig");
|
const InputManager = @import("input_manager.zig");
|
||||||
const Keyboard = @import("keyboard.zig").Keyboard;
|
const Keyboard = @import("keyboard.zig");
|
||||||
const LayerSurface = @import("layer_surface.zig");
|
const LayerSurface = @import("layer_surface.zig");
|
||||||
const Output = @import("output.zig");
|
const Output = @import("output.zig");
|
||||||
const View = @import("view.zig");
|
const View = @import("view.zig");
|
||||||
|
Loading…
Reference in New Issue
Block a user