refactor: get modifier state

This commit is contained in:
Asura 2022-12-07 20:32:34 -08:00 committed by Chieh Wang
parent a98174448f
commit 95775678ca
3 changed files with 21 additions and 50 deletions

24
Cargo.lock generated
View File

@ -1533,7 +1533,7 @@ dependencies = [
"log",
"objc",
"pkg-config",
"rdev 0.5.0-2 (git+https://github.com/asur4s/rdev)",
"rdev",
"serde 1.0.147",
"serde_derive",
"tfc",
@ -4226,26 +4226,6 @@ dependencies = [
"num_cpus",
]
[[package]]
name = "rdev"
version = "0.5.0-2"
dependencies = [
"cocoa",
"core-foundation 0.9.3",
"core-foundation-sys 0.8.3",
"core-graphics 0.22.3",
"enum-map",
"epoll",
"inotify",
"lazy_static",
"libc",
"strum 0.24.1",
"strum_macros 0.24.3",
"widestring 1.0.2",
"winapi 0.3.9",
"x11 2.20.0",
]
[[package]]
name = "rdev"
version = "0.5.0-2"
@ -4538,7 +4518,7 @@ dependencies = [
"num_cpus",
"objc",
"parity-tokio-ipc",
"rdev 0.5.0-2",
"rdev",
"repng",
"reqwest",
"rpassword 7.1.0",

View File

@ -63,7 +63,7 @@ default-net = "0.11.0"
wol-rs = "0.9.1"
flutter_rust_bridge = { git = "https://github.com/SoLongAndThanksForAllThePizza/flutter_rust_bridge", optional = true }
errno = "0.2.8"
rdev = { path = "../rdev" }
rdev = { git = "https://github.com/asur4s/rdev" }
url = { version = "2.1", features = ["serde"] }
reqwest = { version = "0.11", features = ["blocking", "json", "rustls-tls"], default-features=false }

View File

@ -93,7 +93,20 @@ pub mod client {
shift: bool,
command: bool,
) -> (bool, bool, bool, bool) {
get_modifiers_state(alt, ctrl, shift, command)
let modifiers_lock = MODIFIERS_STATE.lock().unwrap();
let ctrl = *modifiers_lock.get(&Key::ControlLeft).unwrap()
|| *modifiers_lock.get(&Key::ControlRight).unwrap()
|| ctrl;
let shift = *modifiers_lock.get(&Key::ShiftLeft).unwrap()
|| *modifiers_lock.get(&Key::ShiftRight).unwrap()
|| shift;
let command = *modifiers_lock.get(&Key::MetaLeft).unwrap()
|| *modifiers_lock.get(&Key::MetaRight).unwrap()
|| command;
let alt =
*modifiers_lock.get(&Key::Alt).unwrap() || *modifiers_lock.get(&Key::AltGr).unwrap() || alt;
(alt, ctrl, shift, command)
}
pub fn legacy_modifiers(
@ -166,7 +179,7 @@ pub fn grab_loop(recv: mpsc::Receiver<GrabState>) {
return Some(event);
}
if KEYBOARD_HOOKED.load(Ordering::SeqCst) {
keyboard::client::process_event(event);
client::process_event(event);
return None;
} else {
return Some(event);
@ -185,7 +198,7 @@ pub fn grab_loop(recv: mpsc::Receiver<GrabState>) {
if let Key::Unknown(keycode) = key {
log::error!("rdev get unknown key, keycode is : {:?}", keycode);
} else {
crate::keyboard::client::process_event(event);
client::process_event(event);
}
None
}
@ -243,7 +256,7 @@ pub fn release_remote_keys() {
}
}
pub fn get_keyboard_mode_enum() -> KeyboardMode {
pub fn get_keyboard_mode_enum() -> KeyboardMode {
match client::get_keyboard_mode().as_str() {
"map" => KeyboardMode::Map,
"translate" => KeyboardMode::Translate,
@ -280,28 +293,6 @@ pub fn convert_numpad_keys(key: Key) -> Key {
}
}
pub fn get_modifiers_state(
alt: bool,
ctrl: bool,
shift: bool,
command: bool,
) -> (bool, bool, bool, bool) {
let modifiers_lock = MODIFIERS_STATE.lock().unwrap();
let ctrl = *modifiers_lock.get(&Key::ControlLeft).unwrap()
|| *modifiers_lock.get(&Key::ControlRight).unwrap()
|| ctrl;
let shift = *modifiers_lock.get(&Key::ShiftLeft).unwrap()
|| *modifiers_lock.get(&Key::ShiftRight).unwrap()
|| shift;
let command = *modifiers_lock.get(&Key::MetaLeft).unwrap()
|| *modifiers_lock.get(&Key::MetaRight).unwrap()
|| command;
let alt =
*modifiers_lock.get(&Key::Alt).unwrap() || *modifiers_lock.get(&Key::AltGr).unwrap() || alt;
(alt, ctrl, shift, command)
}
fn update_modifiers_state(event: &Event) {
// for mouse
let mut keys = MODIFIERS_STATE.lock().unwrap();
@ -595,7 +586,7 @@ pub fn legacy_keyboard_mode(event: &Event, key_event: &mut KeyEvent) {
return;
}
}
let (alt, ctrl, shift, command) = get_modifiers_state(alt, ctrl, shift, command);
let (alt, ctrl, shift, command) = client::get_modifiers_state(alt, ctrl, shift, command);
client::legacy_modifiers(key_event, alt, ctrl, shift, command);
if down_or_up == true {