Emacs input-decode-map для терминала

Я задал вопрос о связывании клавиш Ctrl-стрелка в Emacs в терминале:

Модификаторы Emacs Ctrlработать в консоли

И было сказано, что эмулятор терминала Linux не 'обработать эту комбинацию. Мне удалось создать файл дляloadkeys команда, которая обрабатывает эти ключи:

control keycode 105 = F100
string F100 = "\033[[left"
control keycode 106 = F101
string F101 = "\033[[right"

Затем загрузил его из корня:

#loadkeys ./funcskeys

После этого каждый раз, когда я нажимаю Ctrl-вправо или Ctrl-левый в консоли, я получаюправо' или же 'оставил' распечатаны. Теперь мне нужно обработать это в Emacs. Насколько я понимаю из этого вопроса:

Связывание М- <вверх> / M- <вниз> в Emacs 23.1.1

это должно быть сделано, используяinput-decode-map функция. Но я не могзаставить его работать. Плз, помогите.

Ответы на вопрос(1)

Решение Вопроса

Измени свой "funcskeys» Слегка подайте файл для создания следующих escape-последовательностей:

control keycode 105 = F100
string F100 = "\033[1;5D"
control keycode 106 = F101
string F101 = "\033[1;5C"

Затем добавьте следующие строки в ваш.emacs файл:

(define-key input-decode-map "\e[1;5C" [(control right)])
(define-key input-decode-map "\e[1;5D" [(control left)])

После запускаloadkeys и перезапуск Emacs,CTRL + влево а такжеCTRL + правый должно сработать. Вы можете проверить это, набрав:

C-H K C-право

а также

C-H K C-слева

Чтобы фактически связать эти нажатия клавиш с командой, такой какforward-word, возможно, вам придется добавить следующие строки в ваш.emacs файл также:

(global-set-key [(control right)] 'forward-word)
(global-set-key [(control left)] 'backward-word)

Обратите внимание, что весь этот подход специально делает только комбинации клавишCTRL + влево а такжеCTRL + правый Работа. Этоне например, сделатьALT + левый /ALT + стрелка вправо работа или любые другие комбинации клавиш, включающиеCTRL персонаж.

 user403507 нояб. 2012 г., 20:56
Теперь это работает. Я'Разберусь с другими ключами сам.
 Thomas06 нояб. 2012 г., 22:36
Извините, но "А не было»т работа " одной информации недостаточно, чтобы понять, чтоS не так. Но попробуйте вариант, который я только что сделал.
 user403507 нояб. 2012 г., 23:03
Я добавил подробный алгоритм к предыдущему вопросу для людей, которые столкнутся с той же проблемой.
 user403506 нояб. 2012 г., 16:40
Я не уверен, почему, но ваш подход нет работа. Я сделал это с помощью (global-set-key "\ М- [1; 5C» 'вперед-слово). Тогда ваш код elisp не нужен. Знаешь что'S не так?
 Thomas07 нояб. 2012 г., 22:56
Большой! Что касается других ключей: если у вас есть доступ к какой-либо другой эмуляции терминала, например, к gnome-terminal, то имеет смысл использовать те же escape-последовательности клавиш. Смотрите мой ответ на ваш предыдущий вопрос, чтобы узнать, как получить эти последовательности.

Ваш ответ на вопрос