Zshは修飾子でterminfoキーを取得します。

Zshは修飾子でterminfoキーを取得します。

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修飾子を使用するには?ncursesFAQから)。

これらのほとんどは実行された操作に基づいていますxterm(参照:このページ、例えば)。

これは一意の名前です(zsh定義済みの端末名辞書にはないため無視されます。参照)。src/モジュール/terminfo.c)。たとえば、tputデータを変数に入れるには、出力に対していくつかのシェル割り当てを実行する必要があります。

Alt一般的に考慮されない修飾子一般キーに適用される場合。jまたはk内部にxterm

パターンがあります(他のキーを修正)、エスケープシーケンスのさまざまな組み合わせを送信するように指示します(参照:私のプログラムはコントロール-Iとタブをどのように区別しますか?xtermFAQから)。

この場合、zsh何の助けも提供されません。同様に、端末は結果テーブルを提供しません(処理特殊キー)。カスタムアプリケーションが必要です。

あなたが考えることができるもの特徴。これにはterminfo機能があります(smmできるようにする、rmm障害がある)。ただし、ほとんどの端末(除外xtermファイルに書き込むアクション。存在するterminfo(5)

端末に Shift キーとして機能する "metakey" があり、送信された文字のビット 8 を設定する場合、この事実は次のコマンドで表現できます。 km。それ以外の場合、ソフトウェアはビット8がパリティビットであると仮定し、通常はクリアされます。この「メタモード」をオンまたはオフにする文字列がある場合は、次のように指定できます。smmそしてrmm

bashこれは、部分的に文書内のリバース定義によるものです(参照:私の答え詳細はこちら)。ただし、terminfoは、どの文字をプレフィックスとして使用できるかをスクリプトに通知する情報を保存しませんEscape

関連情報