私は、ANSIエスケープコードを使用してテキストに色を付ける簡単なコンソールプログラムをCで作成しました。
端末全体の背景を一時的に黒に設定し、デフォルトのフォントの色を明るい灰色に設定する方法はありますか?プログラムの終了後にこれを元に戻すことはできますか?
ncursesの使用は避けたいと思います。
おそらく最も簡単な方法は、ANSIを使用してテキストの背景色を設定することです。
たとえば、以下を使用します。
echo -e "\e[37m\e[41m"
赤い背景に青いテキストが表示されます(これを使用して、劇的で見やすい色で効果をテストできます)。
一方
echo -e "\e[97m\e[40m"
プログラムの実行中、前景を白に、背景を黒に設定します。
背景色と端末の間にある種の醜いトランジションゾーンが発生していることに気付いた場合は、画面全体を消去するのに十分な数の改行を印刷するだけです。
これをCで使用するには、明らかにprintf
の代わりに必要になりますecho
。
ANSIエスケープコードのwikiページに追加情報があります。
これを行う方法は、ユーザーが使用している端末によって異なります。ANSI、VT100、ラインプリンタの可能性があります。 ncursesはあなたのためにこの恐怖を抽象化します。これは、またはに通常格納されているさまざまな種類の端末との通信方法に関する情報のデータベースを使用します(現在使用している端末については、$ TERMの内容を参照してください) 。/lib/terminfo
/usr/share/terminfo
これらのファイルを調べたら、それを回避するための特定の要件(十分なストレージがない組み込みシステムなど)がない限り、ncursesを使用しないことを再検討することをお勧めします。