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
M-< seems to send
- How can I pass through all my shifted keystrokes?
- 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
. (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
UPDATE this is very weird. The remote can see
M-s- (meta-super) bindings. It's just not able to see