emacs的输入 - 译码 - 的地图为终端(Emacs input-decode-map for

2019-07-03 12:56发布

我曾问一个关于在Emacs在终端按Ctrl箭头键绑定的问题:

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处理此。 据我从这个问题的理解:

在Emacs 23.1.1结合M- <向上> / M- <向下>

一定要做,使用input-decode-map功能。 但我无法使它工作。 PLZ,帮助。

Answer 1:

更改“funcskeys”文件稍微产生以下转义序列:

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 +右应该工作。 您可以通过键入验证这一点:

章K C的右

章K C的左

为了实际结合这些按键的命令,如forward-word ,你可能有以下行添加到您.emacs文件,以及:

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

请注意,这整个的做法专门不仅使组合键CTRL +左键CTRL +正确的工作。 它不会例如使ALT +左 / ALT +正确的工作,或涉及CTRL字符任何其他的按键组合。



文章来源: Emacs input-decode-map for terminal