rustdesk/flutter
fufesou 998b75856d
feat: Add relative mouse mode (#13928)
* feat: Add relative mouse mode

- Add "Relative Mouse Mode" toggle in desktop toolbar and bind to InputModel
- Implement relative mouse movement path: Flutter pointer deltas -> `type: move_relative` -> new `MOUSE_TYPE_MOVE_RELATIVE` in Rust
- In server input service, simulate relative movement via Enigo and keep latest cursor position in sync
- Track pointer-lock center in Flutter (local widget + screen coordinates) and re-center OS cursor after each relative move
- Update pointer-lock center on window move/resize/restore/maximize and when remote display geometry changes
- Hide local cursor when relative mouse mode is active (both Flutter cursor and OS cursor), restore on leave/disable
- On Windows, clip OS cursor to the window rect while in relative mode and release clip when leaving/turning off
- Implement platform helpers: `get_cursor_pos`, `set_cursor_pos`, `show_cursor`, `clip_cursor` (no-op clip/hide on Linux for now)
- Add keyboard shortcut Ctrl+Alt+Shift+M to toggle relative mode (enabled by default, works on all platforms)
- Remove `enable-relative-mouse-shortcut` config option - shortcut is now always available when keyboard permission is granted
- Handle window blur/focus/minimize events to properly release/restore cursor constraints
- Add MOUSE_TYPE_MASK constant and unit tests for mouse event constants

Note: Relative mouse mode state is NOT persisted to config (session-only).
Note: On Linux, show_cursor and clip_cursor are no-ops; cursor hiding is handled by Flutter side.

Signed-off-by: fufesou <linlong1266@gmail.com>

* feat(mouse): relative mouse mode, exit hint

Signed-off-by: fufesou <linlong1266@gmail.com>

* refact(relative mouse): shortcut

Signed-off-by: fufesou <linlong1266@gmail.com>

---------

Signed-off-by: fufesou <linlong1266@gmail.com>
2026-01-09 10:03:14 +08:00
..
android rename RustDeskApplication to MainApplication (#13362) 2025-10-31 11:07:32 +08:00
assets refact: remote toolbar icon (#13865) 2025-12-22 17:10:53 +08:00
ios ios: Enable file sharing and document browser support (#13226) 2025-10-23 15:58:50 +08:00
lib feat: Add relative mouse mode (#13928) 2026-01-09 10:03:14 +08:00
linux Edge scrolling (#13247) 2025-10-30 19:54:11 +08:00
macos feat: Add relative mouse mode (#13928) 2026-01-09 10:03:14 +08:00
test view camera (#11040) 2025-03-10 21:06:53 +08:00
windows Edge scrolling (#13247) 2025-10-30 19:54:11 +08:00
.gitattributes for merge 2022-05-12 16:50:30 +08:00
.gitignore Refact. Build flutter web (#7472) 2024-03-22 13:16:37 +08:00
.metadata fix platform 2022-05-23 16:24:56 +08:00
analysis_options.yaml remove menu from desktop home page 2022-09-19 18:38:19 +08:00
build_android.sh Merge remote-tracking branch 'upstream/master' into file-manager-redesign 2023-02-22 23:01:31 +01:00
build_android_deps.sh linux dynamic load libva (#10171) 2024-12-04 17:10:10 +08:00
build_fdroid.sh Fix issues spotted during 1.3.7 fdroid build (#10570) 2025-01-22 09:26:03 +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 build ipa with given profile: https://jtmuller5.medium.com/flutter-build-an-ipa-90520e813a96 2023-04-22 13:21:06 +08:00
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 fix: android ci 2022-11-29 01:44:12 +08:00
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 feat: Add relative mouse mode (#13928) 2026-01-09 10:03:14 +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.