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?
terminfoはおそらくあなたをあまり助けないでしょう。ほとんどのターミナルエミュレータでは、8番目のビットを設定してM-x
送信<Esc>x
またはx
で構成でき、ユーザーがそうしてもterminfoエントリが魔法のように更新されることはありません。
また、ほとんどの文字セットは現在8ビットであるため、メタにその8ビットを使用することは最近ではあまり意味がありません。
M-x
== <Esc>x
(2文字のシーケンス\033
とx
)をハードコーディングします。このように、端末がそのモードをサポートしていない場合でも、ユーザーは入力できます Esc、 x 順番通りに。