From c960b3120fe8f2a8b60d6bca9610870f7aff5893 Mon Sep 17 00:00:00 2001 From: sjpark Date: Fri, 28 Oct 2022 20:43:44 +0900 Subject: [PATCH 1/5] map key input bug fix --- src/server/input_service.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/server/input_service.rs b/src/server/input_service.rs index 7dbba0e05..650002ccc 100644 --- a/src/server/input_service.rs +++ b/src/server/input_service.rs @@ -647,6 +647,27 @@ fn map_keyboard_mode(evt: &KeyEvent) { // map mode(1): Send keycode according to the peer platform. let (click_capslock, click_numlock) = sync_status(evt); + #[cfg(windows)] + { + crate::platform::windows::try_change_desktop(); + + let code = evt.chr(); + let key = rdev::get_win_key(code, 0); + //let key = rdev::windows::keycodes::key_from_code(code); + match key { + RdevKey::Home | + RdevKey::UpArrow | + RdevKey::PageUp | + RdevKey::LeftArrow | + RdevKey::RightArrow | + RdevKey::End | + RdevKey::DownArrow | + RdevKey::PageDown | + RdevKey::Insert | + RdevKey::Delete => { rdev_key_click(RdevKey::NumLock); }, + _ => {}, + } + } // Wayland #[cfg(target_os = "linux")] if !*IS_X11.lock().unwrap() { From f4659d8dc54111a254f38fa44246ec62219af834 Mon Sep 17 00:00:00 2001 From: sjpark Date: Fri, 28 Oct 2022 20:52:47 +0900 Subject: [PATCH 2/5] delete comment --- src/server/input_service.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/server/input_service.rs b/src/server/input_service.rs index 650002ccc..05f78b5e5 100644 --- a/src/server/input_service.rs +++ b/src/server/input_service.rs @@ -653,7 +653,6 @@ fn map_keyboard_mode(evt: &KeyEvent) { let code = evt.chr(); let key = rdev::get_win_key(code, 0); - //let key = rdev::windows::keycodes::key_from_code(code); match key { RdevKey::Home | RdevKey::UpArrow | From 270c2ae291444808614f85321a587b77c8f3df02 Mon Sep 17 00:00:00 2001 From: sjpark Date: Sat, 29 Oct 2022 03:14:38 +0900 Subject: [PATCH 3/5] improve map key input --- src/server/input_service.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/server/input_service.rs b/src/server/input_service.rs index 05f78b5e5..27de001e4 100644 --- a/src/server/input_service.rs +++ b/src/server/input_service.rs @@ -648,11 +648,12 @@ fn map_keyboard_mode(evt: &KeyEvent) { let (click_capslock, click_numlock) = sync_status(evt); #[cfg(windows)] - { + let click_numlock = { crate::platform::windows::try_change_desktop(); let code = evt.chr(); let key = rdev::get_win_key(code, 0); + //let key = rdev::windows::keycodes::key_from_code(code); match key { RdevKey::Home | RdevKey::UpArrow | @@ -663,10 +664,13 @@ fn map_keyboard_mode(evt: &KeyEvent) { RdevKey::DownArrow | RdevKey::PageDown | RdevKey::Insert | - RdevKey::Delete => { rdev_key_click(RdevKey::NumLock); }, - _ => {}, + RdevKey::Delete => { + let mut en = ENIGO.lock().unwrap(); + en.get_key_state(enigo::Key::NumLock) + }, + _ => click_numlock, } - } + }; // Wayland #[cfg(target_os = "linux")] if !*IS_X11.lock().unwrap() { From 422dadfef38652273f8a1ef1f918c674ddb9d749 Mon Sep 17 00:00:00 2001 From: sjpark Date: Sat, 29 Oct 2022 14:37:20 +0900 Subject: [PATCH 4/5] windows extended key input --- src/server/input_service.rs | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/server/input_service.rs b/src/server/input_service.rs index 27de001e4..ac2293e6a 100644 --- a/src/server/input_service.rs +++ b/src/server/input_service.rs @@ -640,17 +640,8 @@ fn sync_status(evt: &KeyEvent) -> (bool, bool) { || (!caps_locking && en.get_key_state(enigo::Key::CapsLock)); let click_numlock = (num_locking && !en.get_key_state(enigo::Key::NumLock)) || (!num_locking && en.get_key_state(enigo::Key::NumLock)); - return (click_capslock, click_numlock); -} - -fn map_keyboard_mode(evt: &KeyEvent) { - // map mode(1): Send keycode according to the peer platform. - let (click_capslock, click_numlock) = sync_status(evt); - #[cfg(windows)] let click_numlock = { - crate::platform::windows::try_change_desktop(); - let code = evt.chr(); let key = rdev::get_win_key(code, 0); //let key = rdev::windows::keycodes::key_from_code(code); @@ -664,13 +655,20 @@ fn map_keyboard_mode(evt: &KeyEvent) { RdevKey::DownArrow | RdevKey::PageDown | RdevKey::Insert | - RdevKey::Delete => { - let mut en = ENIGO.lock().unwrap(); - en.get_key_state(enigo::Key::NumLock) - }, + RdevKey::Delete => en.get_key_state(enigo::Key::NumLock), _ => click_numlock, } - }; + }; + return (click_capslock, click_numlock); +} + +fn map_keyboard_mode(evt: &KeyEvent) { + // map mode(1): Send keycode according to the peer platform. + #[cfg(windows)] + crate::platform::windows::try_change_desktop(); + + let (click_capslock, click_numlock) = sync_status(evt); + // Wayland #[cfg(target_os = "linux")] if !*IS_X11.lock().unwrap() { From 31864eeec40b3b42d23a4d04f421a8958fffd3b6 Mon Sep 17 00:00:00 2001 From: sjpark Date: Sat, 29 Oct 2022 14:51:57 +0900 Subject: [PATCH 5/5] delete comment --- src/server/input_service.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/server/input_service.rs b/src/server/input_service.rs index ac2293e6a..2f2dd7743 100644 --- a/src/server/input_service.rs +++ b/src/server/input_service.rs @@ -644,7 +644,6 @@ fn sync_status(evt: &KeyEvent) -> (bool, bool) { let click_numlock = { let code = evt.chr(); let key = rdev::get_win_key(code, 0); - //let key = rdev::windows::keycodes::key_from_code(code); match key { RdevKey::Home | RdevKey::UpArrow |