Commit Graph

27 Commits

Author SHA1 Message Date
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
fufesou
6144a1c97e fix: osx, reset modifiers' state after locking screen (#11806)
https://github.com/rustdesk/rustdesk/issues/11802

Signed-off-by: fufesou <linlong1266@gmail.com>
2025-05-19 21:02:07 +08:00
fufesou
2d403913b5 fix: enigo, macos, F11 (#11371)
Signed-off-by: fufesou <linlong1266@gmail.com>
2025-04-06 10:42:15 +08:00
fufesou
7a3e1fe648 fix: ->macos, mouse events, key flags (#9733)
* fix: win->macos, mouse events,  key flags

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

* comments

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

---------

Signed-off-by: fufesou <linlong1266@gmail.com>
2024-10-24 14:33:37 +08:00
fufesou
40239a1c41 feat: macos, mouse button, back&forward (#9185)
Signed-off-by: fufesou <linlong1266@gmail.com>
2024-08-27 15:20:29 +08:00
fufesou
7b37e5183c update rdev, fix grab system utf8, fallback on linux
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2023-09-15 15:35:44 +08:00
fufesou
6e21f8410a debug, macos trackpad, flutter
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2023-06-11 15:56:09 +08:00
fufesou
b4feae33bb support linux mouse back/forward
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2023-01-05 17:47:26 +08:00
fufesou
01ade73304 fix macos sticky fn, https://stackoverflow.com/questions/74938870/sticky-fn-after-home-is-simulated-programmatically-macos
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2022-12-29 14:37:09 +08:00
KG7x
71103886e6 Fix typo 2022-12-25 20:21:13 +03:00
fufesou
fff6aad1c5 compile win & macos
Signed-off-by: fufesou <shuanglongchen@yeah.net>
2022-11-25 19:28:43 +08:00
xxrl
260c924010 opt: mac scroll to fast 2022-11-08 23:05:43 +08:00
Asura
5dab7bd9a2 Refactor simulate to support switching keyboard modes 2022-07-17 20:34:08 -07:00
Asura
7fe2609ffb feat: Support new keyboard mode 2022-07-13 02:14:32 -07:00
Asura
fa8595b77d Supports Mac OS simulate input by scancode 2022-07-12 08:36:45 -07:00
rustdesk
7dfa038c6d fix shift + 'a' for mac 2022-06-10 12:00:59 +08:00
rustdesk
c80e2204d9 https://github.com/rustdesk/rustdesk/issues/406#issuecomment-1145157327 2022-06-03 10:05:51 +08:00
rustdesk
25ca204213 https://github.com/rustdesk/rustdesk/issues/406#issuecomment-1145157327 2022-06-03 02:37:52 +08:00
rustdesk
2724bd4000 try out unicode if key_down fail 2022-05-09 01:36:56 +08:00
rustdesk
780b57f597 load keyboard layout for mac 2022-01-14 01:15:03 +08:00
rustdesk
3f56c82c7b revert keysym back, enigo's Layout can do this 2022-01-09 21:05:00 +08:00
open-trade
26d161f827 working on keysym 2022-01-07 18:03:55 +08:00
rustdesk
e510d2744d fix apps key 2021-08-10 12:18:10 +08:00
rustdesk
eb76f7cecc fix mac key mapping, https://github.com/rustdesk/rustdesk/issues/186, https://github.com/rustdesk/rustdesk/issues/86 2021-08-04 03:44:00 +08:00
rustdesk
c385d88708 https://github.com/rustdesk/rustdesk/issues/133 https://github.com/rustdesk/rustdesk/issues/112 https://github.com/rustdesk/rustdesk/issues/43 2021-08-01 14:51:53 +08:00
rustdesk
8708fb366a righ key mapping and fix mac crash 2021-05-26 12:42:21 +08:00
rustdesk
d1013487e2 source code 2021-03-29 15:59:14 +08:00