mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-09-29 16:56:25 +00:00
Close tab and tab switching move keyboard focus to another session before the key that fired them is released. On Linux the Flutter input source routes map-mode sessions through the Rust matcher and legacy-mode sessions through the Dart matcher, and neither knows the other's fired keys, so after such an action the repeats and the release of the held key reached the next session's remote, and the key stayed recorded as fired in the matcher that saw the press. Routing Linux legacy mode through the Rust FFI path instead is not a drop-in change: the raw key handler builds its event with no unicode, so Rust's legacy mode would fall back to US key names and lose the layout-aware characters the Dart path sends today, and it would take modifiers from the X11 key state instead of Flutter's. Run these three actions when the fired key is released. The matcher that consumed the press then also sees the repeats and the release, the remote modifiers are still released on the press, and a session that closes drops the action it owed. Both matchers keep the same list of actions. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ra4my61t8q1FN5n59wB16D