2

I use Citrix Receiver on my home GNU/Linux Debian (testing) desktop to remote in to my work Windows machine.

I use Emacs extensively and I have many keybindings that use the super key or meta(alt)-shift combinations. However, neither my super keys (e.g. s-g) nor my meta-shift-letter combinations (e.g. M-<) are being passed through to the Windows machine. s-g seems to send g and M-< seems to send <.

  1. How can I pass through all my shifted keystrokes?
  2. How can I pass through the super modifier?

This is the closest thing I can find to documentation for the Citrix client settings, and I've not found anything of use: https://www.citrix.com/content/dam/citrix/en_us/documents/downloads/citrix-receiver/linux-oem-guide-13-0-bk.pdf

UPDATE by editing the ~/.ICAClient/All_Regions.ini file to include

[Virtual Channels\Keyboard]
TransparentKeyPassthrough=Remote

I can successfully nuke the super key on both local and remote. And M-< etc still don't get seen by the remote.

UPDATE http://support.citrix.com/article/CTX103576 introduces the -keylog command (which is obviously a major security hole, so ensure that you turn it off after using it) which allowed me to capture the keycodes that are being seen.

I realised that if I very slowly press M then shift then . (to achieve) M-< then Citrix is able to interpret it correctly and send the correct command to the remote emacs. This is less than ideal but at least it is a workaround. The keycodes that Citrix sees are

Key down: special 8/0x8
Key down: special 5/0x5
Key down: Unicode '<' - 60/0x3c
Key up: Unicode '<' - 60/0x3c
Key up: special 5/0x5
Key up: special 8/0x8

whereas a failed attempt looks like

Key down: special 5/0x5
Key down: special 64/0x40
Key down: Unicode '<' - 60/0x3c
Key up: Unicode '<' - 60/0x3c
Key up: special 64/0x40
Key up: special 5/0x5

The super key is being seen by citrix as special 65/0x41 and if I do s-f it looks like this in the keylogger

Key down: special 65/0x41
Key down: Unicode 'f' - 102/0x66
Key up: Unicode 'f' - 102/0x66
Key up: special 65/0x41

but the Remote Emacs only sees the f.

UPDATE this is very weird. The remote can see M-s- (meta-super) bindings. It's just not able to see s- bindings.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.