The Autodidacts

Exploring the universe from the inside out

Towards Universal Keybindings

Keyboard people invest time upfront memorizing keybindings, in order to save time in the long run. At least, that’s the theory. In practice, it’s more like this:

Vim Keybinding Meme

What if we crowdsourced the optimal set of universal default keybindings — and made them available in every app? Imagine all the people just getting things done in multiple programs, without retraining their muscle memory!

This is not a merely academic suggestion. I migrated from Bluefish and Geany to Sublime Text. It was good, but closed-source, so I switched to Atom. GitHub got bought by Microsoft, and axed Atom. So I learned Vim, and used VSCode (codium version, because Microsoft) for things that Vim was bad at. Now I use Helix for both code and prose. I’m trying out Emacs on the side, and fall back on Vim when necessary. At the same time, I switched from Unity, to Gnome, to i3, to Sway, to Xfce, to Cinnamon.

I’m tired.

Does every text editor have to have different default keybindings for the same basic operations?! Take ... opening a file:

Text Editor Default (fuzzy) pick file keybinding
VSCode Ctrl+p
Helix Space+f
FZF Ctrl+t
Emacs C-x C-f
Vim :e or :Ex
Most other apps Ctrl+o

And then there’s save: a quick grep for :w in my text files would find many matches. And while I’ve never intentionally used the software flow control XOFF Pause transmission signal (Ctrl+s), I’ve sent it many times.

Every app makes their decisions for a reason. They’re trying to create a cohesive, efficient experience within that one app, and avoid conflicts.

But what if we created a cohesive, efficient experience, and avoided conflicts, across all apps! Wouldn’t it be glorious?!

My proposal:

  1. Create a voting website with an entry for each keybinding, and each semi-universal action, and let people vote for the best pairings of keybinding + action.

    • From the page for Ctrl+p, people could vote between “Fuzzy Open”, “Print”, and “Preferences”, or nominate some other action. And on the page for “Fuzzy Open”, people could vote between Ctrl+p, Ctrl+t, Space+f, :Ex, C-x C-f, etc.
  2. Spread it across the internet and wait for a consensus to emerge. Write blog posts arguing for this mapping or that mapping (taking into account all the other mappings). Optionally, write an opt-in app that crunches stats on people’s real-life usage, so the ergonomics of the keybindings for the most-used actions could be prioritized.

  3. Write an app that can convert the winning universal keymap into a keymap for any program that supports remapping. (There might be a few keys that need to be remapped for a specific app, but it would be few enough it’d be easy to remember.) Also: allow users to override the universal keymap, and export their personal-universal keymap and load it into all their apps.

  4. Encourge apps new and old to adopt the Universal Keybindings, but know that even if they don’t, you can have one set of keybindings that you learn for life.

  5. Suddenly discover that you’re able to remember people’s names.