commit
bdd0fbbe6c
@ -46,6 +46,12 @@ lazy_static::lazy_static! {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "flutter")]
|
||||||
|
pub fn set_cur_session(session: Session<FlutterHandler>) {
|
||||||
|
*CUR_SESSION.lock().unwrap() = Some(session);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(not(feature = "flutter"))]
|
||||||
pub fn set_cur_session(session: Session<SciterHandler>) {
|
pub fn set_cur_session(session: Session<SciterHandler>) {
|
||||||
*CUR_SESSION.lock().unwrap() = Some(session);
|
*CUR_SESSION.lock().unwrap() = Some(session);
|
||||||
}
|
}
|
||||||
@ -91,7 +97,7 @@ pub mod client {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn process_event(event: Event) {
|
pub fn process_event(event: &Event) {
|
||||||
if is_long_press(&event) {
|
if is_long_press(&event) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -181,19 +187,25 @@ pub mod client {
|
|||||||
pub fn start_grab_loop() {
|
pub fn start_grab_loop() {
|
||||||
#[cfg(any(target_os = "windows", target_os = "macos"))]
|
#[cfg(any(target_os = "windows", target_os = "macos"))]
|
||||||
std::thread::spawn(move || {
|
std::thread::spawn(move || {
|
||||||
let func = move |event: Event| match event.event_type {
|
let try_handle_keyboard = move |event: Event, key: Key, is_press: bool| -> Option<Event> {
|
||||||
EventType::KeyPress(key) | EventType::KeyRelease(key) => {
|
|
||||||
// fix #2211:CAPS LOCK don't work
|
// fix #2211:CAPS LOCK don't work
|
||||||
if key == Key::CapsLock || key == Key::NumLock {
|
if key == Key::CapsLock || key == Key::NumLock {
|
||||||
return Some(event);
|
return Some(event);
|
||||||
}
|
}
|
||||||
if KEYBOARD_HOOKED.load(Ordering::SeqCst) {
|
if KEYBOARD_HOOKED.load(Ordering::SeqCst) {
|
||||||
client::process_event(event);
|
client::process_event(&event);
|
||||||
|
if is_press {
|
||||||
return None;
|
return None;
|
||||||
} else {
|
} else {
|
||||||
return Some(event);
|
return Some(event);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
return Some(event);
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
let func = move |event: Event| match event.event_type {
|
||||||
|
EventType::KeyPress(key) => try_handle_keyboard(event, key, true),
|
||||||
|
EventType::KeyRelease(key) => try_handle_keyboard(event, key, false),
|
||||||
_ => Some(event),
|
_ => Some(event),
|
||||||
};
|
};
|
||||||
if let Err(error) = rdev::grab(func) {
|
if let Err(error) = rdev::grab(func) {
|
||||||
@ -207,7 +219,7 @@ pub fn start_grab_loop() {
|
|||||||
if let Key::Unknown(keycode) = key {
|
if let Key::Unknown(keycode) = key {
|
||||||
log::error!("rdev get unknown key, keycode is : {:?}", keycode);
|
log::error!("rdev get unknown key, keycode is : {:?}", keycode);
|
||||||
} else {
|
} else {
|
||||||
client::process_event(event);
|
client::process_event(&event);
|
||||||
}
|
}
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
@ -237,7 +249,7 @@ pub fn release_remote_keys() {
|
|||||||
for key in to_release {
|
for key in to_release {
|
||||||
let event_type = EventType::KeyRelease(key);
|
let event_type = EventType::KeyRelease(key);
|
||||||
let event = event_type_to_event(event_type);
|
let event = event_type_to_event(event_type);
|
||||||
client::process_event(event);
|
client::process_event(&event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,8 +130,9 @@ pub fn start(args: &mut [String]) {
|
|||||||
pass.clone(),
|
pass.clone(),
|
||||||
args.clone(),
|
args.clone(),
|
||||||
);
|
);
|
||||||
let inner = handler.inner();
|
#[cfg(not(feature = "flutter"))]
|
||||||
crate::keyboard::set_cur_session(inner);
|
crate::keyboard::set_cur_session(handler.inner());
|
||||||
|
|
||||||
Box::new(handler)
|
Box::new(handler)
|
||||||
});
|
});
|
||||||
page = "remote.html";
|
page = "remote.html";
|
||||||
|
@ -393,7 +393,7 @@ impl<T: InvokeUiSession> Session<T> {
|
|||||||
scan_code: scancode as _,
|
scan_code: scancode as _,
|
||||||
event_type: event_type,
|
event_type: event_type,
|
||||||
};
|
};
|
||||||
keyboard::client::process_event(event);
|
keyboard::client::process_event(&event);
|
||||||
}
|
}
|
||||||
|
|
||||||
// flutter only TODO new input
|
// flutter only TODO new input
|
||||||
|
Loading…
x
Reference in New Issue
Block a user