Zen Browser from a game controller
The Zen Browser 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: Zen is built on Firefox and keeps Firefox's Mac shortcuts. Like Firefox it gives controllers to web games through the Gamepad API, not to browsing.
Yes, Zen Browser works from a game controller on a Mac with the browser layout, because Zen is built on Firefox and keeps Firefox's Mac shortcuts. Pointer on the left stick, scroll on the right, navigation on the face buttons, tabs on the D-pad. Zen makes a good sofa browser because so little of it is on the screen.
The layout, control by control
How the layout thinks
- Point and click. The left stick moves the pointer, the right trigger clicks and the left trigger right-clicks. The right stick scrolls.
- Move through pages. Back, Forward, Reload and New Tab on the face buttons.
- Tabs. Close tab on the left bumper, the address bar on the right, previous and next tab on the D-pad with Command Option and the arrows.
- A free button. There is no Escape row, so Start is free for one.
Tune it
- Workspaces. Put their switching keys from Zen's keyboard shortcut settings behind a chord.
- Typing. Press the address bar row, then a Start Dictation row.
- Small sidebar targets. Set a lower Pointer speed on the preset's page.
If a web game reads the pad
Like Firefox, Zen passes a controller to web pages that ask for one through the Gamepad API. With this layout running, the game also gets its clicks. Deactivate the preset while you play, and activate it again to browse. One pad, one job at a time: the game or the browser layout, never both.
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 Zen Browser 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 left | Mouse motion left (speed 16) | Cursor left |
| Left stick right | Mouse motion right (speed 16) | Cursor right |
| Left stick up | Mouse motion up (speed 16) | Cursor up |
| Left stick down | Mouse motion down (speed 16) | Cursor down |
| Right stick down | Scroll down | Scroll down |
| Right stick up | Scroll up | Scroll up |
| Right trigger | Left click | Left click |
| Left trigger | Right click | Right click |
| A / Cross | Command (Left), Left | Back |
| B / Circle | Command (Left), Right | Forward |
| X / Square | Command (Left), R | Reload |
| Y / Triangle | Command (Left), T | New tab |
| LB / L1 | Command (Left), W | Close tab |
| RB / R1 | Command (Left), L | Address bar |
| D-pad left | Command (Left), Alt / Option (Left), Left | Previous tab |
| D-pad right | Command (Left), Alt / Option (Left), Right | Next tab |
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
Does this match the Firefox layout?
Yes. Zen keeps Firefox's keys.
Does Zen Browser have controller support?
Not for browsing. It passes a controller to web pages that ask for one through the Gamepad API. This layout handles the browsing.
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