~によるとこの端末エミュレータと対応するキーコードテーブル、XTermの新しいバージョンでは、F1、F2、F3 ...からF63までのファンクションキーを認識できます。ほとんどのキーボードには、F1〜F12の範囲の物理ファンクションキーのみがあります。追加の鍵は何ですか?物理キーまたはマウス押下からこれらのファンクションキー番号へのいくつかの(半)標準マッピングはありますか?そうでない場合、どのようにトリガーされますか?
私の考えでは、伝統的なターミナル用語で、矢印キー、home / endなどを含むすべての特殊キーをファンクションキーと呼ぶようです(一方、PCで育った人はF1..F12をファンクションキーとしてのみ考えます)キー)。ただし、XTermはこれらの名前付きキーを個別に説明します(たとえば、kUP
この表の上矢印キー)。
答え1
DEC VTはファンクションキーとさまざまなカーソルと編集キーを表し、制御シーケンスはDECFNKと呼ばれ、CSIの後に1つまたは2つのパラメータが続きます~
。最初のパラメータはファンクションキー番号です。 2番目のパラメータはアクティブな修飾キーの状態を示します。
DECFNKの場合、ファンクションキーは最大20個まで可能です。ファンクションキー1〜20のDECFNKコードは、明確に定義され文書化されています。結局のところ、LKキーボードには実際に20のファンクションキーがあります。 (機能キーが複数あっても通常いいえ、できます。潜在的にどちらも DECFNK シーケンスを生成し、そのシーケンスは DEC doco にあります。 )これはDEC VT420用のLK401キーボードです。
表に示すように、元のDECFNKシーケンスを生成するシミュレータは、これら20個のキーに対してDECFNK 11からDECFNK 34まで放出します。 (一部のDECFNK番号はスキップされました。興味深いことに、スキップされた番号はキーボードのファンクションキー行のキーグループ間の物理スペースに対応します。)
状況が複雑になったのは、PCとXENIXの導入でした。 IBM PC(特にPC 3270)の世界には、F型キーボードに24のファンクションキーがあります。 PC/ATの高級キーボードには12個のファンクションキーがあり、そのうち半分しかありません。 3270 Fタイプキーボードです。
F13修飾子の組み合わせを使用して、PC / ATキーボードからからのファンクションキーにアクセスできる端末エミュレーションルールが登場しました。との4つの組み合わせを通じてF24、⎈ Control⇧ Level 2 Shiftただ拡張キーボードの12個のファンクションキーは、48個のファンクションキーをシミュレートできます。これは、48の異なる制御シーケンスを生成するXENIXコンソールの場合です。
テーブルの他の列で何が起こっているのかを観察できます。 (例えば)、、F6の制御シーケンスはすべてDECFNK 17であり、2番目のパラメータの修飾子ビットフラグは異なる値を持ちます。F18F30F42
さらに、同じ列では、F1toF5はDECFNK制御シーケンスではありません。これは、PCキーボードのエミュレータの規則によって異なります。 DEC LKキーボードF1ではF5 したDECFNKシーケンスが割り当てられており、できる生成されますが、通常はホストへの入力を生成しない「ローカル」モードで実行されます。シミュレータはこれらのDECFNKシーケンスを生成してシミュレーションする必要はありませんF1。F5なぜなら、これらのキーに依存するアプリケーションがほとんどまたはまったくないからです。しかし、シミュレータはその逆です。したPF1電卓キーボードのキーセットは実際のDECキーボードでエミュレートする必要がありますPF4が、PCキーボードにはそのような機能はありません。 これらキーは DECFNK シーケンスを生成せず、実際のファンクションキーではありません。他の電卓キーと同様に、SS3制御シーケンスを生成します。
(一部のSS3シーケンスの形式が正しくありません。「SS」は「シングルシフト」を意味し、これらのシフトは単一の後続の文字に適用されます。SS3に修飾子引数を追加するXTerm制御シーケンスは、実際に正しく設定されたSS3シーケンスです。いいえ。
これは、アナログ端末に設定されているファンクションキー制御シーケンスが最大48のファンクションキーになることができる方法を示しています。 64個の制御シーケンスを解釈するには、DECFNKシーケンスの修飾子パラメータを参照してください。追加の12個の制御シーケンスの場合は、修飾子として3
表示されます⎇ Alt。
実際、VT制御シーケンスプロトコルで認識される3つの修飾子には、合計8つの可能な組み合わせがあります⎈ Control。したがって、これらの端末エミュレータ規則に基づいて、PC / AT強化キーボードは96個の異なるDECFNK制御シーケンスを持つことができ、DEC LKキーボードは160個の異なるDECFNK制御シーケンスを持つことができます。⇧ Level 2 Shift⎇ Alt
追加読書
答え2
xtermは実際にそれ以上をサポートしています。64ファンクションキー(経由移動する、コントロール、デリゲート、円修飾子)。これ64terminfoで定義された移植可能なセットです(そしてX/オープン呪い)。セットの最初はkf0
(混乱しているためほとんど使用されません。)
人々がさまざまなキーの組み合わせを区別できるようにしたいので、これを行います(誰もがemacsユーザーではありませんが、役に立ちます)。まったく新しいterminfo機能セットを開発することなくxtermを拡張して、定義済みの64個のterminfo名を使用するだけで十分です。
ncursesで」習慣キー、xterm 端末記述はこれより多いが、依然として実際の制限より少ない。 PCキーボードの12キーに組み合わせを掛けると、構成によっては8 * 12または16 * 12になります。デリゲートそして円。
同じ修飾子セットが4つのカーソルキーと6つの編集キーに適用されます。
修飾子は次のようになります。修正済み(違うセットエスケープシーケンス)。 xtermの様々なビルディングブロック用語情報ソースには次のようなものがあります(例:xterm+pcf0、xterm+pcf1など)の可能性が高まっています。
しかし、人はいません...
しかし、デフォルトでは、実際のVT220は最初の5つのファンクションキーに対して何も(有用ではありません)です。しかし、それは別の話です。
PCの場合、修飾子にShift / Control / Altを使用するのは時代遅れです。 ncursesにはいくつかの端末記述があります。オペレーティングシステム/2このアプローチも使用してください上海協力機構(同じハードウェア)。
答え3
VT220のような以前のDEC ASCII端子に関連しています。
http://www.columbia.edu/kermit/k95vtfk.html
ファンクションキーは、メインフレームコンピュータで実行されているテキストベースのプログラムと対話するために使用されます。
ターミナルとホスト間の接続は通常シリアルです。
F キーを押すと、端末は通常、ESC 文字で始まる一連の ASCII コードを送信します。
Fキーは、最新のコンピュータで使用されているショートカットと似ています。
例えば、F1は画面にメニューを表示するキーであってもよい。
Shift キーと Control キーを F キーと組み合わせると、F21-F64 が生成されます。
たとえば、F21を作成するには、Shift-F1を押します。 (多分ctrl-F1) F61 ctrl-shft-F1に類似