feat(keyboard): shortcuts, release keys before shortcut callback
Signed-off-by: fufesou <linlong1266@gmail.com>
This commit is contained in:
parent
55ff1cd8c8
commit
eb097012b3
2 changed files with 8 additions and 3 deletions
|
|
@ -344,7 +344,7 @@ pub mod client {
|
|||
// `flutter::get_cur_session_id()` — the rdev grab loop is process-wide
|
||||
// and has no per-event session context to thread.
|
||||
#[cfg(feature = "flutter")]
|
||||
if crate::keyboard::shortcuts::try_dispatch(None, event) {
|
||||
if crate::keyboard::shortcuts::try_dispatch(None, event, keyboard_mode) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -371,7 +371,7 @@ pub mod client {
|
|||
// through, so dispatch targets the exact tab the keystroke originated
|
||||
// from — no dependency on the global focus tracker.
|
||||
#[cfg(feature = "flutter")]
|
||||
if crate::keyboard::shortcuts::try_dispatch(Some(&session_id), event) {
|
||||
if crate::keyboard::shortcuts::try_dispatch(Some(&session_id), event, keyboard_mode) {
|
||||
return;
|
||||
}
|
||||
#[cfg(not(feature = "flutter"))]
|
||||
|
|
|
|||
|
|
@ -360,7 +360,11 @@ pub fn match_event(event: &rdev::Event) -> Option<String> {
|
|||
/// which Flutter session id the keystroke was meant for, so route to the
|
||||
/// globally-current session via `flutter::get_cur_session_id()`.
|
||||
#[cfg(feature = "flutter")]
|
||||
pub fn try_dispatch(session_id: Option<&hbb_common::SessionID>, event: &rdev::Event) -> bool {
|
||||
pub fn try_dispatch(
|
||||
session_id: Option<&hbb_common::SessionID>,
|
||||
event: &rdev::Event,
|
||||
keyboard_mode: &str,
|
||||
) -> bool {
|
||||
let Some(action_id) = match_event(event) else {
|
||||
return false;
|
||||
};
|
||||
|
|
@ -372,6 +376,7 @@ pub fn try_dispatch(session_id: Option<&hbb_common::SessionID>, event: &rdev::Ev
|
|||
&resolved
|
||||
}
|
||||
};
|
||||
crate::keyboard::release_remote_keys(keyboard_mode);
|
||||
crate::flutter::push_session_event(sid, "shortcut_triggered", vec![("action", &action_id)]);
|
||||
true
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue