Отправить "C- (" в Emacs в терминале VT100 / xterm (терминал Mac OS X)? - PullRequest
9 голосов
/ 02 декабря 2010

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

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

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

1 Ответ

15 голосов
/ 03 декабря 2010

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

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

XTerm*vt100.modifyOtherKeys: 1

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

^[[27;6;40~

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

XTerm*vt100.formatOtherKeys: 1

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

^[[40;6u

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

Подробнее см. man xterm и http://invisible -island.net / xterm / ctlseqs / ctlseqs.html . Не знаю, поддерживает ли Terminal.app какие-либо из них.

...