Keyboard

Keyboard behavior

To generate a remote Ctrl+Alt+Delete key combination:

  1. Decide which key combination creates the Ctrl+Alt+Delete combination on the remote virtual desktop.
  2. In the WFClient section of the appropriate configuration file, configure UseCtrlAltEnd:
    • True means that Ctrl+Alt+End passes the Ctrl+Alt+Delete combination to the remote desktop.
    • False (default) means that Ctrl+Alt+Enter passes the Ctrl+Alt+Delete combination to the remote desktop.

Generic redirection

Configuring the Bloomberg v4 keyboard through Generic USB Redirection on the client side:

As a prerequisite, the policy must be enabled in the Domain Delivery Controller (DDC).

  1. Find the vid and pid of the Bloomberg keyboard. For example, in Debian and Ubuntu run the following command:

    lsusb

  2. Go to $ICAROOT and edit the usb.conf file.

  3. Add the following entry in the usb.conf file to allow the Bloomberg keyboard for USB redirection, and then save the file.

    ALLOW: vid=1188 pid=9545

  4. Restart the ctxusbd daemon on the client. For example, in Debian and Ubuntu run the following command:

    systemctl restart ctxusbd

  5. Launch a client session. Make sure that the session has focus while plugging in the Bloomberg v4 keyboard for redirection.

Note:

You can add the following configuration to disable the selectconfiguration command:

ALLOW: vid=1100 pid=0101 disableselectconfig=1.

The selectconfiguration is a command used in VDA to configure USB devices.

Selective redirection

This feature allows the use of the Bloomberg keyboard v4 and v5 interface across multiple sessions. This functionality provides flexibility to use the keyboard in all remote sessions except the fingerprint and audio interfaces. The fingerprint and audio interfaces are redirected to single sessions as before.

To enable the feature:

  1. Edit the BloombergRedirection section as follows in the $HOME/.ICAClient/wfclient.ini file.

    BloombergRedirection=true
    <!--NeedCopy-->
    
  2. Do all the steps mentioned in Generic redirection.

To disable the feature:

  1. Edit the BloombergRedirection section as follows in the $HOME/.ICAClient/wfclient.ini file.

    BloombergRedirection=false
    <!--NeedCopy-->
    
  2. Do all the steps mentioned in Generic redirection.

Note:

Setting the value to false reverts the functionality to the behavior present in earlier versions of the client, where all the interfaces are redirected to a single session.

Support for keyboard shortcut to switch between Full-screen and Window mode

Previously, you could use either the Window or Full-screen button on the Desktop Viewer to toggle between Full-screen and Window mode.

Starting with the Citrix Workspace app 2308 release, you can use a keyboard shortcut Ctrl+F2 to switch between Full-screen and Window mode. For example, when the desktop session is in Full-screen mode, if you press “Ctrl+F2”, the desktop session exits from the Full-screen mode.

This feature is disabled by default.

To enable this feature:

  1. If .ICAClient is already present in the home folder of the current user when the new Citrix Workspace app for Linux version is installed:

    Delete the All_Regions.ini file. Or Retain the All_Regions.ini file and add the following lines at the end of the [Client Engine\Application Launching] section:

        FullScreenShortcutSupport=*
    <!--NeedCopy-->
    
  2. Navigate to the /opt/Citrix/ICAClient/config/All_Regions.ini file and modify the value of FullScreenShortcutSupport as follows:

     FullScreenShortcutSupport=true
    <!--NeedCopy-->
    

    By default, the keyboard shortcut is Ctrl+F2.

You can also customize the shortcut key. The shortcuts are composed of two different parts such as KeyPassthroughEscapeShift and KeyPassthroughEscapeChar in the All_Regions.ini file.

The two keys that you’re using must be from the following list:

Name Section Value
KeyPassthroughEscapeShift [Virtual Channels\Keyboard] in All_Regions.ini [Alt, Ctrl, Shift, Alt+Ctrl, Alt+Shift, Ctrl+Shift, Alt+Ctrl+Shift], Default value: Ctrl
KeyPassthroughEscapeChar [Virtual Channels\Keyboard] in All_Regions.ini [F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12, Minus, Plus, Tab, Pause], Default value: F2, Note: Minus and Plus are the keys on the numeric pad.

For example, if you want to use “Ctrl+Shift+F3” as the keyboard shortcut, the configuration items must be as follows:

  • KeyPassthroughEscapeShift=Ctrl+Shift
  • KeyPassthroughEscapeChar=F3

Limitation:

  • If you use a keyboard combination that conflicts with the client OS shortcuts or contains a system shortcut, the Full-screen toggle might not work because the client OS takes precedence on using this shortcut. For example, if you use “Ctrl + F3” as a Linux OS system shortcut, you can’t use “Ctrl + F3” or “Shift + Ctrl + F3” as the Citrix Workspace app Full-screen toggle.
  • Ctrl+Alt+F'*' or Alt+Ctrl+F'*' (F'*' refers to F1-F12) are keyboard shortcuts used to switch between Virtual Terminals in Linux. These shortcuts must not be used for Full-screen toggle.
  • Alt+Ctrl+Plus or Alt+Ctrl+Minus (Plus and Minus are the keys on the numerical keyboard) are mapped to the symbols XF86Next_VMode/XF86Prev_VMode in the Linux system and not available for shortcuts. So, these combinations must not be used for Full-screen toggle.

Keyboard layout synchronization

Keyboard layout synchronization enables you to switch among preferred keyboard layouts on the client device. This feature is disabled by default. After you enable this feature, the client keyboard layout automatically synchronizes to the virtual apps and desktops.

Starting with version 2203, Citrix Workspace app supports the following three different keyboard layout synchronization modes:

  • Sync only once - when session launches – Based on the KeyboardLayout value in the wfclient.ini file, the client keyboard layout is synchronized to the server when the session launches. If the KeyboardLayout value is set to 0, the system keyboard is synchronized to VDA. If the KeyboardLayout value is set to a specific language, the language-specific keyboard is synchronized to VDA. Any changes you make to the client keyboard layout during the session do not take effect immediately. To apply the changes, sign out and sign in to the app. Also, the changes take effect if you sign in again or reconnect to the VDA session. The Sync only once - when session launches mode is the default keyboard layout selected for the Citrix Workspace app.
  • Allow dynamic sync - This option synchronizes the client keyboard layout to the server when you change the client keyboard layout.
  • Don’t sync - Indicates that the client uses the keyboard layout present on the server.

Prerequisite:

  • Enable the Unicode Keyboard Layout Mapping feature on the Windows VDA. For more information, see Knowledge Center article CTX226335.

  • Enable the Dynamic Keyboard layout sync feature on the Linux VDA. For more information, see Dynamic keyboard layout synchronization
  • Keyboard layout synchronization depends on XKB lib.
  • When you use a Windows Server 2016 or Windows Server 2019, navigate to the HKEY_LOCAL_MACHINE\Software\Citrix\ICA\IcaIme registry path. And then, add a DWORD value with key name DisableKeyboardSync and set the value to 0.
  • If .ICAClient is already present in the home folder of the current user:

    Delete the All_Regions.ini file

    or

    To retain the All_Regions.ini file, add the following lines at the end of the[Virtual Channels\Keyboard] section:

    KeyboardSyncMode=

    KeyboardEventMode=

Configure keyboard layout

Citrix Workspace app provides both UI and configuration settings to enable the three different keyboard layout synchronization modes.

To configure keyboard layout synchronization using the graphical user interface:

  1. From the Citrix Workspace app icon in the notification area, select Preferences.

    Or,

    Open the terminal, navigate to the installation path, and run the following command:

    util/configmgr

    The Citrix Workspace – Preferences dialog appears.

    Image of Keyboard layout synchronization settings

  2. Click the Keyboard tab.

    The Keyboard layout synchronization settings page appears.

  3. Select from one of the following options:

    • Sync only once - when session launches - Indicates that the keyboard layout is synced to the VDA only once at the session launch. Unicode keyboard input mode is the recommended option for the Sync only once – when session launches mode.
    • Allow dynamic sync - Indicates that the keyboard layout is synced dynamically to the VDA when the client keyboard is changed in a session. Unicode keyboard input mode is the recommended option for the Allow dynamic sync mode.
    • Don’t sync - Indicates that the client uses the keyboard layout present on the server, irrespective of the keyboard layout that is selected in the client. Scancode keyboard input mode is the recommended option for the Don’t sync mode. You must make sure that the client keyboard layout is the same as the keyboard layout on the VDA if you select Unicode for the Don’t Sync option.
  4. Click Save and Close.

To configure keyboard layout synchronization using configuration file settings:

Modify the wfclient.ini configuration file to enable the required keyboard layout.

Sync only once – when session launches:

With this feature enabled, when launching a session, the active keyboard layout on the client device is synchronized to VDA. Based on the KeyboardLayout value in the wfclient.ini file, the client keyboard layout is synchronized to the server when the session launches. If the KeyboardLayout value is set to 0, the system keyboard is synchronized to VDA. If the KeyboardLayout value is set to a specific language, the language-specific keyboard is synchronized to VDA.

To select this mode, do the following:

  1. Navigate to the $HOME/.ICAClient/wfclient.ini configuration file.
  2. Add the following entries:

    KeyboardSyncMode=Once
    KeyboardEventMode=Unicode (or KeyboardEventMode= Scancode)
    <!--NeedCopy-->
    

Unicode keyboard input mode is the recommended option for the Sync only once – when session launches mode.

Allow dynamic sync:

With this feature enabled, when the keyboard layout changes on the client device during a session, the keyboard layout of the session changes correctly.

To select this mode, do the following:

  1. Navigate to the $HOME/.ICAClient/wfclient.ini configuration file.
  2. Add the following entries:

    KeyboardSyncMode=Dynamic
    KeyboardEventMode=Unicode (or KeyboardEventMode= Scancode)
    <!--NeedCopy-->
    

Unicode keyboard input mode is the recommended option for the Allow dynamic sync mode.

Don’t sync:

With this feature enabled, the VDA side keyboard layout is used, irrespective of the keyboard layout that is selected in the client device.

To select this mode, do the following:

  1. Navigate to the $HOME/.ICAClient/wfclient.ini configuration file.
  2. Add the following entries:

    KeyboardSyncMode=No
    KeyboardEventMode= Scancode (or KeyboardEventMode= Unicode)
    <!--NeedCopy-->
    

Scancode keyboard input mode is the recommended option for the Don’t sync mode. You must make sure that the client keyboard layout is the same as the VDA side keyboard layout if you configure to Unicode for Don’t Sync option.

Note:

When you set KeyboardSyncMode="" (empty) in the wfclient.ini file, the mode reverts to the earlier behavior. In the earlier behavior, the keyboard layout is read from the $HOME/.ICAClient/wfclient.ini file. And, send this value to the VDA along with other client information when the session starts.

Keyboard Input Mode

Citrix recommends the following keyboard input mode for the different keyboard layout sync options:

  • Scancode mode for Don’t Sync option.
  • Unicode mode for Allow dynamic sync and Sync only once - when session launches options.

You can change the configuration of KeyboardEventMode in the wfclient.ini file. However, for best performance, use the Citrix-recommended modes for different scenarios, physical keyboards, and client devices.

Keyboard input mode enhancements

Previously, you were able to enable different keyboard input modes only by updating the value of KeyboardEventMode in the configuration file. There was no UI option to select the keyboard input mode.

Starting with Citrix Workspace app 2309, you can configure different keyboard input modes from the newly introduced Keyboard input mode settings section. You can select Scancode or Unicode as keyboard input mode.

To configure keyboard input mode by using the GUI, do the following:

  1. From the Citrix Workspace app icon in the notification area, select Preferences. The Citrix Workspace – Preferences dialog box appears.
  2. Click Keyboard. You can see the Keyboard input mode settings section.

    Keyboard input mode settings

  3. Select one of the following options:

    • Scancode – Sends the key position from the client-side keyboard to VDA and VDA generates the corresponding character. Applies server-side keyboard layout.
    • Unicode - Sends the key from the client-side keyboard to VDA and VDA generates the same character in VDA. Applies client-side keyboard layout.

    By default, the Keyboard input mode setting is selected as Unicode. For more information on keyboard input mode, see the Configure keyboard layout section in the Keyboard layout synchronization documentation.

  4. Click Save and Close.

Note:

The keyboard configuration changes take effect once you reconnect to the application. If you change the keyboard input mode in the UI, the parameter value of the KeyboardEventMode in the wfclient.ini file is also updated automatically.

For example, consider a scenario where you’re using a US international keyboard layout and the VDA is using the Russian keyboard layout.

When you choose Scancode and type the key next to Caps lock, the scancode 1E is sent to the VDA. The VDA then uses 1E to display the character ф.

If you choose Unicode and type the key next to Caps lock, the character a is sent to the VDA. So, even if the VDA uses the Russian keyboard layout, the character a appears on the screen.

Support for extended keyboard layouts

Starting with Citrix Workspace app for Linux version 2309, the Scancode keyboard input mode supports the following extended keyboard layouts:

  • Japanese 106 keyboard
  • Portuguese ABNT/ABNT2 keyboards
  • Multimedia keyboards

The Scancode keyboard input mode supports the extended keyboard layouts along with all keyboard layout synchronization modes.

This support is enabled by default. However, perform the following extra steps to configure the “Japanese 106 keyboard”:

  1. Navigate to the $HOME/.ICAClient/wfclient.ini configuration file.
  2. Add the following entries:

    KeyboardType=106 Keyboard (Japanese)
    <!--NeedCopy-->
    

Client IME for East Asian languages

Client Input Method Editor (IME) feature enhances input and display experience with Chinese, Japanese, and Korean (CJK) language characters in Citrix Workspace app for Linux. You can choose to use the Client IME when you have a favorite IME in Linux Client or IME is not available from the remote server.

To enable this feature, do the following:

  1. Navigate to the $HOME/.ICAClient/wfclient.ini configuration file.
  2. Add the following entries:

    KeyboardEventMode=Unicode
    UseLocalIM=True
    <!--NeedCopy-->
    

If your client Linux distribution doesn’t have a working iBus, you must set the KeyboardLayout value. You must explicitly set this value according to your IME language in the wfclient.ini configuration file as follows:

  • For Chinese IME - KeyboardLayout=Chinese (PRC)
  • For Japanese IME - KeyboardLayout=Japanese (JIS)
  • For Korean IME - KeyboardLayout=Korean

Enhancement to support keyboard layout synchronization for GNOME 42

Starting with the 2305 version, Citrix Workspace app for Linux supports keyboard layout synchronization for desktops like Ubuntu 22.04 which uses the GNOME 42 desktop environment and later versions.

Keyboard layout support for Windows VDA and Linux VDA

Linux Client Keyboard Description Linux Client Keyboard Layout Linux Client Keyboard Variant Syncs to Windows Locale ID Windows VDA Keyboard Layout (ID) Linux VDA Keyboard Layout Linux VDA Keyboard Variant
Arabic ara - ar-SA 00000401 ara -
Arabic (AZERTY) ara azerty ar-DZ 00020401 ara azerty
German (Austria) at - de-AT 00000407 at -
Belgian (alt. ISO) be iso-alternate fr-BE 0000080c be iso-alternate
Belgian be - nl-BE 00000813 be -
Bulgarian bg - bg-BG 00030402 bg -
Bulgarian (traditional phonetic) bg phonetic bg-BG 00040402 bg phonetic
Bulgarian (new phonetic) bg bas_phonetic bg-BG 00020402 bg bas_phonetic
Portuguese (Brazil) br - pt-BR 00000416 br -
Belarusian by - be-BY 00000423 by -
English (Canada) ca eng en-CA 00000409 ca eng
Canadian Multilingual ca multix fr-CA 00011009 ca multix
French (Canada, legacy) ca fr-legacy fr-CA 00000c0c ca fr-legacy
French (Canada) ca - fr-CA 00001009 ca -
French (Switzerland) ch fr fr-CH 0000100c ch fr
German (Switzerland) ch - de-CH 00000807 ch -
Chinese (Simplified) cn - en-US 00000409 us -
Czech cz - cs-CZ 00000405 cz -
Czech (QWERTY) cz qwerty cs-CZ 00010405 cz qwerty
German de - de-DE 00000407 de -
German (Macintosh) de mac de-DE 00000407 de mac
Danish dk - da-DK 00000406 dk -
Estonian ee - et-EE 00000425 ee -
Spanish (Latin American) es - es-ES 0000040a es -
Spanish (Macintosh) es mac es-ES 0000040a es mac
Finnish fi - fi-FI 0000040b fi -
French fr - fr-FR 0000040c fr -
French (Macintosh) fr mac fr-FR 0000040c fr mac
English (UK) gb - en-GB 00000809 gb -
English (Macintosh) gb mac en-GB 00000809 gb mac
English (UK, extended, with Win keys) gb extd en-GB 00000452 gb extd
Greek gr - el-GR 00000408 gr -
Croatian hr - hr-HR 0000041a hr -
Hungarian hu - hu-HU 0000040e hu -
Irish ie - en-IE 00001809 ie -
Hebrew il - he-IL 0002040d il -
English (India, with rupee) in eng en-IN 00004009 in eng
Iraqi iq - ar-IQ 00000401 iq -
Icelandic is - is-IS 0000040f is -
Italian it - it-IT 00000410 it -
Japanese jp - en-US 00000409 us -
Japanese (Macintosh) jp mac en-US 00000409 us mac
Korean kr - en-US 00000409 us -
Spanish (Latin American) latam - es-MX 0000080a latam -
Lithuanian lt - lt-LT 00010427 lt -
Lithuanian (IBM LST 1205-92) lt ibm lt-LT 00000427 lt ibm
Lithuanian (Standard) lt std lt-LT 00020427 lt std
Latvian lv - lv-LV 00020426 lv -
Norwegian no - nb-NO 00000414 no -
Polish pl - pl-PL 00000415 pl -
Polish (QWERTZ) pl qwertz pl-PL 00010415 pl qwertz
Portuguese pt - pt-PT 00000816 pt -
Portuguese (Macintosh) pt mac pt-PT 00000816 pt mac
Romanian (standard) ro std ro-RO 00010418 ro std
Serbian rs - sr-Cyrl-RS 00000c1a rs -
Serbian (Latin) rs latin sr-Latn-RS 0000081a rs latin
Russian ru - ru-RU 00000419 ru -
Russian (typewriter) ru typewriter ru-RU 00010419 ru typewriter
Russian (Macintosh) ru mac ru-RU 00000419 ru mac
Swedish se - sv-SE 0000041d se -
Swedish (Macintosh) se mac sv-SE 0000041d se mac
Slovenian si - sl-SI 00000424 si -
Slovak sk - sk-SK 0000041b sk -
Slovak (QWERTY) sk qwerty sk-SK 0001041b sk qwerty
Thai th - th-TH 0000041e th -
Thai (Pattachote) th pat th-TH 0001041e th pat
Tajik tj - tg-Cyrl-TJ 00000428 tj -
Turkish tr - tr-TR 0000041f tr -
Turkish (F) tr f tr-TR 0001041f tr f
Chinese (Traditional) tw - en-US 00000409 us -
Ukrainian ua - uk-UA 00000422 ua -
English (US) us - en-US 00000409 us -
English (Macintosh) us mac en-US 00000409 us mac
English (Dvorak) us dvorak en-US 00010409 us dvorak
English (Dvorak, left-handed) us dvorak-l en-US 00030409 us dvorak-l
English (Dvorak, right-handed) us dvorak-r en-US 00040409 us dvorak-r
English (US, intl., with dead keys) us intl nl-NL 00020409 us intl
Vietnamese vn - vi-VN 0000042a vn -

VDA keyboard layout

The VDA keyboard layout feature helps you use the VDA keyboard layout regardless of the client’s keyboard layout settings. It supports the following types of keyboard: PC/XT 101, 102, 104, 105, 106.

To use the server-side keyboard layout:

  1. Launch the wfclient.ini file.

  2. Change the value of the KeyboardLayout attribute as follows:

    KeyboardLayout=(Server Default)

    The default value for the KeyboardLayout attribute is (User Profile).

  3. Relaunch the session for the changes to take effect.

Synchronize multiple keyboards at session start

Previously, only the active keyboard on the client was synchronized with VDA after the session started in full-screen mode. In this scenario, if you configured Sync only once - when session launches on your Citrix Workspace app, and you had to change to a different keyboard, you have to manually install the keyboard on your remote desktop. This feature is used mostly when the client side keyboard input mode is scancode input mode. Users can select a keyboard layout in a remote session as the active keyboard layout which is synchronized from the client keyboard layout list.

Starting with 2402, all available keyboards on the Linux client are synchronized with VDA after the session starts in full-screen mode. You can select the required keyboard from the list of installed keyboards on the VDA, after the session starts in full-screen mode.

Prerequisites:

On Citrix Workspace app for Linux:

Enable Sync only once - when the session launches in the keyboard preference setting. For more information, see the Keyboard layout synchronization.

On VDA:

Enable the following VDA policies:

Configuration on Citrix Workspace app for Linux:

This feature is applicable only on virtual desktops. This feature is disabled by default. To enable this feature, do the following:

  1. Navigate to the /config folder and open the All_Regions.ini file.
  2. Go to the [Virtual Channels\Keyboard] section and add the following entry:

    SyncKbdLayoutList=TRUE
    <!--NeedCopy-->
    

To disable this feature, set the value of SyncKbdLayoutList to False.

Configuration on VDA:

The feature Synchronize multiple keyboards at session starts is enabled by default on VDA. Update the VDA registry setting to disable it when needed:

  1. Open the Registry editor and navigate to HKEY_LOCAL_MACHINE\Software\Citrix\IcaIme.
  2. Create the DWORD entry DisableKbdLayoutList and set its value to 0. Setting the value to 1, disables the Synchronize multiple keyboards at session start feature.
  3. Restart the session for the changes to take effect.
Keyboard