https://github.com/esporttoys/librescroll
Smooth inertial scrolling with any regular mouse.
https://github.com/esporttoys/librescroll
accessibility autoit ergonomics infinite-scroll middle-click momentum momentum-scrolling mouse rawinput sendinput thinkpad tpmiddle trackball trackpoint winapi windows zig zig-package
Last synced: 2 months ago
JSON representation
Smooth inertial scrolling with any regular mouse.
- Host: GitHub
- URL: https://github.com/esporttoys/librescroll
- Owner: EsportToys
- License: gpl-3.0
- Created: 2023-07-19T07:46:15.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2025-05-21T15:42:36.000Z (about 1 year ago)
- Last Synced: 2025-05-25T15:05:24.481Z (about 1 year ago)
- Topics: accessibility, autoit, ergonomics, infinite-scroll, middle-click, momentum, momentum-scrolling, mouse, rawinput, sendinput, thinkpad, tpmiddle, trackball, trackpoint, winapi, windows, zig, zig-package
- Language: Zig
- Homepage:
- Size: 68.4 KB
- Stars: 146
- Watchers: 4
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# LibreScroll
Smooth inertial scrolling on Windows with any regular mouse.
### [Download Here](https://github.com/EsportToys/LibreScroll/releases)
https://github.com/EsportToys/LibreScroll/assets/98432183/c7fc05a5-6b10-4b91-9984-0d809a52b025
## Instructions
1. Run LibreScroll
2. Hold Mouse 3 and move your mouse, the cursor will stay in-place, mouse motion is instead converted to scroll momentum.
3. Release middle-mouse-button to halt scroll momentum and release the cursor.
To compile from source, run
```
zig build-exe main.zig main.rc main.manifest --subsystem windows
```
## Options

### Friction
The rate at which momentum decays.
(Units: deceleration per velocity, in s⁻¹)
### X/Y-Sensitivity
The horizontal/vertical multiplier at which mouse movement is converted to scroll momentum.
Set a negative sensitivity to use reversed-direction scrolling, or zero to disable that axis entirely.
(Units: scroll-velocity per mouse-displacement, in s⁻¹)
### Minimum X/Y Step
The granularity at which to send scrolling inputs.
This is a workaround for some legacy apps that do not handle smooth scrolling increments correctly.
A "standard" coarse scrollwheel step is 120, and the smallest step is 1.
### Flick Mode
When enabled, releasing middle-mouse-button will not stop the scrolling momentum.
Press any button again (or move the actual wheel) to stop the momentum.
### ThinkPad Mode
When enabled, scrolling snaps to either horizontal or vertical, never both at the same time.
This emulates how scrolling works on ThinkPad TrackPoints.
### Pause/Unpause
Temporarily disable the utility if you need to use the unmodified behavior in another app.
This kills the worker thread, which can be restarted by clicking Unpause or Apply.
### Apply
After modifying the preference, click this to apply the configuration as displayed.
This kills and restarts the worker thread with the new configuration.
## Recommended Settings for ThinkPad users (replacing TPmiddle)
With your TrackPoint's middle button set to "middle click mode", the following configurations are recommended to emulate TPmiddle's direct scrolling:

```
Friction: 30
Y-Sensitivity: 90
X-Sensitivity: 90
Minimum X-Step: 10
Minimum Y-Step: 10
Flick Mode: No
ThinkPad Mode: Yes
```