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

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

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

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

1 ответ

Решение

Терминал 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 что-либо из этого.

Другие вопросы по тегам