RustDesk/flutter
rustdesk 04faf21c78 feat: keyboard shortcuts in remote sessions
Add an opt-in keyboard-shortcut system that triggers session
actions (Send Ctrl+Alt+Del, Toggle Fullscreen, Switch Display,
Screenshot, Switch Tab, etc.) via three-modifier combinations
during a remote session.

Architecture
- Native: src/keyboard/shortcuts.rs intercepts at the encoder
  layer (process_event and process_event_with_session), so the
  feature is input-source-independent. Bindings persist as a
  single JSON blob in LocalConfig.
- Web: matching + keydown intercept live in the separate hand-
  written TS client at flutter/web/js/ (gitignored, not in this
  repo). flutter/lib/web/bridge.dart::mainInit registers
  window.onShortcutTriggered so the JS matcher can dispatch
  back into the active session's ShortcutModel; the bridge's
  mainReloadKeyboardShortcuts forwards to a JS reloadShortcuts
  on settings writes.
- Three-modifier prefix (Ctrl+Alt+Shift; Cmd+Option+Shift on
  macOS/iOS) sidesteps the need for a pass-through toggle.
- Flutter native path threads the explicit per-call SessionID
  for tab-precise routing; rdev path uses globally-current
  session.

UI
- Settings -> General -> Keyboard Shortcuts opens a dedicated
  configuration page; desktop and mobile share a body widget.
- Recording dialog with live capture, prefix validation, and a
  conflict-replace flow.
- Toolbar menu items display the bound shortcut inline.
- Default bindings (adapted from AnyDesk):
    +Del    Send Ctrl+Alt+Del
    +Enter  Toggle Fullscreen
    +Left/Right  Switch Display Prev/Next
    +P      Screenshot
    +1..9   Switch Session Tab

Other
- AGENTS.md: documented (a) flutter_rust_bridge_codegen needs
  a pinned version + Dart bridge wrappers should be hand-
  written, and (b) the Web-target split where flutter/web/js/
  is the runtime owner on Web rather than wasm-compiled Rust.
- 38 new i18n strings in src/lang/en.rs with Chinese
  translations in src/lang/cn.rs.

Refs discussion #1933.
2026-04-28 15:48:12 +08:00
..
android fix(android): waiting for image, one cause (#14919) 2026-04-27 22:37:22 +08:00
assets add microsoft oidc logo 2026-04-15 14:39:46 +08:00
ios ios: Enable file sharing and document browser support (#13226) 2025-10-23 15:58:50 +08:00
lib feat: keyboard shortcuts in remote sessions 2026-04-28 15:48:12 +08:00
linux fix(linux): enable mouse side buttons in remote sessions (#14848) 2026-04-25 12:46:05 +08:00
macos feat: Add relative mouse mode (#13928) 2026-01-09 10:03:14 +08:00
test flutter: shift after one shot IME capitalization (#14695) 2026-04-26 22:44:26 +08:00
windows feat: windows, custom client, update (#13687) 2026-02-27 21:50:20 +08:00
.gitattributes
.gitignore Refact. Build flutter web (#7472) 2024-03-22 13:16:37 +08:00
.metadata
analysis_options.yaml
build_android.sh
build_android_deps.sh linux dynamic load libva (#10171) 2024-12-04 17:10:10 +08:00
build_fdroid.sh Fix F-Droid 1.4.6 build (#13601) 2026-03-20 13:45:35 +08:00
build_ios.sh fix some build command 2025-05-11 01:15:29 +08:00
ios_arm64.sh fix some build command 2025-05-11 01:15:29 +08:00
ios_x64.sh
ndk_arm.sh enable ffmpeg native h26x software decoders for all platforms (#7750) 2024-04-18 13:12:45 +08:00
ndk_arm64.sh enable ffmpeg native h26x software decoders for all platforms (#7750) 2024-04-18 13:12:45 +08:00
ndk_x64.sh
ndk_x86.sh Fix OpenSSL build with Android NDK clang on x86 (#13684) 2025-12-04 17:54:07 +08:00
pubspec.lock fix: terminal, web, fonts (#12376) 2025-07-22 23:42:05 +08:00
pubspec.yaml flutter: shift after one shot IME capitalization (#14695) 2026-04-26 22:44:26 +08:00
README.md Punctuation correction (#6808) 2024-01-06 11:11:35 +08:00
run.sh https://github.com/rustdesk/rustdesk/pull/7971 2024-06-03 13:40:14 +08:00

flutter_hbb

A new Flutter project.

Getting Started

This project is a starting point for a Flutter application.

A few resources to get you started if this is your first Flutter project:

For help getting started with Flutter development, view the online documentation, which offers tutorials, samples and guidance on mobile development, and a full API reference.