画面上のキーストロークのテキスト表現方式は何ですか?

画面上のキーストロークのテキスト表現方式は何ですか?

画面上の特定のキーストロークを表す一連の文字をどのようにエクスポートできますか?私は、バインドが入力として取るものは何ですか?たとえば、「s」は「s」キーの明白なキー入力を表します。 「S」は「shift+s」を意味します。しかし、他のより複雑な組み合わせの表現は私には明確ではなく、それによる計画はやや曖昧に見えます。

周りを見回しています。以前は、特定の状況で「tab」と「shift + tab」の表現が何であるかを尋ねました。しかし、答えが見つかりません。だから、全体的な流れを理解しようとするのが最善だと思います。私も見たことがあるこれしかし、今は私にとって効果的です。

この画面で従うべき構成/規則を説明できる人はいますか?キーの組み合わせ表現をエクスポートするルールは何ですか?画面によって異なりますか?それとも他のソフトウェアと共有されますか?たぶん別のGNUソフトウェアがありますか?これはどこで録音されましたか?

ベストアンサー1

screenキー入力を処理せずに端末デバイスから読み取られた文字や文字シーケンスを処理する端末アプリケーションなどのスキームはありません。

ターミナル(または同様のターミナルエミュレータxterm)は、キーストロークを文字または文字シーケンスに変換し、それをライン(ターミナルエミュレータの場合は行は仮想です)を介してシステムに送信します。エンドデバイスの回線規律はこれを多少変更することができます(例:CRをLFに変更)。

screen端末に何かを入力するときにどの文字または文字シーケンスが表示されるかを確認するには、次のようにしますod

od -tcたとえば、ターミナルを入力すると、ターミナルod -tcデバイスは文字を読み取り、標準出力に表示します(出力をリダイレクトしない場合はターミナルデバイスに表示)。印刷可能方法。

たとえば、次は入力時の出力です。 (Up Enter Ctrl+D後者はod入力の終わりを示します):

0000000 033   [   A  \n
0000004

Up3つの文字ESCが[送信され、に変更されました。A\r\n

screen実際にホスト端末を次に設定します。生のモードでは、行ルールは変換を実行せず、文字が特別に処理されないようにします(上記で004送信された文字などCtrl+D)。

このモードで端末が送信する内容を確認するには:

$ stty raw; stty min 1 time 10; dd count=1 2> /dev/null | od -tc; stty sane
0000000 033   [   A
                   0000003

\nbyの出力はforの出力odに変換されていません(改行なので、端末に出力するときにカーソルだけ下に移動し、キャリッジリターン()が必要な行の先頭に移動しません)。\r\n\n\r

上記では、端末を次のように設定しました。生のreadモードだけでなく、文字が受信されると、1/1000秒後に端末デバイスでタイムアウトが発生するように設定します(そうしないと、1戻りを完了する前に多くの文字を入力する必要があるため)。readod

すべての端末を押すと、またはまたはTabとも呼ばれるTAB ASCII文字が送信されます。すべての端末が同じコンテンツを送信するわけではありません(たとえば、一部の端末は送信し、一部は送信し、一部は送信しません)。\t^IC-I\011Shift+TabESC [ Z\t

terminfoデータベースは$TERM関数kcbt背面ラベル、しかし必ずしも転送されるわけではありませんShift-Tab)。

現在の端末の場合:

$ tput kcbt | od -tc
0000000 033   [   Z
0000003

おすすめ記事