![将超级密钥发送到远程 Citrix 会话](https://linux22.com/image/80923/%E5%B0%86%E8%B6%85%E7%BA%A7%E5%AF%86%E9%92%A5%E5%8F%91%E9%80%81%E5%88%B0%E8%BF%9C%E7%A8%8B%20Citrix%20%E4%BC%9A%E8%AF%9D.png)
我在家用 GNU/Linux Debian(测试)桌面上使用 Citrix Receiver 远程连接到我的工作 Windows 计算机。
我广泛使用 Emacs,并且有许多使用超级键或元(alt)-shift 组合的键绑定。但是,我的超级键(例如s-g
)和元换档字母组合(例如M-<
)都没有传递到 Windows 计算机。s-g
似乎要发送g
,M-<
似乎要发送<
。
- 我怎样才能完成所有的移动按键操作?
- 怎样才能通过super修改器呢?
这是我能找到的最接近 Citrix 客户端设置文档的内容,但我没有找到任何有用的内容:https://www.citrix.com/content/dam/citrix/en_us/documents/downloads/citrix-receiver/linux-oem-guide-13-0-bk.pdf
更新通过编辑~/.ICAClient/All_Regions.ini
文件以包含
[Virtual Channels\Keyboard]
TransparentKeyPassthrough=Remote
我可以在本地和远程成功地攻击超级密钥。等等M-<
仍然不会被遥控器看到。
更新 http://support.citrix.com/article/CTX103576引入了-keylog
命令(这显然是一个主要的安全漏洞,因此请确保在使用后将其关闭),该命令允许我捕获所看到的键码。
我意识到,如果我非常缓慢地按M
then shift
then .
(以实现),M-<
那么 Citrix 就能够正确解释它并将正确的命令发送到远程 emacs。这虽然不太理想,但至少是一种解决方法。 Citrix 看到的密钥代码是
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
而失败的尝试看起来像
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
超级密钥被 Citrix 视为special 65/0x41
,如果我这样做,s-f
它在键盘记录器中看起来像这样
Key down: special 65/0x41
Key down: Unicode 'f' - 102/0x66
Key up: Unicode 'f' - 102/0x66
Key up: special 65/0x41
但远程 Emacs 只能看到f
.
更新这很奇怪。遥控器可以看到M-s-
(元超级)绑定。它只是看不到s-
绑定。
答案1
就我而言,我使用的是 Debian 11,我添加了
[Virtual Channels\Keyboard]
TransparentKeyPassthrough=Remote
除此之外,关键的更改是通过进入 /etc/gdm3/daemon.conf 并取消注释行来禁用 Wayland
#WaylandEnable=false
到
WaylandEnable=false
只有这两件事对我有用。原始知识来自于思杰论坛 。