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
「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)
しかし、この情報を使用してMf、Mb、Mdなどのtputを介して一般的なEmacsキーバインディングを定義するにはどうすればよいですか?
答え1
terminfoはおそらくあなたにとって大きな助けにはなりません。ほとんどの端末エミュレータはトランスM-x
ポート<Esc>x
またはx
ビット8設定を使用して設定します。ユーザーがこれを行うと、terminfoエントリは魔法のように更新されません。
また、最近のほとんどの文字セットは8ビットなので、メタに8番目のビットを使用することはあまり意味がありません。
M-x
私は==(2文字のシーケンスsum)をハードコードしました<Esc>x
。これにより、端末がそのモードをサポートしていなくても、ユーザーは順番に順番に入力できます。\033
x
Escx