Numpad when linux -> windows

This commit is contained in:
Asura 2022-07-19 09:35:39 +08:00
parent a118056c30
commit 48466bfe37

View File

@ -965,22 +965,42 @@ impl Handler {
self.send(Data::Message(msg_out)); self.send(Data::Message(msg_out));
} }
fn convert_numpad_keys(&mut self, key: &RdevKey) -> &RdevKey {
if get_key_state(enigo::Key::NumLock) {
return;
}
match key {
&RdevKey::Num0 => &RdevKey::Insert,
&RdevKey::KpDecimal => &RdevKey::Delete,
&RdevKey::Num1 => &RdevKey::End,
&RdevKey::Num2 => &RdevKey::DownArrow,
&RdevKey::Num3 => &RdevKey::PageDown,
&RdevKey::Num4 => &RdevKey::LeftArrow,
&RdevKey::Num5 => &RdevKey::Clear,
&RdevKey::Num6 => &RdevKey::RightArrow,
&RdevKey::Num7 => &RdevKey::Home,
&RdevKey::Num8 => &RdevKey::UpArrow,
&RdevKey::Num9 => &RdevKey::PageUp,
}
}
fn map_keyboard_mode(&mut self, down_or_up: bool, key: RdevKey) { fn map_keyboard_mode(&mut self, down_or_up: bool, key: RdevKey) {
// map mode(1): Send keycode according to the peer platform. // map mode(1): Send keycode according to the peer platform.
let peer = self.peer_platform(); let peer = self.peer_platform();
let mut key_event = KeyEvent::new(); let mut key_event = KeyEvent::new();
// According to peer platform. // According to peer platform.
if peer == "Linux" { let keycode: u32 = if peer == "Linux" {
let keycode: u32 = rdev::linux_keycode_from_key(key).unwrap_or_default().into(); rdev::linux_keycode_from_key(key).unwrap_or_default().into()
key_event.set_chr(keycode);
} else if peer == "Windows" { } else if peer == "Windows" {
let keycode: u32 = rdev::win_keycode_from_key(key).unwrap_or_default().into(); #[cfg(not(windows))]
key_event.set_chr(keycode); self.convert_numpad_keys(&key);
rdev::win_keycode_from_key(key).unwrap_or_default().into()
} else if peer == "Mac OS" { } else if peer == "Mac OS" {
let keycode: u32 = rdev::macos_keycode_from_key(key).unwrap_or_default().into(); rdev::macos_keycode_from_key(key).unwrap_or_default().into()
key_event.set_chr(keycode); };
} key_event.set_chr(keycode);
if down_or_up == true { if down_or_up == true {
key_event.down = true; key_event.down = true;
} else { } else {