Let's say I'm developing a new desktop application for Windows. Is there a list somewhere that I can consult (either from Microsoft or a 3rd party) of keyboard shortcuts that all Windows applications should support?
(Note: When I say "all Windows applications" here, I really mean "all Windows applications where a particular keyboard shortcut makes sense." For example, a standard "Begin debug session" shortcut might make sense across IDE applications such as Visual Studio and Eclipse, but not for other types of applications such as Notepad or Firefox. Also, it might not make sense for certain specialized applications that have their own complete custom sets of keyboard shortcuts, such as vi, to follow some of the standard conventions followed by other applications.)
For example, I would argue that where it makes sense, Windows applications should support the following keyboard shortcuts, because they are de facto standards that most other applications support (just a partial list):
From anywhere:
- F1 - Show Help
- Alt+F4 - Close application
While editing text:
- Ctrl+A - Select all text (in current field, if applicable)
- Ctrl+Home/End - Move caret to start/end of current field
- Shift+[any navigation] - Select text between the previous caret position and the new caret position
While an item that can be edited or renamed is selected:
- F2 - Rename or edit the current item
While a child window or tab has the focus in a multi-window / multi-tab application:
- Ctrl+F4 - Close the current window/tab
- Ctrl+W - Close the current window/tab
- Ctrl+Tab / Ctrl+Shift+Tab - Activate next/previous window/tab
And so on. (Again, these are just partial lists -- I think many more de facto standard shortcuts exist.)
So: Is there a more complete list of these types of de facto standard keyboard shortcuts for Windows applications, that can be used by developers as a starting point for determining the keyboard shortcuts that a new application being developed should support?
If a similar list of conventions for mouse behavior were available as well, that would be ideal. (e.g. double-left-click word = select word)