Merge pull request #3791 from chiehw/x11-win

Fix translate mode in win
This commit is contained in:
RustDesk 2023-03-26 22:53:32 +08:00 committed by GitHub
commit 357ca07aa4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 6 deletions

View File

@ -10,7 +10,9 @@ use crate::ui::CUR_SESSION;
#[cfg(not(any(target_os = "android", target_os = "ios")))]
use hbb_common::log;
use hbb_common::message_proto::*;
use rdev::{Event, EventType, Key, KeyCode};
#[cfg(any(target_os = "windows", target_os = "macos"))]
use rdev::KeyCode;
use rdev::{Event, EventType, Key};
#[cfg(any(target_os = "windows", target_os = "macos"))]
use std::sync::atomic::{AtomicBool, Ordering};
use std::{
@ -907,6 +909,12 @@ pub fn translate_keyboard_mode(peer: &str, event: &Event, key_event: KeyEvent) -
return events;
}
}
if is_numpad_key(&event) {
if let Some(evt) = translate_key_code(peer, event, key_event) {
events.push(evt);
}
return events;
}
#[cfg(target_os = "macos")]
// ignore right option key

View File

@ -1233,16 +1233,23 @@ fn translate_keyboard_mode(evt: &KeyEvent) {
// remote: Shift + 1 => 1
let mut en = ENIGO.lock().unwrap();
#[cfg(target_os = "linux")]
#[cfg(target_os = "macos")]
en.key_sequence(seq);
#[cfg(any(target_os = "linux", target_os = "windows"))]
{
simulate_(&EventType::KeyRelease(RdevKey::ShiftLeft));
simulate_(&EventType::KeyRelease(RdevKey::ShiftRight));
if get_modifier_state(Key::Shift, &mut en) {
simulate_(&EventType::KeyRelease(RdevKey::ShiftLeft));
}
if get_modifier_state(Key::RightShift, &mut en) {
simulate_(&EventType::KeyRelease(RdevKey::ShiftRight));
}
for chr in seq.chars() {
#[cfg(target_os = "windows")]
rdev::simulate_char(chr).ok();
#[cfg(target_os = "linux")]
en.key_click(Key::Layout(chr));
}
}
#[cfg(not(target_os = "linux"))]
en.key_sequence(seq);
}
Some(key_event::Union::Chr(..)) => {
#[cfg(target_os = "windows")]