diff --git a/src/wayland/seat.rs b/src/wayland/seat.rs
index 97f5b96..fcdc6a9 100644
--- a/src/wayland/seat.rs
+++ b/src/wayland/seat.rs
@@ -60,7 +60,7 @@ impl WlClient {
let mut keymap_fd = self.keymap_fd.lock().unwrap();
*keymap_fd = Some(shm::ShmPool::from_fd(fd, size as usize)?);
- let mut keymap = self.keymap.lock().unwrap();
+ let mut keymap = self.keymap.write().unwrap();
*keymap = xkb::gen_id_keysym_mapping(keymap_fd.as_ref().unwrap());
Ok(())
@@ -73,12 +73,12 @@ impl WlClient {
let key = event.read_u32(&mut offset);
let state = event.read_u32(&mut offset);
- if let Some(keymap) = &*self.keymap.lock().unwrap() {
+ if let Some(keymap) = &*self.keymap.read().unwrap() {
if let Some(keysym) = keymap.get(&(key + 8)) {
- if keysym == "ESC" && state == 0 {
+ if keysym[0] == "Escape" && state == 0 {
self.exit();
}
- println!("Received key:\n\t{} {}", keysym, if state == 0 {'↑'} else {'↓'});
+ println!("Received key:\n\t{} {}", keysym[0], if state == 0 {'↑'} else {'↓'});
} else {
eprintln!("Unrecognized key!");
}
diff --git a/src/wayland/wl_client.rs b/src/wayland/wl_client.rs
index de2c6ea..10419b6 100644
--- a/src/wayland/wl_client.rs
+++ b/src/wayland/wl_client.rs
@@ -1,4 +1,4 @@
-use std::{collections::HashMap, env::var, error::Error, fmt::Debug, io::{IoSliceMut, Write}, os::unix::net::{AncillaryData, SocketAncillary, UnixStream}, sync::{atomic::{AtomicU32, AtomicBool, Ordering}, mpsc, Arc, Mutex}, thread::{self}, time::Duration, u32};
+use std::{collections::HashMap, env::var, error::Error, fmt::Debug, io::{IoSliceMut, Write}, os::unix::net::{AncillaryData, SocketAncillary, UnixStream}, sync::{atomic::{AtomicBool, AtomicU32, Ordering}, mpsc, Arc, Mutex, RwLock}, thread::{self}, time::Duration, u32};
use crate::wayland::{shm, vec_utils::WlMessage};
@@ -31,7 +31,7 @@ pub struct WlClient {
pub seat_id: AtomicU32,
pub keyboard_id: AtomicU32,
pub keymap_fd: Mutex