Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Scroll Fix

Release License: MIT Platform

Fix mouse scroll wheel jumping the wrong way on Windows.

If your wheel scrolls down and sometimes ticks up (or the reverse), that is usually a worn/dirty rotary encoder — not your browser. Scroll Fix is a tiny tray app that blocks those ghost pulses.

Scroll Fix before/after demo

Download (no build needed)

  1. Grab ScrollFix.exe from the latest release
  2. Run it
  3. Look for the green tray icon near the clock

Right-click tray → Enabled / Settings… / Quit

Works with Cooler Master, Logitech, Razer, and most other mice with mechanical scroll encoders.

Why this happens

flowchart LR
  wheel[Scroll wheel] --> encoder[Worn encoder]
  encoder --> ghost[Ghost opposite pulse]
  ghost --> jump[Page jumps wrong way]
Loading

Cleaning with compressed air can help for a while. When the encoder is worn, software filtering is the practical fix.

How Scroll Fix works

flowchart TD
  event[Wheel event] --> hook[WH_MOUSE_LL hook]
  hook --> filter{Aggressive filter}
  filter -->|same direction| allow[Allow]
  filter -->|opposite inside window| block[Block ghost]
  filter -->|pause then reverse| reverse[Allow real reverse]
Loading

Default Aggressive mode blocks any opposite notch within ~220 ms and extends the lock during ghost bursts. Pause briefly (~0.2s) when you intentionally reverse direction.

More diagrams: docs/ROADMAP.md

Features

  • Global low-level mouse hook (browsers, editors, windowed games, …)
  • Aggressive mode tuned for worn encoders
  • Adjustable reverse-block window
  • Tray icon + settings + optional start with Windows
  • Counter of blocked ghost scrolls
  • Single portable .exe (self-contained .NET)

Settings

Setting Default Meaning
Aggressive mode on Opposite scrolls inside the window are always blocked
Reverse block window (ms) 220 How long opposite scrolls count as ghosts

If ghosts still leak → raise to 300 ms. If intentional reverses feel sticky → lower to 160–180 ms.

Settings file: %LOCALAPPDATA%\ScrollFix\settings.json

Build from source

Requires .NET 8 SDK.

dotnet test ScrollFix.sln
dotnet publish src\ScrollFix -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -o publish

Hardware tip

  1. Blow compressed air into the gaps beside the wheel while spinning it
  2. Optional: electronics contact cleaner (not regular WD-40), spin 30–60s, let dry
  3. If it only helps for minutes, keep using Scroll Fix (or RMA / replace the encoder)

Project layout

scroll-fix/
├── src/ScrollFix/           # tray app + hook + filter
├── src/ScrollFix.Tests/
├── docs/ROADMAP.md
└── README.md

License

MIT — see LICENSE.

About

Windows tray app that filters reverse ghost scrolls from worn mouse wheel encoders (Cooler Master etc.)

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages