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 _ }