ZshのArch Linux Wikiページには、terminfoからキーシーケンスを取得する例があります。
typeset -g -A key
key[Home]="${terminfo[khome]}"
key[End]="${terminfo[kend]}"
...
しかし、修飾子を使用してどのように取得できますか?特にAlt + jとAlt + kです。
ありがとうございます。
答え1
ターミナルncurses
データベースはこれを定義します(参照:ShiftまたはControl修飾子を使用するには?ncurses
FAQから)。
これらのほとんどは実行された操作に基づいていますxterm
(参照:このページ、例えば)。
これは一意の名前です(zsh
定義済みの端末名辞書にはないため無視されます。参照)。src/モジュール/terminfo.c)。たとえば、tput
データを変数に入れるには、出力に対していくつかのシェル割り当てを実行する必要があります。
Alt一般的に考慮されない修飾子一般キーに適用される場合。j
またはk
内部にxterm
。
パターンがあります(他のキーを修正)、エスケープシーケンスのさまざまな組み合わせを送信するように指示します(参照:私のプログラムはコントロール-Iとタブをどのように区別しますか?xterm
FAQから)。
この場合、zsh
何の助けも提供されません。同様に、端末は結果テーブルを提供しません(処理特殊キー)。カスタムアプリケーションが必要です。
あなたが考えることができるもの円特徴。これにはterminfo機能があります(smm
できるようにする、rmm
障害がある)。ただし、ほとんどの端末(除外xterm
)ファイルに書き込むアクション。存在するterminfo(5)
:
端末に Shift キーとして機能する "metakey" があり、送信された文字のビット 8 を設定する場合、この事実は次のコマンドで表現できます。
km
。それ以外の場合、ソフトウェアはビット8がパリティビットであると仮定し、通常はクリアされます。この「メタモード」をオンまたはオフにする文字列がある場合は、次のように指定できます。smm
そしてrmm
。
bash
これは、部分的に文書内のリバース定義によるものです(参照:私の答え詳細はこちら)。ただし、terminfoは、どの文字をプレフィックスとして使用できるかをスクリプトに通知する情報を保存しませんEscape。