Browser Commander: Because Backspace Should Go Back

There was a time when pressing backspace in a browser took you back a page. Chrome removed it in 2016. Firefox followed. Safari never had it. And just like that, one of the most natural keyboard shortcuts on the web vanished into the ether.

I wanted it back.

The Itch

I’m a keyboard person. I don’t want to reach for the mouse to click a back button, and I don’t want to remember that it’s command[ in Safari but command in Chrome but something else in Arc. I want one key backspace, like the old days.

And while I was at it, I wanted something else: a way to navigate links on a page without the mouse. A search-as-you-type overlay that shows every link, lets me filter by title or URL, and takes me there with return.

So I built Browser Commander.

What It Does

Three things:

Tapping backspace goes back. shiftbackspace goes forward. If you’re typing in a search bar or text field, Commander stays out of the way — it checks the Accessibility tree to see if the focused element is a text input before intercepting anything.

Tapping hyperL1 opens the Link Navigator — a floating HUD that scrapes every link on the current page. It reads them from the browser’s Accessibility tree, not from injected JavaScript. Type to filter, arrow keys to navigate, return to go. Up to 1,000 links per page, deduplicated, with titles and shortened URLs.

Everything is configurable. Don’t like backspace? Remap it to whatever you want. All three shortcuts are fully customisable in Settings.

The Accessibility API Approach

Browser Commander doesn’t use browser extensions. It doesn’t inject JavaScript. It doesn’t use AppleScript to read page content. It uses the macOS Accessibility API — the same API that screen readers use.

A CGEvent tap intercepts keyboard events globally, but only when a browser is in the foreground. The Link Navigator walks the browser’s Accessibility tree to find link elements, extracting titles and URLs from standard AX attributes.

This means it works with every browser. Safari, Chrome, Edge, Firefox, Arc, Brave, Opera, Vivaldi, Orion, Zen — if it has a window and an address bar, Commander can drive it.

Smart Suppression

The tricky bit with intercepting backspace is knowing when not to. You don’t want to navigate back when someone’s typing an email, editing a URL, or filling in a form.

Commander checks the focused UI element before swallowing the keystroke. If it’s a text field, search box, combo box, or text area — by role or subrole — the key passes through untouched.

It also plays nicely with other Jorvik apps. If Browser Notes has a filter panel open, Commander detects that the system-wide focus has moved to a different process and lets backspace through. Two separate CGEvent taps, two separate apps, zero conflicts.

The Companion

Browser Commander pairs with Browser Notes — a separate app that lets you attach notes to web pages. Both apps use the Accessibility API, both run as menu bar apps, both have their own CGEvent taps, and they coexist without stepping on each other.

Commander handles navigation. Notes handles annotation. Neither depends on the other.

The Small Things

The menu bar icon shows a globe with a backward chevron when Commander is active — subtle enough that you forget it’s there, which is exactly the point. There’s an enable/disable toggle for when you need to temporarily silence it, and the Settings panel exposes everything you’d want to tweak.

It’s about 1,000 lines of Swift. No dependencies beyond AppKit and ApplicationServices. No Electron. No subscription. No telemetry.

Just backspace doing what backspace should do.

Browser Commander is free, open source, and available now. The source is on GitHub.

Footnotes

  1. When I refer to the hyper key, this requires third-party software to handle, such as our own HyperCaps