Как отправить S-RET на Emacs в терминал?

В org-mode нажатие M-S-RET (meta-shift-return) создаст новый TODO в новой строке. Эта последовательность клавиш отправляет M-RET в emacs через мой терминал. Я проверил это с помощью C-h c ESC-S-RET, который возвращает M-RET is undefined в мини-буфере.

Я использую Snow Leopard с Emacs 23.2.1, работающим в Terminal.app. Нет опций для определения последовательности RET в настройках клавиатуры терминала.

Любая идея, что приводит к отсутствию SHIFT? Обходные?

Ответ 1

Вы можете заставить Emacs притвориться, что он получил S-RET с C-x @ S RET (обратите внимание на верхний регистр S).

Это также работает для добавления элементов управления, мета, альт, гипер или супермодификаторов; введите C-x @ C-h для списка привязок. В разделе "Модификационные ключи" в руководстве Emacs] также упоминается об этом.

Ответ 2

В общем, много нажатий клавиш просто невозможно отправить через терминал, поскольку терминалы эмулируют старый протокол, который допускает только 256 отдельных ключей (или, может быть, только 128).

Скорее всего, когда вы нажимаете S-RET, Terminal.app делает то же самое, что и при нажатии RET. Таким образом, Emacs не имеет возможности отличить эти два случая.

Ответ 3

Сшивание с другими Q & As:

Если вы используете xterm, опция modifyOtherKeys может облегчить эту привязку. Подробнее см. Ниже:

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

Я подозреваю, что Emacs распознает эти коды по умолчанию, но если нет, то также см. input-decode-map, как описано здесь: Binding M- <up> /M- <down> в Emacs 23.1.1

Ответ 4

См. пояснения и альтернативные ссылки для TTY здесь.

Некоторые из них работали для меня в терминале в Ubuntu Linux (как локально, так и в SSH), но не все из них, похоже, работают. Например, альтернатива, предусмотренная для S-RET (которая, как я ожидала, запускает org-table-copy-down), по-видимому, запускает org-clone-subtree-with-time-shift по какой-либо причине. Однако я нашел список альтернатив полезным, особенно с префиксом M-. Например ESC UP для M-UP для перемещения текста в таблицах.