Ubuntu 17.10与Citrix Receiver:远程会话键盘捕获不全问题求助
我之前在Ubuntu 17.10搭配GNOME桌面的环境下,也碰到过几乎一样的Citrix Receiver快捷键失效问题——远程会话里ALT+TAB、ALT+F2这类快捷键完全被主机捕获,根本传不到远程桌面里。试了调整All Regions参数没用,后来通过下面几个方法解决了,你可以挨个试试:
1. 调整Citrix客户端的核心配置参数
Citrix的wfclient.ini文件里有几个关键参数直接影响键盘快捷键的传递,你需要找到这个文件(通常在~/.ICAClient/wfclient.ini,如果是系统级安装也可能在/usr/lib/ICAClient/config/wfclient.ini),编辑后添加或修改以下内容:
[WFClient] TranslateKeyCode=Yes KeyboardLayout=Local AllowLocalKeyboardHook=Yes
另外还要检查Virtual Channels部分,确保键盘通道是启用状态:
[Virtual Channels] KeybP=Enabled
修改完保存,完全关闭Citrix Receiver再重新启动会话,这一步很重要,不然配置不会生效。
2. 错开GNOME的全局快捷键冲突
GNOME 3对全局快捷键的优先级很高,会直接拦截ALT+TAB、ALT+F2这类常用组合。你可以把主机的这些快捷键改成其他组合,给Citrix会话让路:
- 打开GNOME「设置」→「键盘」→「快捷键」,找到「切换窗口」(对应ALT+TAB),把它改成
<Super>Tab(也就是Windows键+Tab)或者其他你不用的组合; - 同样,把「显示命令运行器」(ALT+F2)也改成其他快捷键,比如
<Super>F2; - 如果你习惯用命令行,也可以用
gsettings直接修改:gsettings set org.gnome.desktop.wm.keybindings switch-windows "['<Super>Tab']" gsettings set org.gnome.desktop.wm.keybindings show-run-dialog "['<Super>F2']"
改完之后,ALT+TAB和ALT+F2应该就能在Citrix会话里正常使用了。
3. 尝试窗口模式运行Citrix会话
有时候全屏模式下GNOME会强制捕获所有输入事件,你可以试试把Citrix会话改成窗口模式运行:
- 打开Citrix Receiver,找到你的会话,右键选择「打开方式」→「窗口」;
- 如果已经在全屏里,可以按
Shift+F2切换到窗口模式(这个快捷键如果还能生效的话)。
4. 升级Citrix Receiver到最新版本
旧版本的Citrix Receiver对GNOME 3的兼容性确实不太好,你可以去Citrix官网下载对应Ubuntu的最新.deb安装包,卸载旧版本后重新安装。新版本对键盘事件的处理逻辑优化了不少,可能直接解决问题。
如果上面的方法都不行,还可以试试禁用GNOME的「键盘快捷键守护进程」(仅限临时使用,用完要恢复):
killall gnome-shell-keyboard-shortcuts
不过这个方法比较激进,会导致主机的所有快捷键暂时失效,适合测试是否是GNOME拦截的问题。
内容的提问来源于stack exchange,提问作者Marvin Ward Jr

