ターミナルのShift +矢印キーの歴史は何ですか?


21

なぜ私は思ったんだけど Shift+ Arrow Keyの1になりABCまたはD文字。

なぜ他の手紙ではないのですか?なんで手紙なんですか?


興味をそそる:D私の賭け?テキストベースのゲームに関係している:D
Rinzwind

2
ただの観察:tty Shift + Arrow Keysでは何もしません。
ラドゥラデアヌ

@Rinzwind::)))
ラドゥラデアヌ

1
Unix / Linux Stack Exchangeでこの質問をしました。役に立つ答えがいくつかあります。たぶんあなたはそれらを見たいと思うでしょう。unix.stackexchange.com/questions/73669/...
yfklon

回答:


27

gnome-terminal(Ubuntuの「ターミナル」)などのターミナルエミュレーターは、コンピューターの唯一のディスプレイである古いターミナルの動作を再現するため、「エミュレーター」xtermurxvtも呼ばれます。このような端末は、テキストベースのプロトコルでコンピューターと通信し、最初はテキストのみを受信するように設計されていました。すぐに、より多くの制御が必要でした:行を消去する方法?色を使う?または、カーソルの位置を変更しますか?

VT-100ターミナル 出典:Art of Unix Usability-Command-Line Interfaces

エスケープシーケンスは、すべての端末がそのようなことを行うために設計されました。ASCIIエスケープコードで始まるため、これらはescapeという名前です33。そのような文字を直接印刷する方法はないため、このようなシーケンスに適しています。まだこの文字を表示したい場合は^[[、を使用します。これは、説明で使用するものです。

端末がを受け取ったとき^[[A、それは「print ^ [[A」ではなく、「ユーザーが上矢印キーを押した」ことを意味していました。ここでの「A」は完全にarbitrary意的です。たまたまみんなが同意した手紙です。なぜなら、それがDEC VT-52とその人気の後継機であるVT-100ターミナルが使用したものだからです。

DEC VT-52メンテナンスマニュエル1976

出典:DEC VT-52メンテナンスマニュアル1976

これは今日でも端末エミュレータの動作方法です。$TERM変数に応じて、指定されたデータベースterminfoがシェルに送信するコード(bash、sh、zsh ...)を指定します。彼らへ。

さて、Shift+ のコードはupたまたま^[[1;2A:ターミナルエミュレータはこのコードをシェルに送信します。シェルは解釈を試みますが、^[[1;2エスケープシーケンスを知らないため何も表示しません。しかしA、残されて表示されます。


5
わあ、面白い。^[[Aプロセスがターミナルで実行されているときに矢印キーをクリックすると、これらすべてが意味をなします。
ダン

4
SHIFT-UpArrowを押す直前にCTRL-vを押すと、生の形式でエスケープシーケンスを「表示」できます。デフォルトを変更していない限り、ESCは端末画面に^ [
arielf

@arielf実行してcat >/dev/nullから入力し、完了したらCtrl + C(またはEnterを押してからCtrl + D)を押すこともできます。
wjandrea
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.