In a mouse driven desktop application, with a ribbon style interface and which has no menubar, what is the best way for users to learn about the shortcuts and accelerators which can help a user work more efficiently.

My first instinct is that tooltips on hover over the buttons in the ribbon should show the accelerator in the information shown, so as to aid incremental discovery. But is that enough? I'd like to consider a multi-channel approach and introduce other mechanisms to increase learnability, in which case what other mechanisms would best help?

Obviously including them in the help documentation is another route to discovery, (and including a printer friendly cheat sheet), but I'm looking for in-software solutions.

[EDIT]
Comments on some answers below.

The modeless intelligent non-disruptive, out-of-the-way notification that neither appears the first time, nor every time after the first time seems to me to provide the best balance.

Rahuls tip about a quick notification early on that there are even shortcuts available is great and undo/redo shortcuts might be a good example to teach this by. The simple use of ? to bring up the shortcut lists to browse is nice.

The use of tooltips on Alt or Ctrl is a good idea (where appropriate), although I believe a second or so delay may be necessary so they did not popup immediately every time you used Ctrl+Z or Alt-Tab. This would work nicely for ribbon interfaces.

Gnats observation of a synchronized symmetry of mouse action in drawing window and keyboard command window below is very common in the CAD industry where there can be literally thousands of commands to be used. It also reminded me that in Pro/Engineer, users can customise and manage multi-key commands called mapkeys to access functionality from the keyboard, eg *csb* = *C*reate *S*olid *B*lend. This is a great example of one area where keyboard shortcut functionality should be designed in from day one (Rahul's tip below).

6 Answers
6

You could try to approach this with an, "tell them about better ways to do what they are doing when they do it" approach. For example, if I am selecting text and clicking bold, that is fine, but if I do that over and over maybe have a modeless (non disruptive, out of the way) notification that could say something like, "Did you know you can press ctrl-b to bold selected text?"

As long as the notification wasn't obtrusive, didn't pop up all of the time, and was intelligent about the times it did show up, then I think that would be a really positive way for users to begin to familiarize themselves with the shortcuts of the application.

Sounds fair. But it's worth noting that users must be provided with a way to turn off this sort of feedback.
–
gef05Jul 26 '11 at 13:53

4

Definitely. The notification could have a small button on the bottom that says, "Turn off these notifications." Also, as I said in the answer, they would have to be smart about when they showed. I know ctrl-b bolds text but sometimes I will still click the little button because its there. I wouldn't want to see that notification every time I clicked the button, just when I did it a lot where the shortcut could save me some time.
–
Matt LavoieJul 26 '11 at 13:57

haha - Ctrl+D -> It looks like you're trying to wipe your hard disk - would you like me to do that automatically for you...whiiirrrrr
–
Roger AttrillJul 26 '11 at 17:28

3

@Matt, from what I can tell Google+ took an interesting approach here: you can either dismiss one of those pop-ups or click "I get it" and it'll never bother you with that particular class of notifications again. So with that approach, if your reaction to the ctrl-b reminder is "not now I'm busy" just dismiss it; if it's "I know that now", you could turn that off while still being told later about ctrl-s.
–
Monica CellioJul 26 '11 at 21:41

Many Adobe CS products use a similar approach. Hover over a tool and you get 'Lasso Tool (L)'. Also, power users will likely be looking for these, especially in a desktop app, so just making the shortcuts available somewhere may have a very positive effect.
–
peteorpeterJul 26 '11 at 15:03

To facilitate the discovery of shortcuts you can provide information of some shortcuts when the CTRL key is pressed.

In this way, when the user uses a basic shortcut (e.g., CTRL+C to copy) small tooltips can appear over the ribbon to indicate that more shortcuts are available.

Another option to announce the availability of shortcuts is to indicate them in feedback messages ("the image has been deleted, press CTRL+Z to undo").

Edit. Office 2010 uses a similar approach for shortcuts. They use the ALT key which makes shortcuts difficult to discover (compared to the use of CTRL key). I paste an example below to illustrate how PowerPoint shows shortcuts to navigate through the tabs and to trigger actions:

I don't design desktop applications so I don't have much experience with options there, but I can give you some examples that might inspire.

Gmail

I've also always liked how Gmail does keyboard shortcuts. They're very simple, not requiring you to learn and use multiple keys at the same time and you can pop open a pane displaying all of them just by typing "?".

World of Warcraft

Blizzard have also done a lot of thinking about shortcuts in World of Warcraft. The game starts you off by teaching you that pressing 1 attacks, but clicking works too. So you're multi-modal from the start and can develop a preference to your liking. They're consistent about displaying which keys activate certain commands in the user interface, often by displaying a particular letter in bold/yellow to remind you. And like Gmail, they've kept shortcuts simple, using most of the keyboard's letters and numbers for core functionality. It's possible to create more complex shortcuts through customisation but immediate play is possible just by pressing "1" and "q", for instance.

My experiences

We've thought a bit about this in our product Handcraft. Since it's a code editor, your hands are on the keys most of the time so it's convenient to be able to do things with the keyboard from an ease of use and productivity point of view. But one of our priorities with the editor is to remain "uneditor-ey" when compared with IDEs like Visual Studio. So our goal is to keep the screen very clean and focused. As such we don't want keyboard tips and mouseovers everywhere.

One of the ways we approached the keyboard shortcut issue is with little tips dotted around the experience that you discover after you interact with something with the mouse:

Key takeaways

Incremental discovery, like you mentioned

Discovery from standard mouse-based use

An easily accessed cheat sheet with what you're looking for available at-a-glance

Teach the user that there are two ways to approach key functionality right from the start and let them decide how to progress

Build keyboard shortcuts into as much of the core feature set as possible so you as to effect maximum exposure, increasing the likelihood of users engaging with shortcuts

I love the tips, that is pretty along the lines of my concept. I think making it intelligent enough that it only gave them to you when it was appropriate is key. Also, MS Excel does something with the singe key shortcuts, you just have to press the alt key first and then they map all of the visible buttons to number and letter keys. office-watch.com/articlefiles/…
–
Matt LavoieJul 26 '11 at 16:05

I haven't yet figured how to apply similar trick particularly to keyboard shortcuts but to me the most thrilling way of "converting" novice users from mouse to general keyboard/command-line interaction was one I've seen in some old version (13? 14?) AutoCAD.

In that version, there was a large pane one could 'paint on' using mouse and menus and another, smaller 'text edit' like pane below that was showing and allowing to input/edit commands that matched actions performed with mouse.

The effect was just incredible. Just think of it - you (typical sloooow newbie) painfully moving mouse trying to pick the correct pixel for the center of your circle, then painfully click through a dozen of menus to set desired radius and line width and after you're finally done you see in that pane below something likecircle center(112, 27) radius(88) line(7) (syntax isn't exact, too much time passed and I don't remember its details).

Now, guess what? next time you wanted to move your circle few pixels or make the line a bit wider / narrower, you didn't even try to use mouse - you just went to that smaller window and edited it likecircle center(118, 24) radius(88) line(9)... and next time you wanted to draw a new circle, again, you just typed stuff in that pane below - simply because it was so obviously easier than with mouse. Real magic

That worked like a charm and not only to me but even to my teenager daughter (I was not using AutoCAD myself, just helping her with some homework).