web-dev-qa-db-ja.com

tputでMeta / Altキーを使用する方法は?

LISP方言のコマンドラインのキーバインディングを再定義したいと思います。コマンドラインは実際にはViをモデルにしており、tput/terminfoで実装されています。 Emacsキーバインディングを備えた代替バージョンが欲しいのですが、gnureadlineなどを使用せずに試してみたいと思います。

一般的なキーの割り当ては次のようになります。

(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キーバインディングを定義するにはどうすればよいですか? M-f、M-b、M-dなどとtput?

5
user17106

terminfoはおそらくあなたをあまり助けないでしょう。ほとんどのターミナルエミュレータでは、8番目のビットを設定してM-x送信<Esc>xまたはxで構成でき、ユーザーがそうしてもterminfoエントリが魔法のように更新されることはありません。

また、ほとんどの文字セットは現在8ビットであるため、メタにその8ビットを使用することは最近ではあまり意味がありません。

M-x == <Esc>x(2文字のシーケンス\033x)をハードコーディングします。このように、端末がそのモードをサポートしていない場合でも、ユーザーは入力できます Esc、 x 順番通りに。

3