From a5cfed8715b4ac8990bbde6531053fc4686b928d Mon Sep 17 00:00:00 2001 From: Drakulix Date: Sat, 15 Apr 2017 20:26:44 +0200 Subject: [PATCH] Impl key events --- src/backend/libinput.rs | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/backend/libinput.rs b/src/backend/libinput.rs index 9e61b61..f14e054 100644 --- a/src/backend/libinput.rs +++ b/src/backend/libinput.rs @@ -148,7 +148,18 @@ impl InputBackend for LibinputInputBackend { } }, Event::Touch(touch_event) => {}, - Event::Keyboard(keyboard_event) => {}, + Event::Keyboard(keyboard_event) => { + use ::input::event::keyboard::*; + match keyboard_event { + KeyboardEvent::Key(event) => { + if let Some(ref mut handler) = self.handler { + let device_seat = event.device().seat(); + handler.on_keyboard_key(self.seats.get(&device_seat).expect("Recieved key event of non existing Seat"), + event.time(), event.key(), event.key_state().into(), event.seat_key_count()); + } + } + } + }, Event::Pointer(pointer_event) => {}, _ => {}, //FIXME: What to do with the rest. } @@ -156,3 +167,12 @@ impl InputBackend for LibinputInputBackend { Ok(()) } } + +impl From<::input::event::keyboard::KeyState> for ::backend::input::KeyState { + fn from(libinput: ::input::event::keyboard::KeyState) -> Self { + match libinput { + ::input::event::keyboard::KeyState::Pressed => ::backend::input::KeyState::Pressed, + ::input::event::keyboard::KeyState::Released => ::backend::input::KeyState::Released, + } + } +}