Terminal
如何在 tput 中使用 Meta/Alt 鍵?
我想為 lisp 方言的命令行重新定義鍵綁定。命令行實際上是仿照 Vi 並用 tput/terminfo 實現的。我想要一個帶有 Emacs 鍵綁定的替代版本,我想在不使用 gnu readline 的情況下嘗試一下。
典型的鍵分配如下所示:
(setq *XtF1 (in '("tput" "kf1") (line T)) ...
這個問題是關於
("tput" "kf1")
部分,忽略其餘部分。現在,“kf1”很容易在 terminfo 手冊頁中找到:
key_f1 kf1 k1 F1 function key
我也發現“元”有 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)
但是我如何使用這些資訊來定義典型的 Emacs 鍵綁定,例如使用 tput 的 Mf、Mb、Md 等?
terminfo 可能不會對您有太大幫助。在大多數終端仿真器中,您可以配置
M-x
發送<Esc>x
或x
設置第 8 位,並且當使用者這樣做時,terminfo 條目不會神奇地更新。此外,現在大多數字元集都是 8 位的,所以現在將第 8 位用於 Meta 沒有多大意義。
我只會硬編碼
M-x
==<Esc>x
(兩個字元\033
和的序列x
)。這樣,即使終端不支持該模式,使用者仍然可以按順序鍵入Esc
,x
。