From ebe0f90d0fdaf8e437060cdbc6883e42784dad85 Mon Sep 17 00:00:00 2001 From: sjpark Date: Fri, 28 Oct 2022 01:01:31 +0900 Subject: [PATCH 1/3] log --- src/windows/simulate.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/windows/simulate.rs b/src/windows/simulate.rs index c269edf6..50ac5ff7 100644 --- a/src/windows/simulate.rs +++ b/src/windows/simulate.rs @@ -52,6 +52,26 @@ fn sim_mouse_event(flags: DWORD, data: DWORD, dx: LONG, dy: LONG) -> Result<(), } fn sim_keyboard_event(flags: DWORD, vk: WORD, scan: WORD) -> Result<(), SimulateError> { + #[cfg(windows)] + let vk = match vk as _ { + winapi::um::winuser::VK_LSHIFT => winapi::um::winuser::VK_SHIFT as _, + winapi::um::winuser::VK_LCONTROL => winapi::um::winuser::VK_CONTROL as _, + winapi::um::winuser::VK_LMENU => winapi::um::winuser::VK_MENU as _, + _ => vk, + }; + let mut scan = scan; + unsafe { + if scan == 0 { + + let current_window_thread_id = + GetWindowThreadProcessId(GetForegroundWindow(), std::ptr::null_mut()); + let LAYOUT = GetKeyboardLayout(current_window_thread_id); + + scan = MapVirtualKeyExW(vk as _, 0, LAYOUT) as _; + } + } + println!("sim_key {} {} {}", flags, vk, scan); + let mut union: INPUT_u = unsafe { std::mem::zeroed() }; let inner_union = unsafe { union.ki_mut() }; *inner_union = KEYBDINPUT { From df793a55ee2062e664b5a03c155314d56e6ce2d9 Mon Sep 17 00:00:00 2001 From: sjpark Date: Sat, 29 Oct 2022 22:31:45 +0900 Subject: [PATCH 2/3] extended key process --- src/windows/simulate.rs | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/src/windows/simulate.rs b/src/windows/simulate.rs index 50ac5ff7..5c93d189 100644 --- a/src/windows/simulate.rs +++ b/src/windows/simulate.rs @@ -53,24 +53,19 @@ fn sim_mouse_event(flags: DWORD, data: DWORD, dx: LONG, dy: LONG) -> Result<(), fn sim_keyboard_event(flags: DWORD, vk: WORD, scan: WORD) -> Result<(), SimulateError> { #[cfg(windows)] - let vk = match vk as _ { - winapi::um::winuser::VK_LSHIFT => winapi::um::winuser::VK_SHIFT as _, - winapi::um::winuser::VK_LCONTROL => winapi::um::winuser::VK_CONTROL as _, - winapi::um::winuser::VK_LMENU => winapi::um::winuser::VK_MENU as _, - _ => vk, + let flags = match vk as _ { + winapi::um::winuser::VK_HOME | + winapi::um::winuser::VK_UP | + winapi::um::winuser::VK_PRIOR | + winapi::um::winuser::VK_LEFT | + winapi::um::winuser::VK_RIGHT | + winapi::um::winuser::VK_END | + winapi::um::winuser::VK_DOWN | + winapi::um::winuser::VK_NEXT | + winapi::um::winuser::VK_INSERT | + winapi::um::winuser::VK_DELETE => flags | winapi::um::winuser::KEYEVENTF_EXTENDEDKEY, + _ => flags, }; - let mut scan = scan; - unsafe { - if scan == 0 { - - let current_window_thread_id = - GetWindowThreadProcessId(GetForegroundWindow(), std::ptr::null_mut()); - let LAYOUT = GetKeyboardLayout(current_window_thread_id); - - scan = MapVirtualKeyExW(vk as _, 0, LAYOUT) as _; - } - } - println!("sim_key {} {} {}", flags, vk, scan); let mut union: INPUT_u = unsafe { std::mem::zeroed() }; let inner_union = unsafe { union.ki_mut() }; From 5c7701acd31643774ac6499192e2828816d5f2df Mon Sep 17 00:00:00 2001 From: sjpark Date: Sat, 29 Oct 2022 22:48:52 +0900 Subject: [PATCH 3/3] erase unnecessary parts --- src/windows/simulate.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/windows/simulate.rs b/src/windows/simulate.rs index 5c93d189..1572d1d9 100644 --- a/src/windows/simulate.rs +++ b/src/windows/simulate.rs @@ -52,7 +52,6 @@ fn sim_mouse_event(flags: DWORD, data: DWORD, dx: LONG, dy: LONG) -> Result<(), } fn sim_keyboard_event(flags: DWORD, vk: WORD, scan: WORD) -> Result<(), SimulateError> { - #[cfg(windows)] let flags = match vk as _ { winapi::um::winuser::VK_HOME | winapi::um::winuser::VK_UP |