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)?;
}
_ => {}
}