Friday, February 22, 2008

Your shortcuts, or my shortcuts?

The shortcut problem..

I'm getting really tired of these programs and their shortcuts...
  • some programs don't have shortcuts at all
  • some programs have some shortcuts, but you can't customize them
  • some programs have their own shortcuts, but they're so un-standard that almost nobody uses them
  • finally some programs have their own shortcuts and they allow you to customize them
Kudos to the latter. But still, that doesn't solve my problem.

With every new program, I need to learn a new set of shortcuts. The problem comes when the shortcut is to some activity that can apply to several programs, like:
  • find, find next
  • close tab, move to next tab
  • save, save all
  • rename
What users want

What I want is this:
  1. be able to use my shortcuts
  2. whenever I set a shortcut, I want that to be available throughout all my programs
  3. be able to save all my shortcuts, and restore them (for instance, after a Windows re-install)
Well, good luck with any of the above. None is possible - which is very sad, because computers should work for us, not against us.

What the programmers should do...

It's too bad most programmers don't realize what the shortcuts are for. They are to benefit the user, not the programmer. This means that points 1-3 are perfectly reasonable.

Program-wise, this also means that:
  • shortcuts are not to be internal to the program
  • when you load a shortcut, you should be asking a system API function, not assign it some value you came up with, or load it from some crazy file, or from the registry
The solution

Sadly, there's no system API function to call, to load a shortcut. But if there were, here's how it should look like:

string get_shortcut(string shortcut_name);
os_representation shortcut_to_os(string shortcut);

That's it! The shortcut name needs to be made standard, like:
  • "find" - for find command
  • "save" - for save
  • "save_all" - for Save All
  • etc.
And the resulting string needs to be standard, to include shortcut combinations.

Then, based on your OS, the 2nd function, converts that string to the OS's internal representation.

So, you programmers out there - how 'bout we make some cool library to handle this? The implementation shouldn't take too long, but the benefits would be enormous...


Dean Berris said...

Have you seen Humanized's 'Enso'?

John Torjo said...


I just went there - that's quite cool, I must say ;)

Right now I'm using Launchy (, and I'm quite satisfied with it.

What I really like about Enso (I've just read through the site) is that I can maximize, minimize, unmaximize windows - which was quite hard before. So I"ll give it a try. Thanks!