Я подключаюсь к автономному серверу Ubuntu (без X) через SSH и запускаю Emacs. В моем файле ~/.emacs я определил сочетание клавиш с помощью модификатора 's' (Super). Этот ярлык работает, когда я запускаю Emacs в графическом интерфейсе, но не работает через SSH. Я искал объяснение, но еще не нашел. Я предполагаю, что Супер ключ не передается по каналу SSH?
3 ответа
Если вам действительно нужно использовать менее стандартные клавиши-модификаторы из эмулятора терминала, в emacs есть следующие сочетания клавиш:
C-x @ S event-apply-shift-modifier
C-x @ a event-apply-alt-modifier
C-x @ c event-apply-control-modifier
C-x @ h event-apply-hyper-modifier
C-x @ m event-apply-meta-modifier
C-x @ s event-apply-super-modifier
Так что в вашем случае используйте C-x @ s
для супер модификатора.
Версия Emacs с графическим интерфейсом может прослушивать любое нажатие клавиш по протоколу X11. Версия терминала немного более ограничена - она может принимать только нажатия клавиш программы терминала вперед; клавиши-модификаторы работают только как модификаторы, а не как отдельные ключи; наконец, Super key просто не пересылается каким-либо эмулятором просто потому, что обычно считается, что он зарезервирован для ОС для таких вещей, как управление окнами.
Эмуляторы терминала преобразуют определенные ключи-модификаторы в последовательности и направляют эти последовательности в программы терминала. Обычно эти клавиши-модификаторы не включают Super
(ключ Win ).
Эмулятор терминала Konsole
же преобразует этот модификатор в последовательность ^X@s
. Поэтому в Emacs вы можете добавить запись в отображение local-function-key-map
которая будет в event-apply-super-modifier
. Однако такая запись уже существует, так что нет ничего делать, просто использовать Konsole
и ваши s-
привязок будет работать, даже через SSH!
Предостережение: привязки типа C-x s-o
не будут работать, потому что Emacs увидит это как C-x C-x @ s o
.