Отправить “C-(” в Emacs в терминале VT100 / xterm (терминал Mac OS X)?

StackOverflow https://stackoverflow.com/questions/4337837

  •  30-09-2019
  •  | 
  •  

Вопрос

Возможно ли каким-либо образом отправить ключ "C-(" в Emacs через терминал VT100 / xterm (Mac OS X Terminal)?Существует ли управляющая последовательность, которая могла бы быть отправлена для достижения эквивалентного результата?

Я подозреваю, что фундаментальная проблема заключается в том, что концепции объединения элемента управления с символом "(" (и другими подобными символами, которые создаются с помощью shift) не существует.

Примечание:Использование Cocoa Emacs - это не вариант.И причина необходимости "C-(" заключается в том, что paredit.el использует его среди других комбинаций клавиш, и было бы предпочтительнее не переназначать его (потому что имеет смысл использовать его в "C-(").

Это было полезно?

Решение

Терминал VT100 не смог бы этого сделать, потому что нет ^( управляющий символ, соответствующий (.Однако в xterm есть так называемый режим "modifyOtherKeys", который позволяет отправлять уникальные коды клавиш для подобных комбинаций.

Чтобы включить его, установите modifyOtherKeys ресурс, напримерв ~/.Xdefaults:

XTerm*vt100.modifyOtherKeys: 1

При этом Ctrl +( отправит следующий код ключа:

^[[27;6;40~

Однако это довольно длинный формат, поэтому был введен другой формат для подобных кодов клавиш, который можно включить, установив formatOtherKeys ресурс:

XTerm*vt100.formatOtherKeys: 1

При этом Ctrl+(отправляет:

^[[40;6u

В обоих этих кодах ключей 40 - это десятичный ASCII-код для (, а цифра 6 обозначает клавишу Ctrl.

Видишь man xterm и http://invisible-island.net/xterm/ctlseqs/ctlseqs.html для получения более подробной информации.Понятия не имею, поддерживает ли Terminal.app что-либо из этого.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top