web-dev-qa-db-ja.com

terminfoエントリが規則に従わないのはなぜですか?

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データベースのバグですか?

1
Igor Liferenko

それは幅広いトピックです...

ほとんどの(すべてではない)端末は構成可能であり、カーソルアプリケーションモードを提供する制御シーケンスへの応答に精通している端末があります。 、編集およびテンキーキーパッドキー。 ファンクションキーをリストしていないことに気付くかもしれません。

Terminfoデータベースは、端末の特定の構成を記述します。

あなたの例は、VT100スタイルのテンキーを提供するためにxtermに使用される構成を示しています。一般的なPCキーボードには、VT100キーパッドに一致する十分なキーがありません(「正しい」場所に4つのキーがあるため、 NumLock は特別に扱われます)、および(VT100は決してhadファンクションキーではないため)、その一番上の行を最初の4つのPCファンクションキーに割り当てると便利でした。

xtermを使用すると、とにかく構成可能ですが、前述のように、terminfoエントリは特定の構成を記述します。

xterm を模倣するためだけに、VT100互換の数字キーパッドを実際には提供しないターミナルエミュレーターによってコピーされた構成が見つかります。

これはxterm FAQ(他の端末の場合、通常はまったく文書化されていません)に要約されています。

3
Thomas Dickey