to be compatible with 1.1.8

This commit is contained in:
rustdesk 2022-01-10 01:29:50 +08:00
parent ae79a36f7b
commit 3a6dc19616
2 changed files with 13 additions and 4 deletions

View File

@ -585,7 +585,10 @@ impl AudioHandler {
); );
audio_buffer.lock().unwrap().extend(buffer); audio_buffer.lock().unwrap().extend(buffer);
} else { } 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"))] #[cfg(any(target_os = "android"))]
@ -681,7 +684,7 @@ pub struct LoginConfigHandler {
pub port_forward: (String, i32), pub port_forward: (String, i32),
pub support_press: bool, pub support_press: bool,
pub support_refresh: bool, pub support_refresh: bool,
pub internation_keyboard: bool, pub version: i64,
} }
impl Deref for LoginConfigHandler { impl Deref for LoginConfigHandler {
@ -938,7 +941,7 @@ impl LoginConfigHandler {
if !pi.version.is_empty() { if !pi.version.is_empty() {
self.support_press = true; self.support_press = true;
self.support_refresh = 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 { let serde = PeerInfoSerde {
username, username,

View File

@ -233,6 +233,8 @@ impl Handler {
let mut me = self.clone(); let mut me = self.clone();
let peer = self.peer_platform(); let peer = self.peer_platform();
let is_win = peer == "Windows"; 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 || { std::thread::spawn(move || {
// This will block. // This will block.
std::env::set_var("KEYBOARD_ONLY", "y"); // pass to rdev std::env::set_var("KEYBOARD_ONLY", "y"); // pass to rdev
@ -329,7 +331,7 @@ impl Handler {
if let Some(k) = control_key { if let Some(k) = control_key {
key_event.set_control_key(k); key_event.set_control_key(k);
} else { } else {
let chr = match evt.name { let mut chr = match evt.name {
Some(ref s) => s.chars().next().unwrap_or('\0'), Some(ref s) => s.chars().next().unwrap_or('\0'),
_ => '\0', _ => '\0',
}; };
@ -338,6 +340,10 @@ impl Handler {
me.lock_screen(); me.lock_screen();
return; 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 _); key_event.set_chr(chr as _);
} else { } else {
log::error!("Unknown key {:?}", evt); log::error!("Unknown key {:?}", evt);