Terminal

如何在 tput 中使用 Meta/Alt 鍵?

  • October 27, 2012

我想為 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>xx設置第 8 位,並且當使用者這樣做時,terminfo 條目不會神奇地更新。

此外,現在大多數字元集都是 8 位的,所以現在將第 8 位用於 Meta 沒有多大意義。

我只會硬編碼M-x== <Esc>x(兩個字元\033和的序列x)。這樣,即使終端不支持該模式,使用者仍然可以按順序鍵入Esc, x

引用自:https://unix.stackexchange.com/questions/53048