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

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

用語情報データベースには、「アプリケーションスキーマ」を記述するエントリが含まれています。通常、キーボードで押したボタンに対応する項目は\EO(初期化を行わないアプリケーションが端末がデフォルトで初期化されるモードである「Normal」または「Application」を知ることができるように行われます)で終わり、名前が付けられます。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

これは広範なトピックです...

すべてではありませんが、ほとんどの端末は設定可能で、使い慣れた端末は制御シーケンスに応答して以下を提供できます。アプリケーションモードはカーソル編集するそして数字キーボードキー。私がリストしていないことがわかります。ファンクションキー

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

xtermあなたの例は、VT100スタイルの数字キーパッドを提供する構成を示しています。一般的なPCキーボードには、VT100キーボードと一致するキーが十分ではありません(なぜなら、「正しい」位置に4つのキーがありますが、NumLock特に処理されたためです)。持つファンクションキー)、最初の4つのPCファンクションキーに一番上の行を割り当てるのが便利です。

の場合はxtermとにかく設定可能ですが、上記のようにterminfoエントリは次のように説明します。特別な構成。

ターミナルエミュレータがコピーする設定は、実際にはVT100準拠の数字キーパッドを提供せずに単にエミュレートするためのものであることがわかります。xterm

これはxterm FAQにまとめられています(他の端末の場合はまったく文書化されていないことがよくあります)。

関連情報