Отправить “C-(” в Emacs в терминале VT100 / xterm (терминал Mac OS X)?
Вопрос
Возможно ли каким-либо образом отправить ключ "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 что-либо из этого.