プログラム中に改行やタブを挿入するときなどに使うエスケープシーケンス。
これによると、実はエスケープシーケンスは3種類あって、
となっているらしい。
で、今回は、
- 改行などのエスケープコード
- 入力位置などを操作する画面制御シーケンス
の2つを扱う。
(特殊文字はいまのところちょっと使わなそう・・・。)
特に、今回のキモは画面制御シーケンスである。
まず、terminalを起動して、"Ctrl + v"を押した後、"Esc"を押す。
すると、
$ ^[
と入力される。でこのあとに、"["を入力し、さらに特定の数字と文字で表されたコードを入力する。
https://www.kushiro-ct.ac.jp/yanagawa/ex-2017/2-game/01.html#escseq
コード表を参考に入力してみると、
テキストの色を変えたり、背景色を変えたり、リセットできる。
これを入れると、
カーソルが戻っている。(3行かは微妙・・・。)
戻ったところから入力出来たり・・・。
"^[[2J"で、
画面クリア出来たり・・・。
で、これはC言語でも出来るわけで、
前半はエスケープ文字の、改行、タブ、バックスペース、で簡単に制御している。
10秒後の後半は、画面制御コードでいろいろいじっている。
画面制御コードはprintf中に"\e[31m"(テキスト色を赤に変更)というように指定する。
まずは、エスケープ文字。
改行、タブはだいたいわかるとして、バックスペースを入れた場合は、直前の文字が消える。
10秒後に、画面制御コード。
ポイントは、"m行n列に戻る"というコードは、mもnも1から始まるという点だろうか・・・。0行0列は意味がなかった。
あと、画面をクリアしても、1行1列に戻らないので、自分で戻る必要がある。
Sample/c/escape_sequence/escape_sequence/src/escape_sequence at master · bg1bgst333/Sample · GitHub