kiwmi/src/input/keyboard.rs

42 lines
1.3 KiB
Rust
Raw Normal View History

2019-01-28 13:06:31 +01:00
use log::debug;
2019-01-09 10:10:55 +01:00
use wlroots::{
compositor,
input::{self, keyboard},
2019-01-28 13:06:31 +01:00
xkbcommon::xkb::{keysyms, keysym_get_name},
WLR_KEY_PRESSED,
2019-01-09 10:10:55 +01:00
};
pub struct Keyboard;
impl input::keyboard::Handler for Keyboard {
fn on_key(
&mut self,
compositor_handle: compositor::Handle,
_keyboard_handle: keyboard::Handle,
key_event: &keyboard::event::Key,
) {
for key in key_event.pressed_keys() {
2019-01-28 13:06:31 +01:00
if key_event.key_state() == WLR_KEY_PRESSED {
debug!("Key down: {}", keysym_get_name(key));
match key {
keysyms::KEY_Escape => compositor::terminate(),
keysyms::KEY_XF86Switch_VT_1..=keysyms::KEY_XF86Switch_VT_12 => {
compositor_handle
.run(|compositor| {
let backend = compositor.backend_mut();
if let Some(mut session) = backend.get_session() {
session.change_vt(key - keysyms::KEY_XF86Switch_VT_1 + 1);
}
})
.unwrap();
}
_ => {}
2019-01-09 10:10:55 +01:00
}
2019-01-28 13:06:31 +01:00
} else {
debug!("Key up: {}", keysym_get_name(key));
2019-01-09 10:10:55 +01:00
}
}
}
}