by Michael S. Kaplan, published on 2007/06/17 12:31 -04:00, original URI: http://blogs.msdn.com/b/michkap/archive/2007/06/17/3354902.aspx
The plan for the design isn't flawed, though there is a flaw in its implemenation.
It starts with something I did not mention explicitly but talked a bit about in Keyboard UI in setup hoist by its own petard? and also a bit in On building a list of keyboards.
I'll start by looking in intl.inf on Windows XP for a moment.
You know that feature that adds a keyboard layout every time you switch the locale?
Well, the data supporting this feature can be found (in both XP and Server 2003) in intl.inf. We'll concentrate on Dutch but all locales have it:
00000413 = %Dutch_Standard% ,850 ,1,,0413:00020409,0413:00000413,0409:00000409
Those last three entries represent the three keyboards that were chosen to be the three keyboard associated with the locale:
Of course due to a bug affecting both XP and Server 2003, only the first keyboard on this list is added -- the other two sit in this data file but are not used (a bug that happens with almost every locale other than the EA ones).
By the way this is not the bug I was referring to at the beginning of this post.
So we will skip ahead to Vista -- intl.inf is no longer there, but that data is still needed. So it was added to GetLocaleInfo/GetLocaleInfoEx with the LOCALE_SKEYBOARDSTOINSTALL lctype. Same data, and they fixed the bug with only one keyboard on the list being installed.
Which exposes the other problem.
It is one I talked about in The real problems with keyboard switching, the first two bullet points from that post in particular:
When the script is the same (e.g. both the original and new layout use the Latin script as in English and French), subtle differences exist in the location of some of the letters that both of them share (such as the switching of the 'A' and the 'Z' keys between English and French). In many cases, all of the punctuation moves around in specific ways that seem to be pretty difficult to keep track of in a reasonable way.
The problem is that although having a keyboard marked as being for the English language can be useful (especially in programs like Word that use the language to help determine the tagging of content, which impacts spell checking and other operations), it is not useful to switch the physical layout. In almost all of the cases where the main keyboard for the locale fully supports the Latin script, the better keyboard layout to use is that language's layout with the English layout on top of it.
Almost every time, this really is a flaw in the implementation of this feature idea (a feature that is already of limited use since no one really explains the use in either Windows or the programs that would leverage it like Word).
Of course in any version people could add their own layouts that follow these rules, but while the idea is understandable it isn't terribly intuitive without it being explained. And nobody is explaining any of it at the moment....
And the only fix for this would be to update almost ll lof the data behind the various locales that have the problem (most of them).
This post brought to you by ძ (U+10eb, a.k.a. GEORGIAN LETTER JIL)
referenced by