The Shift+F10 key is a keyboard shortcut for calling up the context menu on the selected item. but if you look closely, you might discover that the right-click menu and the Shift+F10 menu differ in subtle ways. Shouldn't they be the same? After all, that's the point of being a keyboard shortcut, right?
Let's set aside the possibility that a program might be intentionally
making them different,
in violation of UI guidelines.
For example,
a poorly-designed program might use the
WM_
message as the trigger to display the
context menu instead of using the
WM_
message,
in which case Shift+F10 won't do anything at all.
Or the poorly-designed program may specifically
detect that the WM_
message was generated from the keyboard
and choose to display a different menu.
(This on top of the common error of forgetting to
display a keyboard-invoked
context menu at the currently selected item.)
If somebody intentionally makes them different, then they'll be different.
Okay, so the program is not intentionally creating a distinction
between mouse-initiated and keyboard-initiated context menus.
Shift+F10 and right-click both generate the
WM_
message,
and therefore the same menu-displaying code is invoked.
The subtle difference is that when you press Shift+F10,
the shift key is down,
and as we all know,
holding the shift key while calling up a context menu
is a Windows convention for
requesting the extended context menu rather than the normal context menu.
You get a different menu not because the program is going out of its
way to show you a different menu,
but because the use of the shift key accidentally triggers
the extended behavior.
It's like why when you look at yourself in the mirror,
your eyes are always open,
or why when you call your own phone number, the line is always busy.
To avoid this, use the Menu key
(confusingly given the virtual key name VK_
)
to call up the context menu.
(This is the key that has a picture of a menu on it,
usually to the right of your space bar.)
When you press that key,
the code which decides whether to show a normal or extended
context menu will see that the shift key is not held down,
and it'll go for the normal context menu.
Of course, you can also press Shift+AppMenu, but then you'll have come full circle.