build linux

Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
fufesou 2023-02-08 14:14:13 +08:00
parent 5c7f2678fa
commit 01f762ffdb
2 changed files with 20 additions and 18 deletions

View File

@ -834,6 +834,9 @@ pub fn translate_keyboard_mode(event: &Event, key_event: KeyEvent) -> Vec<KeyEve
try_fill_unicode(event, &key_event, &mut events); try_fill_unicode(event, &key_event, &mut events);
} }
#[cfg(not(target_os = "windows"))]
try_fill_unicode(event, &key_event, &mut events);
if events.is_empty() { if events.is_empty() {
if let Some(evt) = translate_virtual_keycode(event, key_event) { if let Some(evt) = translate_virtual_keycode(event, key_event) {
events.push(evt); events.push(evt);

View File

@ -204,7 +204,7 @@ fn run_cursor(sp: MouseCursorService, state: &mut StateCursor) -> ResultType<()>
#[derive(Copy, Clone, PartialEq, Eq, Hash)] #[derive(Copy, Clone, PartialEq, Eq, Hash)]
enum KeysDown { enum KeysDown {
RdevKey(RawKey), RdevKey(RawKey),
EnigoKey(u64) EnigoKey(u64),
} }
lazy_static::lazy_static! { lazy_static::lazy_static! {
@ -397,8 +397,7 @@ fn record_key_to_key(record_key: u64) -> Option<Key> {
#[inline] #[inline]
fn release_record_key(record_key: KeysDown) { fn release_record_key(record_key: KeysDown) {
let func = move || { let func = move || match record_key {
match record_key {
KeysDown::RdevKey(raw_key) => { KeysDown::RdevKey(raw_key) => {
simulate_(&EventType::KeyRelease(RdevKey::RawKey(raw_key))); simulate_(&EventType::KeyRelease(RdevKey::RawKey(raw_key)));
} }
@ -408,7 +407,6 @@ fn release_record_key(record_key: KeysDown) {
log::debug!("Fixed {:?} timeout", key); log::debug!("Fixed {:?} timeout", key);
} }
} }
}
}; };
#[cfg(target_os = "macos")] #[cfg(target_os = "macos")]
@ -758,12 +756,10 @@ fn sim_rdev_rawkey_position(code: u32, keydown: bool) {
simulate_(&event_type); simulate_(&event_type);
} }
fn sim_rdev_rawkey_virtual(code: u32, keydown: bool) {
#[cfg(target_os = "windows")] #[cfg(target_os = "windows")]
fn sim_rdev_rawkey_virtual(code: u32, keydown: bool) {
let rawkey = RawKey::WinVirtualKeycode(code); let rawkey = RawKey::WinVirtualKeycode(code);
record_pressed_key(KeysDown::RdevKey(rawkey), keydown); record_pressed_key(KeysDown::RdevKey(rawkey), keydown);
let event_type = if keydown { let event_type = if keydown {
EventType::KeyPress(RdevKey::RawKey(rawkey)) EventType::KeyPress(RdevKey::RawKey(rawkey))
} else { } else {
@ -941,10 +937,11 @@ fn release_unpressed_modifiers(en: &mut Enigo, key_event: &KeyEvent) {
#[cfg(target_os = "linux")] #[cfg(target_os = "linux")]
fn is_altgr_pressed() -> bool { fn is_altgr_pressed() -> bool {
let altgr_rawkey = RawKey::LinuxXorgKeycode(ControlKey::RAlt.value() as _);
KEYS_DOWN KEYS_DOWN
.lock() .lock()
.unwrap() .unwrap()
.get(&(ControlKey::RAlt.value() as _)) .get(&KeysDown::RdevKey(altgr_rawkey))
.is_some() .is_some()
} }
@ -1093,9 +1090,11 @@ fn translate_process_virtual_keycode(vk: u32, down: bool) {
fn translate_keyboard_mode(evt: &KeyEvent) { fn translate_keyboard_mode(evt: &KeyEvent) {
match evt.union { match evt.union {
Some(key_event::Union::Unicode(unicode)) => { Some(key_event::Union::Unicode(unicode)) => {
#[cfg(target_os = "windows")]
allow_err!(rdev::simulate_unicode(unicode as _)); allow_err!(rdev::simulate_unicode(unicode as _));
}, }
Some(key_event::Union::Chr(..)) => { Some(key_event::Union::Chr(..)) =>
{
#[cfg(target_os = "windows")] #[cfg(target_os = "windows")]
translate_process_virtual_keycode(evt.chr(), evt.down) translate_process_virtual_keycode(evt.chr(), evt.down)
} }