On Sat, May 16, 2009 at 9:49 AM, Peter Åstrand <astrand@cendio.se> wrote:
On Sat, 16 May 2009, Ilya Konstantinov wrote:

     This information tells the RDP server which keymap to use, ie how to interpret RDP scancodes.

Just to make it clear, the Windows Terminal Service doesn't use this value to interpret anything. It installs a keyboard layout for the system (just like
you could do manually later, through the Control Panel) and then feeds the received scancodes (letting Windows do the translation to WM_CHARs).

>From a client perspective, we don't really care if it's Terminal Services or some other Windows subsystem that is responsible for the translation. All that is important is that the client must send a keymap so that the server know how to interpret the scanodes. Btw, RDP is not limited to Windows systems either; there are RDP servers for Linux as well (even though I think those are quite bizarre.) 

From a naive perspective, yes. But since you only send an LCID value (0x409 for English US etc.) and not really an accurate representation of your local key-to-character mapping, you're at best making a honest effort to approximate the local user preferences on the remote machine.

This belongs to the class of features which aim to keep remote preferences similar to the local ones, to make the user feel at home on the remote station. It's important, it's just *technically* a separate goal.

Goal #1: Send precise AT scancodes, no matter what. (As much as possible, keep it language-agnostic, keep local language-specific keyboard mappings out of the way.)
Goal #2: Give the remote server a good hint about the local keyboard preferences.

Both goals important, and not dependent on each other.