From bf04a03cd120ecfa692dd94c6ade220f46cc5c40 Mon Sep 17 00:00:00 2001 From: fufesou Date: Fri, 27 Jan 2023 23:45:07 +0800 Subject: [PATCH 1/2] fix win, local detect some dead code Signed-off-by: fufesou --- Cargo.lock | 2 +- src/flutter_ffi.rs | 8 +++++++- src/keyboard.rs | 11 +++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 693ae7d4c..5c4af56e9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4371,7 +4371,7 @@ dependencies = [ [[package]] name = "rdev" version = "0.5.0-2" -source = "git+https://github.com/fufesou/rdev#1be26c7e8ed0d43cebdd8331d467bb61130a2e6e" +source = "git+https://github.com/fufesou/rdev#238c9778da40056e2efda1e4264355bc89fb6358" dependencies = [ "cocoa", "core-foundation 0.9.3", diff --git a/src/flutter_ffi.rs b/src/flutter_ffi.rs index 992fff853..bcfafe9c2 100644 --- a/src/flutter_ffi.rs +++ b/src/flutter_ffi.rs @@ -245,8 +245,13 @@ pub fn session_get_keyboard_mode(id: String) -> Option { } pub fn session_set_keyboard_mode(id: String, value: String) { + let mut mode_updated = false; if let Some(session) = SESSIONS.write().unwrap().get_mut(&id) { session.save_keyboard_mode(value); + mode_updated = true; + } + if mode_updated { + crate::keyboard::update_grab_get_key_name(); } } @@ -1182,7 +1187,8 @@ pub fn main_update_me() -> SyncReturn { } pub fn set_cur_session_id(id: String) { - super::flutter::set_cur_session_id(id) + super::flutter::set_cur_session_id(id); + crate::keyboard::update_grab_get_key_name(); } pub fn install_show_run_without_install() -> SyncReturn { diff --git a/src/keyboard.rs b/src/keyboard.rs index de1abd231..054a39580 100644 --- a/src/keyboard.rs +++ b/src/keyboard.rs @@ -64,6 +64,8 @@ pub mod client { match state { GrabState::Ready => {} GrabState::Run => { + #[cfg(windows)] + update_grab_get_key_name(); #[cfg(any(target_os = "windows", target_os = "macos"))] KEYBOARD_HOOKED.swap(true, Ordering::SeqCst); @@ -184,6 +186,15 @@ pub mod client { } } +#[cfg(windows)] +pub fn update_grab_get_key_name() { + match get_keyboard_mode_enum() { + KeyboardMode::Map => rdev::set_get_key_name(false), + KeyboardMode::Translate => rdev::set_get_key_name(true), + _ => {} + }; +} + pub fn start_grab_loop() { #[cfg(any(target_os = "windows", target_os = "macos"))] std::thread::spawn(move || { From 7c865a80e943f7b82db25dcd61e2be689446ba9f Mon Sep 17 00:00:00 2001 From: fufesou Date: Sat, 28 Jan 2023 09:36:36 +0800 Subject: [PATCH 2/2] fix build Signed-off-by: fufesou --- src/flutter_ffi.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/flutter_ffi.rs b/src/flutter_ffi.rs index bcfafe9c2..c30c6c847 100644 --- a/src/flutter_ffi.rs +++ b/src/flutter_ffi.rs @@ -245,12 +245,13 @@ pub fn session_get_keyboard_mode(id: String) -> Option { } pub fn session_set_keyboard_mode(id: String, value: String) { - let mut mode_updated = false; + let mut _mode_updated = false; if let Some(session) = SESSIONS.write().unwrap().get_mut(&id) { session.save_keyboard_mode(value); - mode_updated = true; + _mode_updated = true; } - if mode_updated { + #[cfg(windows)] + if _mode_updated { crate::keyboard::update_grab_get_key_name(); } } @@ -1188,6 +1189,7 @@ pub fn main_update_me() -> SyncReturn { pub fn set_cur_session_id(id: String) { super::flutter::set_cur_session_id(id); + #[cfg(windows)] crate::keyboard::update_grab_get_key_name(); }