отправить суперключ в удаленную сессию Citrix

Вопрос или проблема

Я использую Citrix Receiver на своем домашнем настольном компьютере с GNU/Linux Debian (testing) для удаленного доступа к рабочей машине с Windows.

Я активно использую Emacs и у меня много комбинаций клавиш, которые используют клавишу супер или сочетания meta(alt)-shift. Однако ни мои супер клавиши (например, s-g), ни сочетания meta-shift-буквы (например, M-<) не передаются на машину с Windows. s-g, похоже, отправляет g, а M-< отправляет <.

  1. Как я могу передавать все свои нажатия клавиш с shift?
  2. Как я могу передавать модификатор супер?

Это самое близкое к документированной информации о настройках клиента 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, затем shift, затем . (чтобы получить) 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- (meta-super). Он просто не может видеть привязки s-.

В моем случае я был на Debian 11, я добавил

[Virtual Channels\Keyboard]
TransparentKeyPassthrough=Remote

кроме того, ключевым изменением было отключить Wayland, зайдя в /etc/gdm3/daemon.conf и раскомментировав строку

#WaylandEnable=false

в

WaylandEnable=false

Только оба этих изменения сработали для меня. Исходные знания были получены с форум Citrix.

Ответ или решение

Для отправки супер-клавиш и модификаторов (таких как shift) через сессию Citrix на удалённое Windows-устройство, особенно при использовании Citrix Receiver на GNU/Linux Debian, необходимо учесть несколько важных шагов и конфигураций.

1. Произведите настройку конфигурационного файла

Одним из первых шагов для успешного прохождения клавиш является редактирование конфигурационного файла Citrix. Вам потребуется внести изменения в файл ~/.ICAClient/All_Regions.ini. Откройте его с помощью вашего текстового редактора и добавьте следующие строки:

[Virtual Channels\Keyboard]
TransparentKeyPassthrough=Remote

Эта настройка позволит клавишам проходить прямо на удалённую сессию, минуя локальную обработку.

2. Отключите Wayland

Если вы используете Wayland в качестве графической подсистемы, это может помешать правильной передаче клавиш. Вам необходимо отключить Wayland. Для этого выполните следующие действия:

  1. Откройте файл конфигурации daemon.conf в каталоге /etc/gdm3/.
  2. Найдите строку #WaylandEnable=false и измените её на WaylandEnable=false. Убедитесь, что строка не закомментирована.

После внесения этих изменений перезагрузите систему, чтобы изменения вступили в силу.

3. Проверка работы клавиш

После выполнения этих шагов рекомендуется проверить, проходят ли клавиши корректно. Для этого можно использовать команду -keylog, которая позволяет отслеживать, какие клавиши считываются Citrixом:

# Включите логирование клавиш
citrix -keylog

После этого попробуйте нажать комбинации, такие как M-< и s-g, и посмотрите, какие коды клавиш будут отображены.

4. Комбинации клавиш

Обратите внимание, что некоторые комбинации могут работать иначе. Например, сочетания, содержащие супер или мета-модификаторы, могут требовать особого подхода к использованию. Если вы заметили, что комбинации с M-s- (meta-super) работают, а s- (super) — нет, то это может быть связано с тем, что на стороне Windows может просто отсутствовать поддержка этих сочетаний.

5. Решения для Emacs

Если после всех настроек проблема сохраняется, возможно, вам потребуется внести изменения и в конфигурацию Emacs. Задайте необходимые сочетания клавиш в файле настроек Emacs init.el, чтобы они корректно работали в настройках Windows.

Заключение

Выполнив описанные выше шаги, вы сможете настроить передачу супер-клавиш и модификаторов через сессии Citrix. Главное — убедиться в правильности конфигураций как на стороне клиента, так и на стороне Windows. Следуя этим указаниям, вы сможете более эффективно использовать Citrix Receiver в вашей работе с Emacs и другими приложениями. Если вопросы сохраняются или необходимость в дополнительной помощи, обратитесь к сообществу Citrix или на специализированные форумы по Linux и Emacs.

Оцените материал
Добавить комментарий

Капча загружается...