Merge pull request #3853 from fufesou/fix/translate_mode_hotkeys

translate mode, win, fix hotkeys
This commit is contained in:
RustDesk 2023-03-31 12:36:33 +08:00 committed by GitHub
commit 71d1bacf78
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -843,7 +843,7 @@ pub fn map_keyboard_mode(_peer: &str, event: &Event, mut key_event: KeyEvent) ->
} }
#[cfg(not(any(target_os = "android", target_os = "ios")))] #[cfg(not(any(target_os = "android", target_os = "ios")))]
fn try_fill_unicode(event: &Event, key_event: &KeyEvent, events: &mut Vec<KeyEvent>) { fn try_fill_unicode(_peer: &str, event: &Event, key_event: &KeyEvent, events: &mut Vec<KeyEvent>) {
match &event.unicode { match &event.unicode {
Some(unicode_info) => { Some(unicode_info) => {
if let Some(name) = &unicode_info.name { if let Some(name) = &unicode_info.name {
@ -857,11 +857,13 @@ fn try_fill_unicode(event: &Event, key_event: &KeyEvent, events: &mut Vec<KeyEve
None => None =>
{ {
#[cfg(target_os = "windows")] #[cfg(target_os = "windows")]
if is_hot_key_modifiers_down() && unsafe { !IS_0X021D_DOWN } { if _peer == OS_LOWER_LINUX {
if let Some(chr) = get_char_by_vk(event.platform_code as u32) { if is_hot_key_modifiers_down() && unsafe { !IS_0X021D_DOWN } {
let mut evt = key_event.clone(); if let Some(chr) = get_char_by_vk(event.platform_code as u32) {
evt.set_seq(chr.to_string()); let mut evt = key_event.clone();
events.push(evt); evt.set_seq(chr.to_string());
events.push(evt);
}
} }
} }
} }
@ -886,7 +888,12 @@ fn is_hot_key_modifiers_down() -> bool {
#[cfg(target_os = "windows")] #[cfg(target_os = "windows")]
pub fn translate_key_code(peer: &str, event: &Event, key_event: KeyEvent) -> Option<KeyEvent> { pub fn translate_key_code(peer: &str, event: &Event, key_event: KeyEvent) -> Option<KeyEvent> {
let mut key_event = map_keyboard_mode(peer, event, key_event)?; let mut key_event = map_keyboard_mode(peer, event, key_event)?;
key_event.set_chr((key_event.chr() & 0x0000FFFF) | ((event.platform_code as u32) << 16)); let chr = if peer == OS_LOWER_WINDOWS {
(key_event.chr() & 0x0000FFFF) | ((event.platform_code as u32) << 16)
} else {
key_event.chr()
};
key_event.set_chr(chr);
Some(key_event) Some(key_event)
} }
@ -962,7 +969,7 @@ pub fn translate_keyboard_mode(peer: &str, event: &Event, key_event: KeyEvent) -
#[cfg(any(target_os = "linux", target_os = "windows"))] #[cfg(any(target_os = "linux", target_os = "windows"))]
if is_press(event) { if is_press(event) {
try_fill_unicode(event, &key_event, &mut events); try_fill_unicode(peer, event, &key_event, &mut events);
} }
#[cfg(target_os = "windows")] #[cfg(target_os = "windows")]
@ -974,7 +981,7 @@ pub fn translate_keyboard_mode(peer: &str, event: &Event, key_event: KeyEvent) -
#[cfg(target_os = "macos")] #[cfg(target_os = "macos")]
if !unsafe { IS_LEFT_OPTION_DOWN } { if !unsafe { IS_LEFT_OPTION_DOWN } {
try_fill_unicode(event, &key_event, &mut events); try_fill_unicode(peer, event, &key_event, &mut events);
} }
if events.is_empty() { if events.is_empty() {