From 3a6dc19616a35e53cf242a8e21724189d8374c27 Mon Sep 17 00:00:00 2001 From: rustdesk Date: Mon, 10 Jan 2022 01:29:50 +0800 Subject: [PATCH] to be compatible with 1.1.8 --- src/client.rs | 9 ++++++--- src/ui/remote.rs | 8 +++++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/client.rs b/src/client.rs index e6a5d0afd..946b923d2 100644 --- a/src/client.rs +++ b/src/client.rs @@ -585,7 +585,10 @@ impl AudioHandler { ); audio_buffer.lock().unwrap().extend(buffer); } else { - audio_buffer.lock().unwrap().extend(buffer[0..n].iter().cloned()); + audio_buffer + .lock() + .unwrap() + .extend(buffer[0..n].iter().cloned()); } } #[cfg(any(target_os = "android"))] @@ -681,7 +684,7 @@ pub struct LoginConfigHandler { pub port_forward: (String, i32), pub support_press: bool, pub support_refresh: bool, - pub internation_keyboard: bool, + pub version: i64, } impl Deref for LoginConfigHandler { @@ -938,7 +941,7 @@ impl LoginConfigHandler { if !pi.version.is_empty() { self.support_press = true; self.support_refresh = true; - self.internation_keyboard = crate::get_version_number(&pi.version) > 1001008; + self.version = crate::get_version_number(&pi.version); } let serde = PeerInfoSerde { username, diff --git a/src/ui/remote.rs b/src/ui/remote.rs index 48efad17e..15cac16ce 100644 --- a/src/ui/remote.rs +++ b/src/ui/remote.rs @@ -233,6 +233,8 @@ impl Handler { let mut me = self.clone(); let peer = self.peer_platform(); let is_win = peer == "Windows"; + let version = self.lc.read().unwrap().version; + const OFFSET_CASE: u8 = 'a' as u8 - 'A' as u8; std::thread::spawn(move || { // This will block. std::env::set_var("KEYBOARD_ONLY", "y"); // pass to rdev @@ -329,7 +331,7 @@ impl Handler { if let Some(k) = control_key { key_event.set_control_key(k); } else { - let chr = match evt.name { + let mut chr = match evt.name { Some(ref s) => s.chars().next().unwrap_or('\0'), _ => '\0', }; @@ -338,6 +340,10 @@ impl Handler { me.lock_screen(); return; } + // <= 1.1.8, caps modifier only for 'a' -> 'z', so here adjust it + if version <= 1001008 && chr >= 'A' && chr <= 'Z' { + chr = (chr as u8 + OFFSET_CASE) as _; + } key_event.set_chr(chr as _); } else { log::error!("Unknown key {:?}", evt);