mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-03-10 23:01:14 +03:00
* 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>
80 lines
2.0 KiB
Rust
80 lines
2.0 KiB
Rust
mod keyboard;
|
|
/// cbindgen:ignore
|
|
pub mod platform;
|
|
#[cfg(not(any(target_os = "android", target_os = "ios")))]
|
|
pub use platform::{
|
|
clip_cursor, get_cursor, get_cursor_data, get_cursor_pos, get_focused_display,
|
|
set_cursor_pos, start_os_service,
|
|
};
|
|
#[cfg(not(any(target_os = "ios")))]
|
|
/// cbindgen:ignore
|
|
mod server;
|
|
#[cfg(not(any(target_os = "ios")))]
|
|
pub use self::server::*;
|
|
mod client;
|
|
mod lan;
|
|
#[cfg(not(any(target_os = "ios")))]
|
|
mod rendezvous_mediator;
|
|
#[cfg(not(any(target_os = "ios")))]
|
|
pub use self::rendezvous_mediator::*;
|
|
/// cbindgen:ignore
|
|
pub mod common;
|
|
#[cfg(not(any(target_os = "ios")))]
|
|
pub mod ipc;
|
|
#[cfg(not(any(
|
|
target_os = "android",
|
|
target_os = "ios",
|
|
feature = "cli",
|
|
feature = "flutter"
|
|
)))]
|
|
pub mod ui;
|
|
mod version;
|
|
pub use version::*;
|
|
#[cfg(any(target_os = "android", target_os = "ios", feature = "flutter"))]
|
|
mod bridge_generated;
|
|
#[cfg(any(target_os = "android", target_os = "ios", feature = "flutter"))]
|
|
pub mod flutter;
|
|
#[cfg(any(target_os = "android", target_os = "ios", feature = "flutter"))]
|
|
pub mod flutter_ffi;
|
|
use common::*;
|
|
mod auth_2fa;
|
|
#[cfg(feature = "cli")]
|
|
pub mod cli;
|
|
#[cfg(not(target_os = "ios"))]
|
|
mod clipboard;
|
|
#[cfg(not(any(target_os = "android", target_os = "ios", feature = "cli")))]
|
|
pub mod core_main;
|
|
mod custom_server;
|
|
mod lang;
|
|
#[cfg(not(any(target_os = "android", target_os = "ios")))]
|
|
mod port_forward;
|
|
|
|
#[cfg(all(feature = "flutter", feature = "plugin_framework"))]
|
|
#[cfg(not(any(target_os = "android", target_os = "ios")))]
|
|
pub mod plugin;
|
|
|
|
#[cfg(not(any(target_os = "android", target_os = "ios")))]
|
|
mod tray;
|
|
|
|
#[cfg(not(any(target_os = "android", target_os = "ios")))]
|
|
mod whiteboard;
|
|
|
|
#[cfg(not(any(target_os = "android", target_os = "ios")))]
|
|
mod updater;
|
|
|
|
mod ui_cm_interface;
|
|
mod ui_interface;
|
|
mod ui_session_interface;
|
|
|
|
mod hbbs_http;
|
|
|
|
#[cfg(any(target_os = "windows", target_os = "linux", target_os = "macos"))]
|
|
pub mod clipboard_file;
|
|
|
|
pub mod privacy_mode;
|
|
|
|
#[cfg(windows)]
|
|
pub mod virtual_display_manager;
|
|
|
|
mod kcp_stream;
|