oxwm

https://git.tonybtw.com/oxwm.git git://git.tonybtw.com/oxwm.git

modularized keyboard

Commit
7ed4196a843cbbfcf599fd148bc45b356a69ed16
Parent
ed1cbf5
Author
tonybtw <tonybtw@tonybtw.com>
Date
2025-09-28 18:53:16

Diff

diff --git a/src/keys.rs b/src/keyboard/handlers.rs
similarity index 85%
rename from src/keys.rs
rename to src/keyboard/handlers.rs
index af2a0bf..9684171 100644
--- a/src/keys.rs
+++ b/src/keyboard/handlers.rs
@@ -1,4 +1,4 @@
-use crate::keyboard;
+use crate::keyboard::keycodes;
 use anyhow::Result;
 use x11rb::connection::Connection;
 use x11rb::protocol::xproto::*;
@@ -8,7 +8,7 @@ pub fn setup_keybinds(connection: &impl Connection, root: Window) -> Result<()>
         false,
         root,
         ModMask::M4.into(),
-        keyboard::RETURN,
+        keycodes::RETURN,
         GrabMode::ASYNC,
         GrabMode::ASYNC,
     )?;
@@ -16,32 +16,29 @@ pub fn setup_keybinds(connection: &impl Connection, root: Window) -> Result<()>
         false,
         root,
         (ModMask::M1 | ModMask::SHIFT).into(),
-        keyboard::Q,
+        keycodes::Q,
         GrabMode::ASYNC,
         GrabMode::ASYNC,
     )?;
-
     connection.grab_key(
         false,
         root,
         ModMask::M4.into(),
-        keyboard::Q,
+        keycodes::Q,
         GrabMode::ASYNC,
         GrabMode::ASYNC,
     )?;
-
     Ok(())
 }
 
 pub fn handle_key_press(connection: &impl Connection, event: KeyPressEvent) -> Result<()> {
     println!("KeyPress: detail={}, state={:?}", event.detail, event.state);
-
     match (event.detail, event.state) {
-        (keyboard::RETURN, state) if state.contains(KeyButMask::MOD1) => {
+        (keycodes::RETURN, state) if state.contains(KeyButMask::MOD1) => {
             println!("Spawning terminal");
             std::process::Command::new("xterm").spawn()?;
         }
-        (keyboard::Q, state) if state.contains(KeyButMask::MOD1 | KeyButMask::SHIFT) => {
+        (keycodes::Q, state) if state.contains(KeyButMask::MOD1 | KeyButMask::SHIFT) => {
             println!("Closing focused window");
             let focus_reply = connection.get_input_focus()?.reply()?;
             if focus_reply.focus != x11rb::NONE && focus_reply.focus != event.root {
diff --git a/src/keyboard.rs b/src/keyboard/keycodes.rs
similarity index 100%
rename from src/keyboard.rs
rename to src/keyboard/keycodes.rs
diff --git a/src/keyboard/mod.rs b/src/keyboard/mod.rs
new file mode 100644
index 0000000..6a2c04c
--- /dev/null
+++ b/src/keyboard/mod.rs
@@ -0,0 +1,7 @@
+// Re-export the public interface
+pub mod handlers;
+pub mod keycodes;
+
+// Re-export commonly used items for convenience
+pub use handlers::{handle_key_press, setup_keybinds};
+pub use keycodes::*;
diff --git a/src/main.rs b/src/main.rs
index 96967ce..c4f3280 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -1,6 +1,5 @@
 use anyhow::Result;
 mod keyboard;
-mod keys;
 mod layout;
 mod window_manager;
 
diff --git a/src/window_manager.rs b/src/window_manager.rs
index f63758c..329c1d2 100644
--- a/src/window_manager.rs
+++ b/src/window_manager.rs
@@ -1,4 +1,5 @@
-use crate::keys;
+use crate::keyboard;
+// use crate::keys;
 use crate::layout::Layout;
 use crate::layout::tiling::TilingLayout;
 
@@ -49,7 +50,7 @@ impl WindowManager {
     pub fn run(&mut self) -> Result<()> {
         println!("oxwm started on display {}", self.screen_number);
 
-        keys::setup_keybinds(&self.connection, self.root)?;
+        keyboard::setup_keybinds(&self.connection, self.root)?;
 
         loop {
             let event = self.connection.wait_for_event()?;
@@ -73,7 +74,7 @@ impl WindowManager {
             }
             Event::KeyPress(event) => {
                 println!("KeyPress event received!");
-                keys::handle_key_press(&self.connection, event)?;
+                keyboard::handle_key_press(&self.connection, event)?;
             }
             _ => {}
         }