Я использую Citrix Receiver на своем домашнем настольном компьютере с GNU/Linux Debian (testing) для удаленного доступа к рабочей машине с Windows.
Я активно использую Emacs и у меня много комбинаций клавиш, которые используют клавишу супер или сочетания meta(alt)-shift. Однако ни мои супер клавиши (например, s-g), ни сочетания meta-shift-буквы (например, M-<) не передаются на машину с Windows. s-g, похоже, отправляет g, а M-< отправляет <.
Как я могу передавать все свои нажатия клавиш с shift?
Я могу успешно отключить клавишу супер как на локальном, так и на удаленном компьютере. И 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-.
кроме того, ключевым изменением было отключить Wayland, зайдя в /etc/gdm3/daemon.conf и раскомментировав строку
#WaylandEnable=false
в
WaylandEnable=false
Только оба этих изменения сработали для меня. Исходные знания были получены с форум Citrix.
Ответ или решение
Для отправки супер-клавиш и модификаторов (таких как shift) через сессию Citrix на удалённое Windows-устройство, особенно при использовании Citrix Receiver на GNU/Linux Debian, необходимо учесть несколько важных шагов и конфигураций.
1. Произведите настройку конфигурационного файла
Одним из первых шагов для успешного прохождения клавиш является редактирование конфигурационного файла Citrix. Вам потребуется внести изменения в файл ~/.ICAClient/All_Regions.ini. Откройте его с помощью вашего текстового редактора и добавьте следующие строки:
Эта настройка позволит клавишам проходить прямо на удалённую сессию, минуя локальную обработку.
2. Отключите Wayland
Если вы используете Wayland в качестве графической подсистемы, это может помешать правильной передаче клавиш. Вам необходимо отключить Wayland. Для этого выполните следующие действия:
Откройте файл конфигурации daemon.conf в каталоге /etc/gdm3/.
Найдите строку #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.