我想重新定义 lisp 方言命令行的键绑定。命令行实际上是模仿 Vi 并使用 tput/terminfo 实现的。我想要一个带有 Emacs 键绑定的替代版本,并且我想在不使用 gnu readline 等的情况下尝试一下。
典型的键分配如下所示:
(setq *XtF1 (in '("tput" "kf1") (line T)) ...
这个问题是关于
("tput" "kf1")
部分,忽略其余部分。现在,在 terminfo 手册页中很容易找到“kf1”:
key_f1 kf1 k1 F1 function key
我发现“meta”也有 3 个条目:
has_meta_key km km Has a meta key
(i.e., sets 8th-bit)
meta_off rmm mo turn off meta mode
meta_on smm mm turn on meta mode
(8th-bit on)
但是我如何使用此信息通过 tput 定义典型的 Emacs 键绑定,例如 Mf、Mb、Md 等?
答案1
terminfo 可能不会对您有太大帮助。在大多数终端仿真器中,您可以使用M-x
发送<Esc>x
或x
设置第 8 位进行配置,并且当用户这样做时,terminfo 条目不会神奇地更新。
另外,现在大多数字符集都是 8 位,因此现在将第 8 位用于 Meta 没有多大意义。
我只是硬编码M-x
== (两个字符和<Esc>x
的序列)。这样,即使终端不支持该模式,用户仍然可以按顺序键入, 。\033
x
Escx