GNU/Linux >> Linux の 問題 >  >> Linux

ターミナルでのカーソル移動?

シェルが画面カーソルをどのように動かすか(矢印キーなどを入力して動き回る)、頭を包み込もうとしています。

多くのテストを行ってきましたが、端末で画面カーソルを移動できるシステムコールは見つかりませんでした。これは特定の端末拡張を使用して行われますか?もしそうなら、たとえばxtermでこれがどのように達成されるかについてのドキュメントはありますか?

これは私を夢中にさせてきました、あなたがこれに当てることができるどんな光でもありがたいです。

承認された回答:

そのようなシステムコール、または一連のシステムコールはありません。すべて慣例により行われます。

昔、「端末」がケーブルを介してコンピュータにリンクされた大きな不格好な機器であったとき、「スマート端末」はカーソルを動かしたり、線を引いたり、多角形を色で塗りつぶしたりしていました。 。スマート端末は通常、「エスケープシーケンス」を介してこれを実行しました。プログラムは、カーソルを移動したり、単語に色を付けたり、テレタイプライターを模倣する以外の特別なことを行うために、通常はASCII 0x1b、「ESC」で始まる特別なバイト値のシーケンスを発行しました。

それが「コンベンション」です。現在、「ターミナル」は、ほとんどの場合、ビットマップ画面、xterm、rxvtなどの多くのウィンドウのうちの1つにすぎません。その中で実行されている「プログラム」からのバイトを読み取るのは、xterm(またはrxvtなど)次第です。与えられた規則に従ってそれらのバイトを解釈します。 xtermウィンドウの1つにこれを入力しました:

6 % echo $TERM 
xterm

しかし、その場合、古い、古いxtermが「vt100」と言っていたことを私は知っています。 「カーソルを移動する」プログラムは、xtermインスタンスでカーソルを移動するために、「xterm」規則のエスケープシーケンスを出力する必要があります。

あなたはman cursesをすることができます およびman terminfo 詳細については。

PS

人々はエスケープシーケンスを使ってウィンドウシステム全体を実行しました。例としてMGRを参照してください。


Linux
  1. 構成ファイルの「xterm」または「xterm」?

  2. 他プログラムでのVimの動き

  3. C++ で端末のフォント サイズを変更する

  1. xtermを使い続ける理由

  2. 端末間での Vim のコピー アンド ペースト

  3. xterm で alt-d alt-f などが機能しなくなる

  1. VIエディターのコマンド

  2. 端末で使用されているプロトコル/標準は何ですか?

  3. なぜShlvl>1で素晴らしいスポーンの新しいターミナルがあるのですか?