microsoft / microsoft/PowerToys
Mouse utility: cursor position memory with Alt+Scroll monitor switching - V2.0.0 live on GitHub now.
- Dominant language
- C
- Stars
- 139k
- Forks
- 8.6k
- PR merge metrics
- PR metrics pending
Description
### Description of the new feature / enhancement
Description of the new feature / enhancement:
Multi-monitor users (3+ displays) waste significant cursor travel dragging across thousands of pixels to reach other screens. Existing Mouse Utilities (CursorWrap, Mouse Jump) help reduce travel but don't solve the core problem: when you leave a monitor, you lose your place.
MCscrolls (Monitor Continuity Scrolls) adds per-monitor cursor position memory with instant keyboard+scroll switching:
Alt+Scroll Up/Down cycles the cursor between monitors in left-to-right order
Each monitor stores the exact cursor coordinates from your last visit — you always land where you left off
Ghost cursors render on all inactive monitors showing stored positions, so you always know where you'll land before you scroll
150ms debounce prevents accidental multi-hop on free-spin scroll wheels
Monitors re-enumerate automatically on display change, sleep/wake, and connect/disconnect
This is a natural companion to CursorWrap and Mouse Jump inside Mouse Utilities. CursorWrap reduces travel by wrapping edges. Mouse Jump lets you visually teleport. MCscrolls eliminates travel entirely with a muscle-memory-friendly scroll gesture and persistent position recall.
Demo: https://youtu.be/NwFuzn8ljaE
Working implementation:
I built and ship this as a standalone open source tool: https://github.com/seredac/MCscrolls
It runs as a .NET 8 WinForms system tray app using a WH_MOUSE_LL hook — same low-level approach as existing Mouse Utilities. Single-file self-contained exe, no dependencies, no network activity, no telemetry. MIT licensed.
Happy to contribute this as a PowerToys Mouse Utility and adapt it to the PowerToys codebase architecture.
### Scenario when this would be used?
Scenario when this would be used:
Any multi-monitor workflow — development across IDE + terminal + browser, trading/SCADA/ops dashboards, creative work spanning timeline + canvas + reference. The ergonomic benefit is measurable: users with 3-5 monitors reduce wrist travel substantially by eliminating repeated long cursor drags. Power users and accessibility-focused users benefit equally.
### Supporting information
https://youtu.be/NwFuzn8ljaE - My demo.
https://www.reddit.com/r/Monitors/comments/1s66ktx/multi_monitor_cursor_hopping_with_stored/?utm_source=share&utm_medium=web3x&utm_name=web3xcss&utm_term=1&utm_content=share_button - Reddit post I made.
https://github.com/seredac/MCscrolls - official github
Contributor guide
Research direction
Start by reviewing the linked MCscrolls implementation, described as a .NET 8 WinForms tray app using a WH_MOUSE_LL hook, then compare it with PowerToys Mouse Utilities. Done means adapting per-monitor cursor memory, Alt+Scroll switching, ghost cursors, debounce, and monitor re-enumeration to the PowerToys architecture.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- desktop
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100