Hotkeys involving the Windows logo key are reserved by the system


Hotkeys involving the Windows logo key are reserved by the system. New ones are added over time. For example, Windows 98 added Win+D to show the desktop. Windows 2000 added Win+U to call up the Utility Manager. Windows XP added Win+B to move keyboard focus to the taskbar notification area. And a whole bunch of new hotkeys were added in Windows Vista, such as Ctrl+Win which is used by speech recognition. (It's also a bit of a pun: "Control Windows", get it?)

The fact that these hotkeys are reserved is hard to find. It's buried in a bullet point a third of the way down the Guidelines for Keyboard User Interface Design document. It's also highlighted in the WHQL keyboard requirements right in the section title: "Windows Logo Key Support (Reserved for Operating System Use)". But even if you didn't find the documentation (and I don't blame you), the history of Windows clearly indicates that new Windows logo hotkeys arrive on a pretty regular basis. If your program uses one of those hotkeys, there's a good chance it'll conflict with a future version of Windows.

Why isn't this mentioned in the RegisterHotKey documentation? Perhaps it should. But historically, function documentation merely told what a function does, not how it should be used. How a function should be used is a value judgement, and it was traditionally not the role of function documentation to make value judgements or specify policy. If you go to a programming language's specification document, you'll find a discussion of what the language keywords do, but no guidance as to how you should use them. Like a language specification, function documentation historically limited itself to how something is done, not whether it ought to be done. Recommendations traditionally belong in overviews, white papers, and other guidance documents. After all, the CreateFile documentation doesn't say "Do not create application data in the My Documents folder." The CreateFile function doesn't care; its job is to create files. Whether a file is created in the correct location is a guideline or policy decision at a higher level.

Note: I don't know whether that is still the position of the function documentation team, that it limit itself to the facts and avoid value judgements and guidance. My goal today is to draw attention to the guidance.

Comments (77)
  1. JP says:

    When will we ever see thw WindowsKey+I launch internet explorer?  Is it just me or it’s not obvious to anyone else?

  2. Nathan says:

    Interesting. I was wondering why attempting to use the Windows key as part of a hotkey shortcut didn’t work.

    One (hopefully) interesting note: the OSS clipboard extender Ditto allows you to use the Windows key in its hotkey. I currently have it mapped to Windows + ` (grave accent mark), and this works just fine. Maybe the restriction you mention only applies to alphanumeric keys? Or maybe Ditto just listens for the keypresses itself without using the Windows API.

    [I think you misunderstood this article. -Raymond]
  3. Anders says:

    Onenote uses the Windows key. Win-S allows you to insert a screenshot for example.

  4. Better tell the OneNote people. Isn’t Office supposed to be just like any other ISV?

    [Yup, and the Windows division gets pissed off at them when they break the rules just like any other ISV. -Raymond]
  5. Erling Paulsen says:

    @JP: If you are running Vista and have the quicklaunch toolbar enabled on your taskbar, you can press left windows key + 1

    Given that it is the first icon from the left.  If it is the 2nd, press 2, 3rd, press 3 and so on…

  6. One of the very first thing I install on a new computer is the good ol’ WinKey utility that allows to map commands to Win+<key> combinations.

    For me, it totally replaces all sorts of quick launch bars and other similar utilities.

    Unfortunately, it no longer works well on Vista. I miss it much.

    (And since you assign hotkeys yourself, it’s simply up to you not to use combinations used by Windows)

  7. Tom says:

    Any reasonable application allows hotkeys – especially system-wide ones – to be configured, including disabling them.  Why should the shell be any different?

    I would be rather upset if Windows+I became forcibly mapped to “Launch IE”, since I almost never use IE and have been using Windows+I to display my Inbox for almost as long as keyboards have had a Windows key.

    There are group policies to disable the shell Windows hotkeys. (It’s always frustrating when people complain about things that aren’t even true.) -Raymond]
  8. J says:

    "I currently have it mapped to Windows + ` (grave accent mark), and this works just fine. Maybe the restriction you mention only applies to alphanumeric keys?"

    May I suggest that you re-read the article?

    The whole point of this article was to explain that it’s not impossible to use the Windows key as a modifier, but that doing so is a bad decision because all those keys are reserved for future Windows use.  So if the shell in the future wants to use Windows+` for something, then your program’s binding likely won’t work anymore.

  9. I would be rather upset if Windows+I became forcibly mapped to "Launch IE"

    An obviously better design would be to launch the default browser.

  10. Ulric says:

    When will we ever see thw WindowsKey+I

    launch internet explorer?  

    I have this already.. (I use the Windows 2000 skin on XP, I don’t know if this affects it)

    Add Internet Explorer to your start menu, then you can do [WindowsKey] (release) "I" or the first letter of any app

  11. Adrian says:

    Are the Windows hotkeys localized?  The mneumonics make sense in English (Windows+E -> Explorer, Windows+L -> Lock workstation, etc.).  Do people who use other languages get different combinations?  Or are the mneumonics simply less meaningful for them?

    I learned about Windows hotkeys only a couple years ago.  I had no idea they were actually being used as far back as Windows 98 (and I’m a heavy keyboard user).

    I notice the newer keyboard now label the windows key with "Start".

  12. GregM says:

    That these are reserved is in MSDN online now, but wasn’t there as of the library included in the January 2006 MSDN shipment (the last one with VS2003 documentation in it).

  13. Maurits says:

    > I would be rather upset if Windows+I became forcibly mapped to "Launch IE"

    An obviously better design would be to launch the default browser.

    Indeed, but I would argue that Windows + W (for Web) would be a more appropriate key.

  14. Good Point says:

    What is the difference between Windows+D and Windows+M?  Both seem to do the same thing, or is Windows+M being handled by something else?

    If you kill/<remove from run key> Office’s ctfmon.exe the Windows+V goes away…

  15. Ulric says:

    as far back as Windows 98

    It was introduced with Windows 95 of course.  there was a .txt file in the Windows folder that listed all the shortcut keys. Windows+E, Windows+M, etc

  16. Kamil Kisiel says:

    Good Point:

    Not exactly sure, but at least on my system Winkey-M doesn’t minimize every window: Google Talk doesn’t minimize. Winkey-D seems to minimize all the windows, not sure what the actual difference is. Also you can push Winkey-D a second time to restore all the windows.

    [It’s linked right there in the article at the point where I mention that Win+D shows the desktop. I can’t believe I had to write that. -Raymond]
  17. Thoe says:

    Are the Windows hotkeys localized?

    No, they seem to be standard. (At least on all local windows version I have seen – mainly danish, but also polish, german and a few other)

    • And thanks for that. When you work with different local Windows version it is nice to know that i.e. Win-E brings up the explorer…

    • I will never understand why ctrl-F in danish wordpad/winword etc. means "Format bold" and ctrl-B is Find. (The danish words are Fed=Fat/Bold and Find=Find – so the reason seems to be that "Format bold" is a more used/important function then "Find"…)

  18. Maurits says:

    Windows + D brings the _d_esktop to the foreground.

    Windows + M _m_inimizes all open windows.

    … OK, yes, these are the same thing.

  19. Nar says:

    >What is the difference between Windows+D and Windows+M?

    One minimizes all windows, one shows the desktop. If you show the desktop then click on a window in the taskbar, all windows unminimize, vs. just one if you minimized all windows instead.

    [What the heck? Have I fallen into crazy-land where people don’t know that you can click on links? -Raymond]
  20. Nar says:

    Windows + D brings the _d_esktop to the foreground.

    Windows + M _m_inimizes all open windows.

    … OK, yes, these are the same thing.

    No, they’re different.

  21. Mihai says:

    “Keyboard shortcuts that involve the WINDOWS key are reserved for use by the operating system.”

    That feels really wrong!

    Long time ago Apple had the idea to put it’s logo on the keyboard. Microsoft missed the train.

    Later on, bad design in created a “Start” button (and other areas) that could not be reached using the keyboard. Instead of seeing it as a bug to fix, that was regarded as a opportunity to catch up. And we ended up with the “Windows keyboard,” with an extra “Menu” button and (finally) a “Windows” button. I guess marketing was really happy.

    But we go beyond that. That key is reserved for Microsoft.  Apple did not have the guts to say “don’t use the Apple key in your applications”

    [Obviously there’s an alternative, because back in 1995 most people did not have a Windows key on their keyboard. Ctrl+Esc. -Raymond]
  22. Matt Green says:

    > After all, the CreateFile documentation doesn’t say “Do not create application data in the My Documents folder.”

    Aside from your blog, is there a definitive source for all these value judgments? They make the difference between a good program and a great one.

    Then again, pretty much every program out there spams My Documents with some silly “My” folder of its own, and usually insists on re-creating it. “My eBooks”, “My Downloads”, or, my new un-favorite “Visual Studio Settings.” Psst, get into AppData where  you belong, VS: it isn’t a document I made!

    [This blog is not definitive. I thought we settled that a few months ago. Try Chapter 4 – Data and Settings Management. -Raymond]
  23. David Heffernan says:

    Anyone else come across the issue where Intel’s laptop software registers system wide hotkeys CTRL+ALT+arrow key.  These clash with my companies apps short cuts and so my app doesn’t get them.  What’s worse is that they change the screen orientation so our users have upside down screens!

    One client worked out that the Intel software was involved but still e-mailed me asking me to change my app to sort out the problem.  Why didn’t he e-mail Intel I mused.  As Larry Osterman has recently said, these "applets" that take over your computer are the modern day viruses.

    Now I’ve just read that I’m meant to avoid CTRL+ALT combinations, oh dear.  But isn’t it a greater sin for Intel to register a system wide hot key that the user finds very hard to disable (or even work out what app is handling it?) and that overrides the app with the focus?

  24. My favorite Windows hot key is

    {Winkey}+{Pause Break} to bring up System Properties.  When I did server and scsi card installs at the beginning of my career, I would always get cred from the sysadmins, who invariably had to watch my every move, with that little trick.

  25. Triangle says:

    [What the heck? Have I fallen into crazy-land where people don’t know that you can click on links? -Raymond]

    Yes. It’s called the internet.

  26. Nar says:

    [What the heck? Have I fallen into crazy-land where people don’t know that you can click on links? -Raymond]

    I knew the rough differences (actual, visible differences unlike the guy before me who thought they were the same), and I posted them. What’s the point in getting annoyed at me?

  27. Maurits says:

    "Show the desktop" and "Minimize all windows" ARE the same.

    It’s just that the "Minimize all windows" has a bug that it doesn’t, um, minimize all the windows.  It just minimizes the minimize-able windows.  Which is probably why there’s no UI for that command anymore (Show the Desktop has "won".)

  28. James Schend says:

    Maurits is just itching to get a derogatory note from Raymond at the bottom of his post.

    [I give up. I include a link in the article to a previous article that explains everything but (1) people ask the question anyway, and (2) people actually respond with their own theories. I think I’m just going to delete all the “Show desktop” comments. If you can’t read, you don’t deserve to comment. -Raymond]
  29. andy says:

    [What the heck? Have I fallen into crazy-land where people don’t know that you can click on links? -Raymond]

    Perhaps those poor people are stuck with Gopher (RFC1436) and have yet to enjoy the value of hypertext documents?

  30. CP says:

    Actually, it *is* mentioned in the docs:

    http://msdn2.microsoft.com/en-us/library/ms646309.aspx

    "Keyboard shortcuts that involve the WINDOWS key are reserved for use by the operating system."

  31. steven says:

    Nathan, since Ditto is OSS, you could find that out yourself. However, if I read Raymond’s post correctly, he does not mention that it is impossible to use the Win-key with RegisterHotkey, just that, as the hotkeys are reserved for the system, it *should not* be done.

  32. Mikkin says:

    But Raymond, if the function documentation team were to specify intended usage, context constraints, etc. (i.e. the semantic web that makes all the bits and pieces into an operating "system") then you would have nothing left to write about except people who don’t read or follow links. And half the WIN API coders would loose their jobs – hopefully the half that doesn’t read The Old New Thing.

  33. f0dder says:

    MSDN/PlatformSDK is a wonderful & impressive piece of work, I wish other Operating Systems had as comprehensive pieces of work.

    Considering the [b]"Recommendations traditionally belong in overviews"[/b] part, perhaps MSDN/PSDK ought to [b]link[/b] to those articles where relevant?

  34. GreaseMonkey says:

    Win + I, I think, would stand for "Internet", not just "Internet Explorer".

    And yes, /me <3 MSDN online :D It covers almost everything one needs to know about Windows programming. Though I haven’t programmed for Windows in ages, probably ‘cos I’m too lazy to install MinGW.

  35. Nektar says:

    I think that many of these shortcuts are not clearly documented. This is because I discovered some of them after trial and error. For example, when I was using XP win+v used to activate voice recognition, win+h hand-writing recognition, win+c to help you complete a word during speech recognition and win+b to place focus on the notification area. These shortcuts where nowhere documented in Windows help. I guess the win+v, win+h and win+c were added by Office 2003 because they are listed on the Office website but you need to specifically search for them, i.e. the information is not readily available to someone that does not know that it exists. Also, win+b was nowhere listed even though it is clearly a Windows shortcut. Even if win+v, win+h and win+c were Office extentions, then it is strange since the language features they support sound like Windows Tablet features and not Office feature and they are also accessible from the Regional and Language Options in Control Panel. And even if they are only Office  then they should not be using the Windows key I guess they are not following Microsoft practices.

    In addition, Windows Desktop Search uses win+shift+f, so if Microsoft products can make such mistakes in using the Windows key then perhaps other similar application like Google Desktop may do they same? Google uses win+g.

    But my main problem is with Vista documentation. I don’t think that again it is complete. Win+b for example is not listed and neither are the win+1 to win+… for activating Quick Launch shortcuts. I don’t think that win+v for voice recognition or win+h for hand-writing still work but again you never know.

    Overall, if you go to gnome.org and you look for their accessibility features, you find a much better guide for using every, repeat every, aspect of the Gnome Desktop from the keyboard. Whilst on Vista some shortcuts are thrown here and there and no complete guide that would describe every little detail of accessing the interface from keyboard as in Gnome. For example, how do I bring up the context menu for a container like a folder or the desktop in Windows? In the Gnome documentation it explicitly says: "Press ctrl+f10". But in Windows you have to find out by yourself. It turns out that you have to first unselect the currently selected item by pressing ctrl+space and then press the application key or shift+f10 for get to the context menu.

    It’s little things like this that make a lot of difference. How to I resize grid columns from the keyboard? How to I short using a specific column header from the keyboard? How do I select multiple objects? Etc, etc. On Gnome everything is described. On Windows you have to find out yourself and in some cases no care for accessibility has been provided. For example, on Gnome you can press f7 and get a virtual cursor in a help document and browse it with the cursors. In Windowsm the HTML help viewer has no such feature and screen-readers were force to comes up with their own implementations of a virtual cursor.

  36. Jeff says:

     Considering the [b]"Recommendations traditionally belong in overviews"[/b] part, perhaps MSDN/PSDK ought to [b]link[/b] to those articles where relevant?

    If you’re already staring at the documentation for RegisterHotKey or CreateFile, it’s too late to link to articles on good design.  You won’t read them, because you already think you know how to do it best (or you wouldn’t be staring at the function documentation!).

    Better, read the introductions and usage docs first; then move on to the function reference.  Coincidentally, this is exactly how the MSDN library organizes docs in each topic: About, Using, and Reference.

  37. DriverDude says:

    I totally agree that if Microsoft has reserved the Windows key for its own use, then apps should stay clear away from it. Because, as we all know, once it’s hardcoded in an closed-source app, all sorts of backwards-compatibility issues come into play.

    But the *user* should not be prevented from assigning any hotkey they wish. Most apps that allow global hotkeys are configurable, and if I want to assign Ctrl-C or Wnd-D to in favoriate utility, I should be allowed to do so. Which, thankfully, is the case today.

  38. Nidonocu says:

    I’d just point out that it goes without saying that this isn’t something really that should be blocked. After all, there are handy utilities that one can install with the idea of adding to or overriding Windows keys on purpose. eg, I use an app that overrides the Windows Flip3D view (Win+tab) with a custom one. They generally also include the ability to customize the keyboard shortcuts anyway so its not so much of an issue with them.

  39. Gabe says:

    The link to "Guidelines for Keyboard User Interface Design" does not seem to work. I get a 404 error.

  40. Yawar Amin says:

    Another pun: Win+Break brings up System Properties. Maybe if you mess around there too much you could break the system?

  41. Dave says:

    Seriously Raymond, do you actually read people’s comments before replying?

    Tom said:

    Any reasonable application allows hotkeys – especially system-wide ones – to be configured, including disabling them.  Why should the shell be any different?

    You said:

    There are group policies to disable the shell Windows hotkeys. (It’s always frustrating when people complain about things that aren’t even true.) -Raymond]

    So basically, Tom asks for a configuration UI for hotkeys and you say "You can turn them off in group policy".

    Thats like responding to "How do I repaint my garden shed?" with "You can demolish it with a hammer. (I hate it when people ask stupid questions.)"

    Not only did you not answer the question, you attacked him for even asking.

    Have you considered a career in politics?

    This is a good blog, Raymond. You are clearly a clever guy who has lots of useful insight, but your attitide to people asking honest questions leaves a lot to be desired.

  42. meh says:

    Group Policy does qualify as an ‘UI’.

  43. Vladimir says:

    Link to a “Guidelines for Keyboard User Interface Design” does not work for me. I get MSDN 404 page.

    Also, Raymond, you’re slowly becoming more and more short-tempered. It takes twenty seconds to simply copy-paste the link for each of the commenters who missed it and I’m sure that it takes more than two minutes to express your dissatisfaction with their blindness writing an answer to each of them. Moreover, if you go the first way people will love you for your kindness ;)

    [I have never had much patience for lazy people. If I get more and more short-tempered, maybe it’s because people are getting lazier and lazier. -Raymond]
  44. John says:

    Never change, Raymond.  You are my hero.

  45. mh says:

    "It’s just that the "Minimize all windows" has a bug that it doesn’t, um, minimize all the windows.  It just minimizes the minimize-able windows."

    That’s not a bug.

    If it minimized a window that wasn’t minimize-able, *then* it would be a bug.

  46. Mr Cranky says:

    So… the Windows key is "reserved" by Microsoft to be used for only what they think is best. Yet… in this case, "reserved" means, "hope you read everything published on MSDN", because it isn’t enforced.  Until some time in the future that they see fit to add yet another barely-documented shortcut and disable any existing use.

    Nice.  Can’t imagine why there’s ever any compatibility problems.

  47. Dean Harding says:

    "Group Policy does qualify as an ‘UI’."

    What the..? What is gpedit.msc if it’s not a "UI"?

  48. Aidan Thornton says:

    Thinking about it, this is going to make the forthcoming port of the Amarok music player to Windows a pain to use; it uses global shortcuts involving the Windows key for play, skip track, etc.

    This is fine under Linux (in fact, it’s about the only way you can safely have a global keyboard shortcut without affecting some app), but an issue under Windows. Unfortunately, as far as I know there aren’t really any safe choices for global keyboard shortcuts.

  49. Ian Argent says:

    ""Show the desktop" and "Minimize all windows" ARE the same.

    It’s just that the "Minimize all windows" has a bug that it doesn’t, um, minimize all the windows.  It just minimizes the minimize-able windows.  Which is probably why there’s no UI for that command anymore (Show the Desktop has "won".)"

    No – they are very different; and I, for one, am glad of that difference. I use several applets that aren’t minimizable in some configurations, and the fact that they *don’t* get "put away" by Win+M is very handly.

    Actually – it’s not even that Win+M skips over items that can’t be minimized; it skips over items that don’t have a taskbar eentry – such as Winamp or my chat program while I have told them to not create task bar entries.

  50. Dan says:

    It seems no one has posted the CORRECT definitions of Win+D and Win+M.

    At the risk of being redundantly redundant to Raymond’s link, I will point out the differences (although his link only indirectly references Win+D’s "undo" feature).

    Win+D focuses the desktop, minimizes all minimizable windows, and temporarily hides all non-minimizable windows (except the taskbar).  Once you change focus from the desktop to another app, the hidden windows are reshown.  Pressing Win+D a second time undoes it’s effects, including unminimizing windows it minimized.

    Win+M has NO effect on windows which cannot be minimized normally (IE no WS_MINIMIZEBOX style, and there are probably other rules too such as not being a tool window) and only minimizes windows which can be minimized.  Win+M also doesn’t have the second-press-undo functionality of Win+D.

    Lastly, Win+D has a taskbar context menu item: "Show the Desktop"/"Show Open Windows" and Win+M does not (at least in XP).  So there.

    I think if I found another app using a non-configurable Windows+key I would be a bit irked.  Get your own key!  Now on the other hand, users who know what they’re doing can happily make Windows+key bindings in their favorite media players and know what’s going on if they run into a conflict.  On the other hand, ANY user can also make such key bindings and they might not know what’s going on if they get a conflict.  On the other other hand, this isn’t very likely to happen since those users tend to upgrade Windows by, well, buying a new computer, and reassigning hotkeys would make the application warn the user the hotkey was now already in use.  On the other other other hand, it still is possible Joe Average does an in-place upgrade to Vista and finds his favorite Win+X shortcut key no longer works and opens Windows Mobility Center instead, so perhaps apps should display a warning dialog when a Win+key is attempted to be bound?  On the other other other OTHER hand, since this will only serve to confuse the 99.9% of users who will never have to worry about such a problem, it is probably best left out for simplicity’s sake.

    And this brings me to my point: I plan to avoid coding for an OS if I can help it. :)  Now that I’ve said that, I’ll probably either end up at Microsoft working on Windows someday, or be a Linux contributor.

  51. Nawak says:

    Going back to original article, I notice that the comments were better (my judgement) *and* that Raymond wasn’t as thermonuclear as now.

    Maybe we should see a relationship and just shut up a little more :) We are exhausting Raymond!!

  52. test pilot says:

    I think global shortcuts ought to be ultimately chosen by the users rather than the vendors anyway. It’s nice to provide default ones, but rather than worry about what is safe just let the user reassign them if the defaults are not so good. Then if two programs collide, it’s possible for it to be resolved.

  53. meh says:

    @Dean Harding: Just what I was saying.

  54. Marc K says:

    ‘…the CreateFile documentation doesn’t say “Do not create application data in the My Documents folder.”‘

    I wish it did.  I have over 40 items in my My Documents folder, 4 of which were made by me.  Having applications dump their junk in there has forced me to make a private documents folder that they don’t know about.

    [Do you wish it were in CreateFile or just that it was in a place application writers are likely to find when they try to figure out where the My Documents folder is? (e.g. GetSpecialFolderPath.) While we’re at it, why not also add it to the PathAppend, PathCombine, StringCchCat, etc. documentation? After all, the program is going to use one of those functions to build the path. Should we also document all the registry keys used by the operating system in the RegSetValue function? -Raymond]
  55. Maurits says:

    > Lastly, Win+D has a taskbar context menu item: "Show the Desktop"/"Show Open Windows" and Win+M does not (at least in XP).

    Exactly.  Windows 98 has "Minimize All Windows" and "Undo Minimize All" in the context menu (even though Win+D works;) XP (and Vista) have "Show the Desktop"/"Show Open Windows" (even though Win+M works.)

    "Minimize All Windows" was v1; "Show the Desktop" was v2.  v1 still exists but purely for backcompat and for geeks.  (I use the pejorative freely because I consider myself a geek.)

    But I hold firm to my assertion that, version differences aside, these are the *same feature.*

  56. mh says:

    "But I hold firm to my assertion that, version differences aside, these are the *same feature.*"

    I’m afraid they’re not.  One of them brings the desktop to the front of the Z order, the other doesn’t.  Even in the guts of the OS, this means that they’re coded differently.  It’s the same as the difference between one window being higher than another in the Z order, and a window being minimized, and the desktop is just a window like any other.

  57. Ian says:

    [Do you wish it were in CreateFile or just that it was in a place application writers are likely to find when they try to figure out where the My Documents folder is? (e.g. GetSpecialFolderPath.) While we’re at it, why not also add it to the PathAppend, PathCombine, StringCchCat, etc. documentation? After all, the program is going to use one of those functions to build the path… -Raymond]

    I hate to say it Raymond, but how about a _link_ in each of these documentation pages to another page that discusses correct usage. OK, I know, nobody would click the link :-(

    [Are you saying that StringCchCat should have a link to “User interface guidelines regarding the distinction between CSIDL_PERSONAL and CSIDL_APPDATA”? -Raymond]
  58. Hayden says:

    Ummm…

    "Guidelines for Keyboard User Interface Design" is 404.

    Try

    http://msdn2.microsoft.com/en-us/library/ms971323.aspx

  59. Dave says:

    Unfortunately, it no longer works well on Vista.

    I miss it much.

    There are a number of other freeware alternatives that work under Vista.  My Vista box is powered off at the moment so I can’t check what I’m using, but a Google search should find several.

    While I’m commenting, who on earth decided that the totally unusable Shift-Meta-Alt-Ctrl-Escape-Cokebottle-Tab combination was a good hotkey for Task Manager?  If there are guidelines for not using Windows+X combinations, are there also guidelines for when they should be used for Windows tasks?

  60. SuperKoko says:

    Now on the other hand, users who know what they’re doing can happily make

    Windows+key bindings in their favorite media players and know what’s going

    on if they run into a conflict.

    Yeah. I need many many system-wide hotkeys for personal use.

    Too many CTRL+ALT+? conflict with softwares I use.

    I don’t have enough convenient CTRL+SHIFT+?.

    So, I’m happy to use Win+? hotkeys.

    If I upgrade my OS and it conflicts with a system hotkey, that’s not too bad, I just have to change this hotkey.

    I take this responsibility without shame.

    Now, I agree that applications should never use such hotkeys unless they’ve explicitly be input by the user.

  61. SuperKoko says:

    "Guidelines for Keyboard User Interface Design" is 404.

    Except that it isn’t.

    Try

    http://msdn2.microsoft.com/en-us/library/ms971323.aspx

    It’s perfectly accessible from my computer.

  62. Matt says:

    If soneone wants to ask Raymond a question on this blog in the comments please read http://www.catb.org/~esr/faqs/smart-questions.html

    Don’t treat it as gospel but get the general idea please.

    Ray feel free to get crabby with them when they waste your time with *lazy* questions (which are not the same as stupid questions)

  63. Ian says:

    ‘”I hate to say it Raymond, but how about a link in each of these documentation pages to another page that discusses correct usage.”

    ‘That’s nuts! CreateFile would have a link to about fifteen hundred different pages if you did that!’

    If course it would be nuts to list each of the 1500 rules as a separate link. But why not include just a very small number of links to the relevant areas in the documentation, e.g. if the API function impacts on keyboard access, link to the relevant guidelines. If it relates to the filing system link to the relevant section that does have all 1500 rules about where to store files.

    The key is linking at the right level – not the very top of the manual so you still have to search for the relevant chapter, but not at the individual rule level either.

    [Is a page with 1500 links any better? It’s not just 1500 rules about where to store files. It’s 1500 rules about every time files are mentioned anywhere in MSDN. “Recommendations on creating a new wallpaper bitmap”, “Guidelines on font installation”, “Accessing content on a WEBDAV server”, etc. -Raymond]
  64. Dean Harding says:

    "I hate to say it Raymond, but how about a _link_ in each of these documentation pages to another page that discusses correct usage."

    That’s nuts! CreateFile would have a link to about fifteen hundred different pages if you did that!

    * DO NOT create files in "My Documents" that the user did not specifically ask you to.

    * DO put such files in the AppData folder.

    * DO NOT try to write to "Program Files" or "Windows" folders without administrator privileges.

    * Even with Administrator privileges, think twice before you write to Program Files or Windows.

    * Ensure that files you create have the correct ACLs.

    * When you open an file, only request the access rights that you’ll actually need.

    etc, etc… the list would be huge!

  65. nah says:

    Nobody should hard-code system-wide hot keys.

    Nobody, including Microsoft.

    Just give me sort of "tweakUI", so I could disable all these stupid hot keys invented at Microsoft – I need these keys for my own purposes.

  66. Ulric says:

    yep that link in the blog article, http://msdn.microsoft.com/library/en-us/dnacc/html/ATG_KeyboardShortcuts.asp

    indeed does not work.  Or at least it doesn’t in FireFox, from Canada.  It redirect to a 404 page.

  67. Ken Hagan says:

    If the shell wishes to reserve a hot key, it could actually register it and bind it to no action. Applications then wouldn’t be able to violate the UI guidelines.

    The shell, after all, has the benefit of getting in first. (Likewise, WinLogon gets to own Ctrl+Alt+Del and the operating system gets to own pagefile.sys. Neither is specifically protected.)

    It could even offer some UI, so that end-users could re-assign the key but, in the absense of "automating the UI by simulating input", applications still couldn’t.

  68. SuperKoko says:

    If the shell wishes to reserve a hot key, it could actually register it and bind it to no action.

    Applications then wouldn’t be able to violate the UI guidelines.

    But it doesn’t wish.

    Not using system hot key is a guideline, not an absolute rule.

    An application that provides ways for the user to configure global hotkeys (e.g. a hotkey to show/hide an the settings panel of a background application) should allow the user to choose Win+? keys.

  69. Peter says:

    I can see why Microsoft wanted to reserve it for their future use – after all, what is a key with a Windows logo on it supposed to be used by?

    But I’m not happy about this because it appears that nVidia have read this documentation (presumably it’s not a 404 for them?) and won’t let me allocate any hotkeys using it in their desktop manager thingy. Pity, because Win+1, Win+2 could have been "move window to desktop 2" or "move window to monitor 1" etc.

    I do find it a bit irritating that Microsoft have managed to persuade almost every keyboard manufacturer in the known universe to add this key to every keyboard made (along with the even less useful right-click key), but wants it to remain useful for only a small set of predefined shortcuts which neatly avoid any useful window management features.

    Question for someone who can read the documentation link: is a user "allowed" to configure hotkeys using the windows key? ie. does the restriction only apply to programs predefining hotkeys, or are they supposed to prevent users from doing so like in the example I gave above?

  70. Dean Harding says:

    Um, for people who can’t (or don’t) read the comments, the correct link is: http://msdn2.microsoft.com/en-us/library/ms971323.aspx

    I assume the old link worked when Raymond first wrote the article.

    The actual guideline in that link says:

    "Do not use the Windows logo key as a modifier key for non-system-level functions."

    Raymond’s post is the logical extension of that. If you assign a shortcut to Win+something, and a newer version of Windows comes along, it might override your setting. Seems perfectly simple to me.

  71. Raymond, how does this sound?

    (somewhere in the CreateFile entry, PSDK or MSDN the following could be placed)

    Relevant Design Guidelines (which is a url to http://guide.msdn.com/?func=CreateFile)

    The database would pull up all relative info and display it, stuff like AppData, My Documents and all that stuff.

    Obviously I feel sorry for the database aka guide team having to set up these matches/search index rules but the benefit for the developer is the addition of only one single link in the documentation for a function leading to all related info nicely displayed, something I’ve always wished for each time I have to Google or browse the PSDK or MSDN.

  72. Dean Harding says:

    Roger: The problem is not the number of links, it’s the number of guidelines. Whether you have 1,500 pages with one guideline each, or one page with 1,500 guidelines, it doesn’t make much difference…

    If a developer doesn’t read the relevent "overview" chapters of MSDN and just jumps straight to the function reference, he’s not going to read your guideline page either, no matter how many times you link to it.

  73. Just an example how how tucked away such info is currently, take a look at where the guidelines for Windows Vista user experience is located:

    MSDN>MSDN Library>.NET Development>Articles and Overviews>Windows Vista>Windows Vista User Experience Guide…>Guidelines

    …ugh!

    Progress Bars is under:

    MSDN>MSDN Library>.NET Development>Articles and Overviews>Windows Vista>Windows Vista User Experience Guide…>Guidelines>Controls>Common Controls>Progress Bars

    Why isn’t that for example under:

    MSDN>Guidelines>Windows Vista>Controls>Progress Bars

    And good luck trying to search for:

    progress bar guideline

    the first result is about check boxes

    searching for: progress bar guidelines

    is better though and luckily first result brings you to the right page.

    Having a MSDN "Guidelines" sub-search that prioritize and filter for this would be a dream, I know that I would be a extensive user of such a specific search.

    Which reminds me…I’d better bookmark that vista guidelines page.

  74. Ken Hagan says:

    "But it doesn’t wish. Not using system hot key is a guideline, not an absolute rule."

    Fair enough, but the title of this post uses the word "reserved" rather than "guideline". There’s clearly a spectrum of how badly you don’t want apps to do something. My point was simply that *if* the shell feels that the logo key is reserved, then there are ways in which it could enforce that. If they only feel it is a guideline, then they have to accept that there are plenty of rude programs that will simply ignore the guideline. I guess that’s the downside of Windows being so successful — you get all the bad programmers targetting the platform as well as the good ones.

  75. JQP says:

    This Raymond guy is a real pain in the ass.

  76. Scoth says:

    You know, there’s something about one of these that has always bugged me. I seem to recall that the very original Windows 95 release mapped Win-C to the Control Panel. I remember doing it on my home computer at the time, as well as a school computer later. I noticed it stopped working in Win98, and I haven’t been able to make it do anything in later releases of Win95. Does anyone know if I’m crazy, or did it used to work? :)

Comments are closed.