ビデオ属性の操作

ユーザーのプログラムは多くのビデオ属性を操作することができます。

ビデオ属性、ビット・マスク、およびデフォルト・カラー

curses によって、以下の属性を制御することができます。
A_ALTCHARSET
代替文字セット
A_BLINK
フラッシュ
A_BOLD
高輝度または太字
A_DIM
低輝度
A_NORMAL
通常属性
A_REVERSE
反転表示
A_STANDOUT
端末の最高の高輝度表示モード
A_UNDERLINE
下線
COLOR_PAIR (Number)
Number によって表されるカラー・ペアを表示します。 init_pair サブルーチンを使用して、カラー・ペアを初期化しておかなければなりません。

これらの属性は curses.h ファイルに定義されています。 属性を wattronwattroff、および wattrset サブルーチンに渡すか、 または属性を、waddch サブルーチンに渡す文字と OR 演算を行うことができます。 C の論理 OR 演算子は | (縦線) です。 以下のビット・マスクも用意されています。

A_ATTRIBUTES
属性を抽出します。
A_CHARTEXT
文字を抽出します。
A_COLOR
カラー・ペア・フィールド情報を抽出します。
A_NORMAL
すべてのビデオ属性をオフにします。

カラー・ペアの処理のために、 COLOR_PAIR( Number)PAIR_NUMBER( Attribute) というマクロが用意されています。 COLOR_PAIR( Number) マクロおよび A_COLOR マスクは、PAIR_NUMBER( Attribute) マクロによって使用され、Attribute パラメーターによって指定された属性内で検出されたカラー・ペア番号を抽出します。

プログラムがカラーを使用する場合、 curses.h ファイルが以下のデフォルト・カラーを識別するマクロの数を定義します。

カラー 整数値
COLOR_BLACK 0
COLOR_BLUE 1
COLOR_GREEN 2
COLOR_CYAN 3
COLOR_RED 4
COLOR_MAGENTA 5
COLOR_YELLOW 6
COLOR_WHITE 7

curses は、すべての端末のデフォルトの背景色が 0 (COLOR_BLACK) であると想定します。

ビデオ属性の設定

現在のウィンドウ属性は、addch サブルーチンを使用してウィンドウに書き出されるすべての文字に適用されます。 これらの属性は、文字の属性して残ります。 文字は端末操作中にこれらの属性を保持します。

attroff または wattroff
属性をオフにします。
attron または wattron
属性をオンにします。
attrset または wattrset
ウィンドウの現在の属性を設定します。
standout、wstandout、standend、または wstandend
ウィンドウを端末の最高の高輝度表示モードにするか、または 最高の高輝度表示モードを終了します。
vidputs または vidattr
端末をビデオ属性モードにする文字列を出力します。

attrset サブルーチンは、デフォルト・スクリーンの現在の属性を設定します。 wattrset サブルーチンは、 ユーザー定義ウィンドウの現在の属性を設定します。

attron および attroff サブルーチンを使用すれば、stdscr 内で指定された属性を、 他の属性に影響を与えずに、オンまたはオフにすることができます。 wattron サブルーチンおよび wattroff サブルーチンは、ユーザー定義ウィンドウで同じアクションを実行します。

standout サブルーチンは、 A_STANDOUT 属性を指定した attron サブルーチンへのコールと同じです。 このサブルーチンは、stdscr を端末の最高の高輝度表示モードに変更します。 wstandout サブルーチンは、wattron(Window, A_STANDOUT) サブルーチンへのコールと同じです。 このサブルーチンは、ユーザー定義ウィンドウを端末の最高の高輝度表示モードに変更します。 standend サブルーチンは attrset(0) サブルーチンへのコールと同じです。 このサブルーチンは、stdscr のすべての属性をオフにします。 wstandend サブルーチンは、wattrset(Window, 0) サブルーチンへのコールと同じです。 このサブルーチンは、指定されたウィンドウのすべての属性をオフにします。

vidputs サブルーチンは、端末を指定された属性モードにする文字列を出力します。 文字は putc サブルーチンを介して出力されます。 vidattr サブルーチンは、文字が putchar サブルーチンを介して出力されることを除けば、vidputs サブルーチンと同じです。

カラー・ペアの処理

COLOR_PAIR (Number) マクロが curses.h ファイルに定義されているので、 カラー属性を他の属性と同様に操作することができます。 カラー・ペアは、使用する前に、init_pair サブルーチンを使用して初期化する必要があります。 init_pair サブルーチンには、PairForeground、 および Background というパラメーターがあります。 Pair パラメーターは 1 と COLOR_PAIRS -1 の間でなければなりません。 ForegroundBackground パラメーターは 0 と COLORS -1 の間でなければなりません。 例えば、カラー・ペア 1 を黒の前景とシアンの背景に初期化するには、以下のものを使用します。
init_pair(1, COLOR_BLACK, COLOR_CYAN);
次にウィンドウの属性を以下のように設定します。

wattrset(win, COLOR_PAIR(1));

次に、文字列 Let's add Color を端末に書き出すと、この文字列はシアンの背景上の黒い文字として表示されます。

属性の抽出

winch サブルーチンへのコールからの結果を使用すれば、 カラー・ペア番号を含む属性情報を抽出することができます。 以下の例は、winch サブルーチンへのコールによって戻される値と C の論理 AND 演算子 (&) および A_ATTRIBUTES ビット・マスクを使用して、 ウィンドウ内の現在位置に割り当てられた属性を抽出します。 この操作からの結果を PAIR_NUMBER マクロによって使用し、カラー・ペア番号を抽出し、番号 1 をスクリーンに印刷します。

win = newwin(10, 10, 0, 0);
init_pair(1, COLOR_RED, COLOR_YELLOW);
wattrset(win, COLOR_PAIR(1));
waddstr(win, "apple");

number = PAIR_NUMBER((mvwinch(win, 0, 0) & A_ATTRIBUTES));
wprintw(win, "%d¥n", number);
wrefresh(win);

光と音

curses ライブラリーには、 ユーザーにシグナルを送るための以下の警報サブルーチンがあります。

beep
端末で音響警報を鳴らします。
flash
端末で可視警報を表示します。

curses オプションの設定

すべての curses オプションは最初にオフにされるので、 endwin サブルーチンを呼び出す前にオフにする必要はありません。以下のサブルーチンを使用すれば、curses の様々なオプションを設定することができます。
curs_set
カーソルの可視性を、不可視、通常、または非常に可視に設定します。
idlok
curses が、端末の行挿入と行削除のハードウェア機能を使用できるかどうかを指定します。
intrflush
割り込みキー (割り込み、終了、または中断) が tty ドライバーですべての出力をフラッシュするかどうかを指定します。 このオプションのデフォルトは tty ドライバーから受け継がれます。
keypad
curses が端末のキーパッドからの情報を取り出すかどうかを指定します。 使用可能にした場合、 ユーザーはファンクション・キー (矢印キーなど) を押すことができ、wgetch サブルーチンによって、 そのファンクション・キーを表す単一の値が戻されます。使用不可にした場合、 ファンクション・キーが curses によって特別に処理されないので、 ユーザーのプログラムがエスケープ・シーケンスを解釈する必要があります。 これらのファンクション・キーのリストについては、wgetch サブルーチンを参照してください。
typeahead
代替ファイル・ディスクリプターでタイプを先に検査するように curses に指示します。

その他の curses オプションについては、wgetch サブルーチンおよび端末での curses の使用についてを参照してください。