From 84f1aef100c5f60cfb9086ca872cbf274092696c Mon Sep 17 00:00:00 2001 From: Victor Berger Date: Sun, 13 Dec 2015 15:13:23 +0100 Subject: api/wayland: add keyboard support. --- src/api/wayland/context.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'src/api/wayland/context.rs') diff --git a/src/api/wayland/context.rs b/src/api/wayland/context.rs index 4b39d85..285f50c 100644 --- a/src/api/wayland/context.rs +++ b/src/api/wayland/context.rs @@ -14,6 +14,7 @@ use wayland_client::wayland::shell::WlShell; use wayland_client::wayland::shm::WlShm; use wayland_client::wayland::subcompositor::WlSubcompositor; +use super::wayland_kbd::MappedKeyboard; use super::wayland_window::DecoratedSurface; lazy_static! { @@ -34,6 +35,7 @@ pub struct WaylandFocuses { pub pointer: Option, pub pointer_on: Option, pub pointer_at: Option<(f64, f64)>, + pub keyboard: Option, pub keyboard_on: Option } @@ -72,6 +74,7 @@ impl WaylandContext { pointer: None, pointer_on: None, pointer_at: None, + keyboard: None, keyboard_on: None }) }) @@ -119,11 +122,19 @@ impl WaylandContext { self.inner.display.dispatch_pending().unwrap(); let mut iterator = self.iterator.lock().unwrap(); let mut focuses = self.focuses.lock().unwrap(); - let known_ids = self.known_surfaces.lock().unwrap(); + let known_surfaces = self.known_surfaces.lock().unwrap(); let queues = self.queues.lock().unwrap(); + // first, keyboard events + let kdb_evts = super::keyboard::translate_kbd_events(&mut *focuses, &known_surfaces); + for (evt, id) in kdb_evts { + if let Some(q) = queues.get(&id) { + q.lock().unwrap().push_back(evt); + } + } + // then, the rest for evt in &mut *iterator { if let Some((evt, id)) = super::events::translate_event( - evt, &mut *focuses, &known_ids, + evt, &mut *focuses, &known_surfaces, self.inner.seat.as_ref().map(|s| &s.0)) { if let Some(q) = queues.get(&id) { -- cgit v1.2.3