In environments with XenDesktop 7.15, a user may report an error where an iPad or iPhone with Citrix Receiver misrepresents a keyboard even though the preferred language was previously selected or XenDesktop keyboard stops working. For example, the user selects a French keyboard (AZERTY), but gets a QWERTY keyboard. Since these keyboards are very similar, this error is usually perceived by the user only when typing. The problem can be solved, however.

One reason for the problem is that the iPad / iPhone receiver cannot handle the local keyboard priority if the default language of the server is different. In case of ambiguity, he uses the server default.

The Windows Virtual Delivery Agent 7.16 (VDA) with Unicode Keyboard Mapping enabled handles this type of configuration problem better. Therefore, install VDA version 7.16 – ideally as part of a system-wide upgrade, with VDAs in principle backward-compatible with previous Desktop Delivery Controllers (DDCs) without any negative impact. However, new VDA features based on the DDC will be unavailable.


After installation, enable the feature (by default it is disabled) by making the following changes in the registry: To use the feature to enable or disable the Unicode keyboard layout, turn it on using the Regedit registry editor on the VDA.

Step 1. Create the key “CtxKlMap” under “HKEY_LOCAL_MACHINE / SOFTWARE / Citrix”.

Step 2. Set the DWORD value “EnableKlMap” to “1”. It works the other way around as well: To disable the function,

Step 3. Set the DWORD value “EnableKlMap” to “0” or delete the key “CtxKlMap” completely.

By default, the Unicode keyboard layout is automatically linked to a Windows API to restore the new Unicode keyboard layout when you change the keyboard layout on the server side. However, a few applications cannot be linked.

To get compatibility here, switch the function to compatible mode to support these applications.

Under the key “HKEY_LOCAL_MACHINE / SOFTWARE / Citrix / CtxKlMap”,

  • Set the DWORD value “DisableWindowHook” to “1”.
  • To return to normal Unicode keyboard mapping, set the DWORD value “DisableWindowHook” to “0”.