microsoft / microsoft/PowerToys

Mouse utility: cursor position memory with Alt+Scroll monitor switching - V2.0.0 live on GitHub now.

Open
#46,613 1 comment 0 reactions 0 assignees View on GitHub
Area-Accessibility Idea-New PowerToy Needs-Triage Product-Mouse Utilities
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.