by Michael S. Kaplan, published on 2006/01/05 10:01 -05:00, original URI: http://blogs.msdn.com/b/michkap/archive/2006/01/05/509539.aspx
Ilya Constantinov asked in the Suggestion Box:
Remote Desktop seems to have an undocumented behavior of passing on your current keyboard layout (at time of connection) to be installed on the server you're connecting to. This sort-of makes sense, especially cause it's installed only for the duration of the session, but why don't all my local keyboard layouts get installed on the server side? Was there special reasoning for that?
And not too long ago a related question came up from an email from Holger Luebsen:
When I connect to a US English Terminal Server and my local default language is say French, then the logon prompt on the Terminal Server shows FR and I can toggle to EN. So far so good.
The problem comes, when my local default language is English and I select a temporary French keyboard/language locally and connect to the Terminal Server. The logon prompt will show EN, but type FR. I can then toggle the language. It still displays EN, but now types English. Toggle back and it is French again.
Now when I cancel the logon, but do not close the rdp client, switch the keyboard to German and connect again, the language indicator correctly shows DE. If I now cancel again without closing the rdp client and switch back to French and connect it correctly displays FR.
If I cancel and close the rdp client, open a new client and connect I will see EN again instead of FR.
That looks like a bug to me. Is this known and has someone a fix for this? Anybody else experienced this?
Hmmm.... lots of information in there, isn't there? Let's try combining it all with the feature in the Updating the keyboard list in the logon dialog post.
I have a Windows Vista machine that has the English and Greek keyboard layouts installed using the logon dialog trick above, and on my machine I have installed English, Russian, Greek, and Thai keyboards. From the very beginning in the Login dialog you can see the language list is available:
Now note that in this case the English keyboard is my process default. Let's try changing the latter, using the same thing but with a Greek process default.
Ok, so now we know that the Terminal Services is smart enough to negotiate when the same keyboard you are trying to use before the login is available on both client and server.
Unfortunately, it does go downhill from here....
Let's try switching to one of those other keyboard layouts on the client (either by setting the process default or switching to the keyboard prior to hitting the Connect button). What do we get in the dialog?
Wow, it picked up the Russian! And if you Left Alt+Shift toggle through layouts it does not hit that other keyboard (the Thai one). And as I move between the layouts (so I can type in my password!) the language bar icon updates:
Once I have logged in, that Russian layout is the one that is selected in the Language List and it is the process default....
But the weird part is that it is not on the Text Services and Input Language dialog as being the process default or even on the list at all!
This is definitely a temporary keyboard, isn't it? :-)
I ran several experiments (inspied by Holger's posting) and found that I was able to confuse it sometimes (though not as often as the bug report I mentioned earlier!), but it seemed remarkably robust in light of all the odd changes being thrown at it. And when I was done playing aroundresearching, all traces of the extra 'temporary' keyboards were gone.
So when I consider the real world scenarios involving users who explicitly change their keyboard layouts, I think they are most likely to get what they expect (if they switch to a keyboard layout, that keyboard is used). It seems fragile enough for a tester to find oodles of minor inconsistencies, but robust enough that it recovers gracefully.
And it does seem to be getting better in Vista (this very post might cause it to be a little better if any bug reports are inspired by it!).
I definitely don't envy the folks who had to do the work to build the logic for the huge matrix of possibilities between all of the possible server and client settings. It might be the hour I am typing this but I honestly get a headache just thinking about it....
This post brought to you by "Ψ" (U+03a8, a.k.a. GREEK CAPITAL LETTER PSI)
# Marc Brooks on 5 Jan 2006 12:30 PM:
# Michael S. Kaplan on 5 Jan 2006 2:14 PM:
# Ilya Konstantinov on 5 Jan 2006 6:39 PM:
# Michael S. Kaplan on 5 Jan 2006 6:51 PM:
# Ben Cooke on 6 Jan 2006 8:12 PM:
# Michael S. Kaplan on 6 Jan 2006 10:55 PM:
# Ilya Konstantinov on 1 Mar 2006 11:09 AM:
referenced by