kb-scroller-demo.mp4
Keyboard Scroller helps you scroll through apps, websites, and documents without lifting your fingers off the keyboard. à la Vimium's scroll feature.
PgDn
scrolls really quickly by a whole page per keypress, which I find disorientating. Keyboard Scroller allows PgUp
and PgDn
(or custom shortcuts) to scroll continuously and smoothly.
- 😎 Trackpad-smooth scrolling with
PgUp
andPgDn
- ⌨️ Bind custom shortcuts to scroll
- 🦘 Two types of scrolling - Normal and Jump (scrolls by a fixed distance)
- ⚙️ Customize scroll speed and jump distance
- 🎯 Automatically moves your cursor to the active window when scrolling
Download the latest release here. View all versions and changelog here.
Requires macOS 12.3 or later.
Simply set the Remap PgUp & PgDn
option to either Scroll
or Jump
!
Alternatively, you can set custom keyboard shortcuts for easier access to scrolling.
Personally, to avoid lifting my fingers off the home row, I use Hyperkey to remap Caps Lock
to ⌃⌥⇧⌘
.
Then I use the following bindings in Keyboard Scroller's Preferences:
Scroll up
to⌃⌥⇧⌘K
Scroll down
to⌃⌥⇧⌘J
Jump up
to⌃⌥⇧⌘U
Jump down
to⌃⌥⇧⌘D
For slowly scrolling through a document I use Scroll, and for dashing through I use Jump.
- Scrolls super fast in VSCode
- "Mouse scroll fixer" apps (e.g. Mos and Mac Mouse Fix) cause scrolling to jump long distances
I work on Homerow, which has a modal workflow for scrolling. You hit a shortcut to enter "Scroll-mode", then hit HJKL
to scroll, and hit Tab
to switch the active scroll area.
I wanted to experiment with an ephemeral workflow using keyboard shortcuts to scroll directly and see how it compares with the modal workflow in Homerow.
However, that was not the plan from the start. I originally wanted to rewrite Homerow's Scroll-mode to explore SwiftUI, play with additional features like Jumpers and Freestyle, and snapshot testing the Accessibility API integration to prevent regressions. The poor code quality in Homerow may have played some part in wanting to do a rewrite. I found myself having to find workarounds to implement everything with SwiftUI that would have been fairly simple with AppKit, and overall it was just not fun. Since I plan on continuing using AppKit, there wasn't a point in making Scroll-mode a separate app, and a refactor in Homerow makes more sense. Keyboard Scroller is simply a by-product of the prior mentioned explorations.
Nope.
To emit scroll events using the CGEvent
API.
I might.
Share it with a friend and buy me a coffee!