Holy cow, I wrote a book!
"How do you come up with new shortcut keys and how do you deal
with different keyboard layouts?
What is the process;
is there a company-wide procedure to keep things consistent?"
This is several questions (none of them really a suggestion,
but I've given up on making the Suggestion Box about suggestions;
now it's just the "Ask Raymond a question" page),
so let's take them one at a time.
(Note that if you ask multiple questions,
you reduce the likelihood that I'll answer them,
because I feel obligated either to answer all of them or none of them.)
First question: How do you come up with new shortcut keys?
You just make them up.
Application shortcut keys are local in scope
(either to a dialog box, or to a menu, or to a
top-level window message loop via the accelerator table),
so you can just pick something that does not cause duplication
within your local sphere.
How do you deal with different keyboard layouts?
To deal with different keyboard layouts, you, um, deal with
different keyboard layouts.
Menu shortcuts, dialog box shortcuts, and accelerator tables
are all localizable,
so translators can assign them to whatever key they feel works
best on the keyboard layouts most likely to be used by their
If you want your shortcut to be invariant across keyboard layouts
(such as Ctrl+C for copy, regardless of
then you (or somebody you trust) need to check all the keyboard
layouts to make sure your desired shortcut key is available on all of them.
the keyboard shortcuts for snapping, unsnapping, and repositioning
applications in Windows 8
were originally going to be
However, upon checking with the globalization folks,
it became clear that those hotkeys were not going to work,
because on many keyboards, typing
[ and ] requires the use of the
Users would have had to press
to move the gutter to the left, or if they didn't have an
This was clearly far too unwieldy,
so the hotkeys were changed to
Is there a company-wide procedure to keep things consistent?
Since application shortcut keys are local in scope,
there is no need for a company-wide procedure to keep them
from conflicting with each other.
Each application can assign its shortcut keys as it sees fit.
And maintaining consistency across applications is done the same
way gas stations and airlines maintain consistency in pricing:
You look at what everybody else is doing
and try to be consistent with them.
This creates a first-move advantage:
If the first application to create a Properties menu item
assigns it the keyboard shortcut Alt+R,
then that makes it likely
that the second and third applications which add a
Properties menu item are likely to use the same shortcut.
Windows 95 introduced a lot of new items into context
menus (such as Properties),
so the Windows 95 design team got to choose
a lot of important keyboard shortcuts.
In Explorer, hit Shift+F10
and look at the Properties menu item.
On English systems, it shows up as
The shortcut is still Alt+R,
over a decade later.
Besides, imagine if there was some company-wide procedure
for keeping things consistent.
First, you would have to make sure everybody knew about this
"What, there's a procedure I have to follow before I can assign
menu and dialog shortcut keys and application accelerators?"
And then everybody would complain,
"Oh great, before I choose a shortcut, I have to fill out
this application in quadruplicate and then show up at
yet another meeting."
Microsoft is famous for its
You don't address this problem by adding more meetings.
(Note that I don't share that author's views,
probably because I don't go to many meetings.)
New shortcut keys are added all the time.
A single dialog box can have a dozen or more.
Imagine being on the shortcut-key-consistency committee.
Your day would be wall-to-wall meetings about shortcuts.
"Yes, the standard shortcut for Properties in German is
Alt+E (for Eigenschaften),
but we'd like to apply for an exception because our menu
also has an Insert command
Einfügen) and the standard shortcut
for that is also
Since Insert is used much more often,
we'd like to keep
And when somebody came to you with the request,
how would you decide whether to approve or reject it?
Probably by saying,
"Well, let's see how other applications handle this."
So your big complicated hotkey approval process reduced to
what people would have done anyway.
Congratulations, you just wasted everybody's time.