ESC送ってください。
\x1b
はい1バイト:実際のエスケープ文字です。Page Up送ってください。
\x1b[H
はい3バイト。F2送ってください。
\x1b[OQ
はい4バイト。F5送ってください。
\x1b[15~
はい5バイト。
そのうちの1つの最大長はいくらですか?これはどこかに文書化されていますか?
答え1
事前定義された長さ制限なし制御シーケンス。 OPは、例として送られたいくつかの文字列を提供しました。特殊キー、記録済みXTerm制御シーケンス。
xterm は、修飾子コードが次のように追加される可能性のあるキーコードのリストから始まります。AltキーとMetaキー部分。長さチャートはありません。このタスクの1つの複雑な問題は、何千もの可能なキーボード配列を作成するために連携して動作する複数のリソース設定があることです。これらすべてを説明する代わりに、xterm端末記述は、ユーザー定義関数を含む一連のterminfoビルディングブロック(名前に「+」を含む)として表示されます。修正済みキー(例えばcontrol、shiftなど)。
- これxtermの用語情報ページにはこれらの項目が一覧表示されます(スクリプトとして生成されます)。
- ビルディングブロックのサイズは、ほとんどの実装で想定されるコンパイルされたterminfoの4096バイト制限に合わせて制限されます。
- 呪い端末データベースこれらのビルディングブロックのサブセットがリストされます。
- それも記録するカスタマイズ機能xtermエントリで使用されるキーは、文書化されたキーよりも多くの可能なキーがあることに注意してください。
いくつかの他の端末はxtermスキームを実装していますが、特定の組み合わせでのみ実装されています。だから、これらを列挙するのは簡単です。ある意味、「事前定義」されています。
ただし、特殊キーが唯一の制御シーケンスタイプではありません。 ECMA-48形式を使用するこれらの端末は、ホストから送信された制御シーケンスを受け入れます。通常、数値または文字列引数を受け入れます。
- xterm は 65535 より大きい数値を無視するので、これを数値の制限として考えることができます。数字(ただし、端末によって異なります。)
- 制御シーケンスには数値パラメータをいくらでも含めることができます。たとえば、xtermは256色のパレットの256色のそれぞれを変更する制御シーケンスを許可します。これは数キロバイトです(上限は推定可能です)。制御シーケンスパーサはいつでも複数の数字を必要としません。
- 文字列パラメータの長さには事前定義された制限はありません(たとえば、ウィンドウのタイトル設定)。
同様に、他の端末エミュレータでは、許容される制御シーケンスの長さに対して独自の制限を使用することができる。