Scroll and read from a game controller
The Reading & Scroll layout is built into InputConfig, free on the Mac App Store. You don't have to make an account, there are no subscriptions, and nothing is locked. Optimized for Apple silicon.
On a Mac: Sends scroll wheel events and the common zoom and jump keys, so it works in browsers, readers and most apps. Nothing to enable.
Yes, a game controller can scroll long pages and dashboards on a Mac: smooth scroll on the left stick, fast on the right, zoom on the face buttons, top and bottom on the D-pad. It sends scroll wheel events and the common zoom and jump keys, so it works in browsers, readers and most apps. It suits a Mac on a stand or a TV, where a mouse would be in the way.
The layout, control by control
How the layout thinks
- Read. Left stick up and down scroll smoothly, left and right scroll sideways.
- Find. The right stick scrolls fast.
- Zoom. In and out (Command Plus and Command Minus) on the bottom and right face buttons, reset (Command 0) on the left.
- Jump. Top and bottom of the page (Command Up and Down Arrow) on the D-pad.
- Click. The right trigger clicks.
The Scroll speed slider on the preset's page scales every scroll row at once, and the stick's depth still sets how fast it goes within that.
Tune it for long reading sessions
- Page at a time. Put Space and Shift Space on the bumpers, for browsers and readers.
- Read aloud. Select All, then Speak Selection.
- Reader mode. In Safari, Command Shift R on the touchpad press.
- A pointer when you need one. This layout has none. Add four Mouse Motion rows behind a chord if a link needs clicking.
Reading wants slow and finding wants fast, and two sticks mean you never switch.
Get it in two clicks
- Get InputConfig free on the Mac App Store, open it, and click Smart Preset Maker on the welcome screen.
- Search for Reading & Scroll and pick it. The layout is created as a preset in your sidebar, named and ready.
- Press Activate. Every row can be changed afterwards: the editor's Scan button rebinds any control the moment you touch it.
Every binding, as a table

| Controller | Sends | What it does |
|---|---|---|
| Left stick down | Scroll down | Scroll down |
| Left stick up | Scroll up | Scroll up |
| Right stick down | Scroll down | Scroll down (fast) |
| Right stick up | Scroll up | Scroll up (fast) |
| Left stick right | Scroll right | Scroll right |
| Left stick left | Scroll left | Scroll left |
| Right trigger | Left click | Click |
| A / Cross | Command (Left), = | Zoom in |
| B / Circle | Command (Left), - | Zoom out |
| X / Square | Command (Left), 0 | Reset zoom (Cmd+0) |
| D-pad up | Command (Left), Up | Top of page (Cmd+Up) |
| D-pad down | Command (Left), Down | Bottom of page (Cmd+Down) |
Button names follow the Xbox / PlayStation pair shown in the editor, so A / Cross is the bottom face button on either pad. On a Switch Pro Controller the bottom button is labeled B; the mapping still fires on position.
Questions
Why two scroll speeds?
Reading wants slow and finding wants fast. Two sticks means no switching.
Related
Completely free. You don't have to make an account, there are no subscriptions, and nothing is locked. Optimized for Apple silicon. Open source on GitHub.
Updated