terminfoデータベースには、「アプリケーションモード」を説明するエントリが含まれています。慣例により、キーボードで押されたボタンに対応するエントリは、\EO
で始まります(これは、初期化を実行しないアプリケーションが、デフォルトでどのモードの端末が初期化されているかを知るために行われます-「通常」または「アプリケーション」 )およびkプレフィックスで名前が付けられます。しかし、たとえば、Debian 10(/lib/terminfo/x/xterm-256color
)では、これは正しくありません。
$ infocmp -1|grep 'kf[0-9]='
kf1=\EOP,
kf2=\EOQ,
kf3=\EOR,
kf4=\EOS,
kf5=\E[15~,
kf6=\E[17~,
kf7=\E[18~,
kf8=\E[19~,
kf9=\E[20~,
これはterminfoデータベースのバグですか?
それは幅広いトピックです...
ほとんどの(すべてではない)端末は構成可能であり、カーソルにアプリケーションモードを提供する制御シーケンスへの応答に精通している端末があります。 、編集およびテンキーキーパッドキー。 ファンクションキーをリストしていないことに気付くかもしれません。
Terminfoデータベースは、端末の特定の構成を記述します。
あなたの例は、VT100スタイルのテンキーを提供するためにxterm
に使用される構成を示しています。一般的なPCキーボードには、VT100キーパッドに一致する十分なキーがありません(「正しい」場所に4つのキーがあるため、 NumLock は特別に扱われます)、および(VT100は決してhadファンクションキーではないため)、その一番上の行を最初の4つのPCファンクションキーに割り当てると便利でした。
xterm
を使用すると、とにかく構成可能ですが、前述のように、terminfoエントリは特定の構成を記述します。
xterm
を模倣するためだけに、VT100互換の数字キーパッドを実際には提供しないターミナルエミュレーターによってコピーされた構成が見つかります。
これはxterm FAQ(他の端末の場合、通常はまったく文書化されていません)に要約されています。