So Mouseless Experiment 07 has got me thinking about application design for mouseless use. In the Control_Click(object Sender, EventArgs e) world it's easy to forget about the keyboard as anything other than the thing used to enter text into textboxen.
I had a major project under development for over a year and one of the requirements was allowing users to work through all major workflows without the mouse. This required a lot of attention to details that are sometimes forgotten. Here's a few tips:
- Tab Orders/Tab Stops are important. When you change the UI, make sure you properly alter the tab orders to support the most linear workflow possible on the form. The fields should flow as they do on screen according to cultural reading styles which means in English you make the inputs and the tabs go Left->Right and Top->Down. Tab stop the more likely actions (buttons, e.g.) such as "save" ahead of the less likely ones such as "cancel" regardless of position.
- Add Alt-Helpers to Actions. I don't know what these are really called :/ but it's where you label the "save" button &Save in any windows app, and make sure to do the same for top-level menu items.
- Assign shortcut keys to important menu items. Major actions (save, exit, new, etc) should be accessible via a shortcut key without opening the menu.
- "Cheat" to assign shortcut keys to on-form actions. Put in a context menu. Add the shortcut key assignments to the commands you want to support. Doing so is an easy way to process shortcuts for "non-menu" items without trying to fuck with the annoyance of the various key-related events, or resorting to windows hooks (obviously this only applies to active and focused forms).
Following these 4 steps will make your applications very keyboard-friendly and go a long way toward keeping your power users happy.