From c0aa0d743abcf830a60a2f0abf58cf444fe05be9 Mon Sep 17 00:00:00 2001 From: rustdesk Date: Tue, 7 Jun 2022 00:30:37 +0800 Subject: [PATCH] https://github.com/rustdesk/rustdesk/issues/692 --- libs/enigo/examples/key.rs | 4 ++++ libs/enigo/src/win/keycodes.rs | 1 + libs/enigo/src/win/win_impl.rs | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/libs/enigo/examples/key.rs b/libs/enigo/examples/key.rs index 5887634a0..9a4da34d5 100644 --- a/libs/enigo/examples/key.rs +++ b/libs/enigo/examples/key.rs @@ -10,4 +10,8 @@ fn main() { enigo.key_down(Key::Layout('.')).ok(); enigo.key_up(Key::Layout('.')); enigo.key_up(Key::Shift); + enigo.key_down(Key::Shift).ok(); + enigo.key_down(Key::Layout('-')).ok(); + enigo.key_up(Key::Layout('-')); + enigo.key_up(Key::Shift); } diff --git a/libs/enigo/src/win/keycodes.rs b/libs/enigo/src/win/keycodes.rs index 351e82a87..ea35685c5 100644 --- a/libs/enigo/src/win/keycodes.rs +++ b/libs/enigo/src/win/keycodes.rs @@ -79,3 +79,4 @@ pub const EVK_MULTIPLY: u16 = 0x6A; pub const EVK_SUBTRACT: u16 = 0x6D; pub const EVK_DECIMAL: u16 = 0x6E; pub const EVK_DIVIDE: u16 = 0x6F; +pub const EVK_PERIOD: u16 = 0xBE; diff --git a/libs/enigo/src/win/win_impl.rs b/libs/enigo/src/win/win_impl.rs index 152c65b6a..ea1543faa 100644 --- a/libs/enigo/src/win/win_impl.rs +++ b/libs/enigo/src/win/win_impl.rs @@ -379,7 +379,7 @@ impl Enigo { let keycode_and_shiftstate = unsafe { VkKeyScanExW(chr as _, LAYOUT) }; if keycode_and_shiftstate == (EVK_DECIMAL as i16) && chr == '.' { // a workaround of italian keyboard shift + '.' issue - unsafe { VkKeyScanW(chr as _) as _ } + EVK_PERIOD as _ } else { keycode_and_shiftstate as _ }