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
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
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).