From 5dfc41a7b8c462f0d1e952098ef37e0186990bfd Mon Sep 17 00:00:00 2001 From: Asura Date: Tue, 2 Aug 2022 06:07:44 -0700 Subject: [PATCH] Ignore dead keys in Linux --- Cargo.lock | 2 +- src/ui/remote.rs | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7d4131d41..24418f0a5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3795,7 +3795,7 @@ dependencies = [ [[package]] name = "rdev" version = "0.5.0-2" -source = "git+https://github.com/asur4s/rdev#d009906ba983f26c7b6f6f1a5e3c76bf43164294" +source = "git+https://github.com/asur4s/rdev#c1175a394d811473e87ea79cb9a511a0f9b71764" dependencies = [ "cocoa", "core-foundation 0.9.3", diff --git a/src/ui/remote.rs b/src/ui/remote.rs index 213158bfc..203a20614 100644 --- a/src/ui/remote.rs +++ b/src/ui/remote.rs @@ -1077,7 +1077,17 @@ impl Handler { let string = match KEYBOARD.lock() { Ok(mut keyboard) => { let string = keyboard.add(&evt.event_type).unwrap_or_default(); - if keyboard.last_is_dead && string == "" { + #[cfg(target_os = "windows")] + let is_dead = keyboard.last_is_dead; + #[cfg(target_os = "linux")] + let is_dead = unsafe { + CStr::from_ptr(XKeysymToString(*keyboard.keysym)) + .to_str() + .unwrap_or_default() + .to_owned() + .starts_with("dead") + }; + if is_dead && string == "" { return; } string