Microsoft Remote Desktop Mac Keyboard Mapping

For over a year now, Microsoft provides a free application called Microsoft Remote Desktop to access a computer (usually running Windows) through RDP from a Mac or iOS or Android device. This version should replace another free application provided by Microsoft: Remote Desktop Connection Client for Mac. If I remember well, the latter had taken his time to fully manage Mac keyboards in a foreign language. It looks the same for this new App: this problem does not seem a priority. Indeed, for now this app assumes you are using a PC keyboard on your Mac.

Microsoft Remote Desktop Mac Keyboard Mapping Software

More and more I am getting frustrated with the 'Remote Desktop' for MAC. I use the copy/paste and Mission Control to switch between spaces A LOT. I really need to map/bind the Mac keyboard's Command Button to 'Windows Ctrl button', just like as it was offered in the previous version of the RDP. Any knows how to make work? Whether you’re building a Hackintosh or using a non-Apple keyboard (like a mini wireless keyboard) with your Mac, you may find that you need to map the non-existent command key (Apple key) to. The Alt key to the right of the space bar on the Mac keyboard equals the Alt Gr/right Alt key in Windows. By default, the remote session will use the same keyboard locale as the OS you're running the client on. (If your Mac is running an en-us OS, that will be used for the remote sessions as well.). Microsoft Remote Desktop for Mac is an application that allows connecting to virtual apps or another PC remotely. Discover the power of Windows with Remote Desktop designed to help you manage your work from any location over a network connection. How to force keyboard layout for remote desktop. Alexander Gran Posts: 179. Hi, we are using german keyboards on our clients, but we have servers all over the world.

As Microsoft Remote Deskto is a promising product (in particular, it supports RemoteApp from a Mac, xfreerdp being a little disappointing on this point), I thought it deserved a little search. I finally found two different methods to overcome the problem, one looking more usable than the other.

About keyboard management by operating systems

Schematically, we can say that a keyboard is managed by the operating system (OS) at 2 levels. A level we could call “hard” and another “soft”. At the “hard” one, electrical signal corresponding to the movements of the keys on the keyboard are sent to the OS, it calls the keyboard driver that interprets these signals and translated them into push key or release key events. Those will be used downstream by the OS. For example, if you push the first key next to the tabulation one, the “hard” part will say the OS: the key “0x0” was pressed. Here come the “soft” level that defines what should be done with this information: the concept of keyboard layout come into action. One can decide, if the keyboard is QWERTY that key “0x0” displays an “A” and if the keyboard is QWERTY, it displays a “Q”.

Microsoft Remote Desktop Mac Keyboard Mapping

On the Mac, there is an open-source tool for working at the “hard” level: Karabiner and another to work at the “soft” one: Ukelele. The second is slightly simpler approach, so I started there, especially because I had already used it for VNC connections to Windows computers from a Mac. Unfortunately, soon I came to the conclusion that Microsoft Remote Desktop is working at the “hard” level and therefore it was useless to try to redefine a new layout on the client-side.

With this conclusion, there are only two ways:

  • Working at the “hard” level with Karabiner on the client
  • Working at the “soft” level on the RDP server

An easy workaround if you are connecting to Windows Server 2012 or Windows 8

On Windows 2012, it appears that the management of keyboard layouts has been greatly improved. Also, if you define a keyboard layout for your Mac client, you can:

  • Propose this layout from the login screen that allows your users to type passwords despite key mismatches between Mac and PC keyboard (the user must be active and trained to do this)
  • Request that all previously open applications change to the new keyboard layout if ever you were using an other one before

Now, I do not have computers running Windows Server 2012, so I can’t confirm that. That’s my readings, but if it’s indeed the case, you just have to define (or find on the Internet) a layout for your Mac keyboard and just ask to change to this keyboard layout when you connect from your Mac. If you can’t find one of those layouts, you can define one with the intuitive tool to create a layout (at the “soft” level) under Windows: Microsoft Keyboard Layout Creator (MSKLC).

The solution for connections to Windows 2008 R2 or Windows 2007: Karabiner on the client

Karabiner is an open-source solution used to be called KeyRemap4MacBook and which gradually replaced DoubleCommand. This application is no longer maintained. Historically, it was use to switch the Cmd and Ctrl keys on your Mac keyboard (often useful while going to Mac from the PC world). Karabiner seems a very good and very configurable tool, but not particularly user-friendly. It is easy to use, but the creation of a specific mapping remains difficult. Moreover, in our case it’s enough to drive you up the wall.

The remapping is done in 2 steps:

  • First, I identify the key that is typed on the keyboard (quite easy with the tool provided by Karabiner: EventViewer)
  • Then, I define the key that should be pressed instead. There, it gets complicated: we must assume that if you were using a PC keyboard on your Mac, it would work. So you need a picture of a French PC keyboard and that of a US keyboard.
    • Example for the “=” key on Mac French keyboard that corresponds to the “! ” on PC. I want an “=”: Imagine that I have a PC keyboard, to have a “=”, one must press the key to the left of the backspace key. On a standard Mac keyboard (i.e. American) this key is the same and is called EQUAL key.
    • Example for the “§” key on the French Mac keyboard that corresponds to the “-” key on PC. I want a “§”: Imagine that I have a PC keyboard, to have a “§”, one must press the key to the left of the right shift key. On a standard Mac keyboard (i.e. American) this key is called SLASH key.

Finally, we can tell karabiner to apply this remapping for a particular application: Microsoft Remote Desktop.

This leads to this private.xml file:

Another solution to connect to Windows 2008 R2 or Windows 2007 but on the server-side

In fact, we will fill the gaps in these versions of Windows versus Windows 8 or Server 2012, i.e.:

Microsoft Remote Desktop Mac Keyboard Mapping Mac

  • allow the choice of a compatible keyboard layout from the Windows login screen
  • automatically update the keyboard layout on connection using the task scheduler, Cassia and kbswitch2

Make available new keyboard layouts on the login screen of Windows 7 or Windows 2008 R2

On Windows, the login screen is started by a service that runs with Local System ID (UID S-1-5-18). If you want other languages ​​or keyboard layouts available at login, simply assign them to Local System. Unfortunately, I don’t know any graphical way to achieve this. The only one I know is to go through the registry by copying all or part of the key “Keyboard Layout” of an account that has been configured with languages ​​and keyboard layouts you whish. Little howto:

  1. Connect with your credentials and set the languages ​​and keyboard layouts as you would like them to be available on the login screen.
  2. Open the registry and export the key “Keyboard Layout” of HKEY_CURRENT_USER.
  3. Replace in the file the string “HKEY_CURRENT_USER” by “HKEY_USERSS-1-5-18”.
  4. Double-click on the file with the appropriate privileges to add the new key to Local System.

Microsoft Remote Desktop Mac Keyboard Mapping Keyboard

Run a script at session startup or when reconnecting to an already open session

Run a script on login is really easy, but executing one on reconnection to an already open session is far less documented. A way that works is to go through the task scheduler which allows the execution of a script when reconnecting. As it also allows a script execution on a new session, it’s really the right tool to use.

Create a script that identifies the RDP client application and selects accordingly the right keyboard layout

Microsoft Remote Desktop Mac Keyboard Mapping Windows 10

Our script is based on two tools:

  • Cassia, a library that aggregates various information about the RDP connection. It comes with a SessionInfo.exe that do the job if you use the latest version of the library which binaries are not distributed at present. So just recompile from source with .Net 3.5.
  • kbswitch2 a small open source application that switches all previously open applications to a given keyboard layout and launch every new application to that new chosen layout. In other words, it does what Windows 8 or Windows Server 2012 do that lacks on Windows 7 or Windows 2008 R2.

The script is easy:

Of course the layout “French – Custom” is this French Mac keyboard for Windows.