One fine day, I get a call to help in investigating failures in few of the automated tests. After some investigation, we figured that failures were happening because somebody decided to assign “F2” as a keyboard shortcut to build. What is wrong with that? Doesn't it simplify the keyboard shortcut compared to VS 2003's Cntrl+Shift+B? Well, it turns out that F2 is typically used for rename and test was relying on this fact.

However, tests are not the only ones who rely on facts like this. Most users also assume/wish/want that keyboard shortcuts are consistent across applications (and with the operating system). It reduces the learning curve and makes them more productive. Consider the amount of chaos if Word decided to rebind “Cntl+C” to something other than “Copy”. One should know about “standard” keyboard shortcut before picking one for commands in their application. If a command exposes standard functionality (like copy); it should have a standard shortcut (like Cntl+C). This makes your application consistent with the OS. You can read about various WinXP keyboard shortcuts at http://www.microsoft.com/enable/products/KeyboardSearch_XP.aspx. You can read about keyboard shortcuts of various applications at Keyboard Assistance site (VS is not on that list :-(). Raymond has also posted a tip on why one should not use “Cntl+Alt” as modifiers. In addition, one should avoid creating of accelerators (or shortcuts) that override system accelerators. It is mentioned in “Accelerator Keystroke Assignment” section in About Keyboard Accelerators.

I know VS is inconsistent. We have too many shortcuts exposed and we break many rules. Help is really notorious. However, I don’t know if we will fix each one of these instances. There are many legacy issues around it. For e.g., consider the scenario if we fix VS so that F10 activates the menu (essentially what “Alt” does). People will start complaining because we changed keystroke of one of the most used command of VS, the “step” debugger command.

Hence my advice is more applicable to new application instead of legacy ones as you would be infuriating users by changing the shortcuts without enough justification.