curs_addch(3x) curs_addch(3x)
addch, waddch, mvaddch, mvwaddch, echochar, wechochar - 文字と属性を curses のウィンドウに追加し、カーソルを進める
#include <curses.h> int addch(const chtype ch); int waddch(WINDOW *win, const chtype ch); int mvaddch(int y, int x, const chtype ch); int mvwaddch(WINDOW *win, int y, int x, const chtype ch); int echochar(const chtype ch); int wechochar(WINDOW *win, const chtype ch);
addch, waddch, mvaddch, mvwaddch の各ルーチンは、文字 ch を 指定のウィンドウの現在位置に書き込んだ後、現在位置を進めます。 これらは stdio(3) の putchar に似ています。 右マージンまで進んだ時は、 o カーソルは自動的に次の行の先頭に折返します。 o 現在のスクロール領域の一番下で、 scrollok が有効な 場合は、スクロール領域が 1 行上へスクロールします。 o scrollok が有効でない場合は、続けて右マージン下方に 文字を書きます。しかし、新しい行に折り返すことが できないので、エラーが返ります。 ch がタブ、改行、復帰 (キャリッジ・リターン)、もしくは バックスペースの場合は、カーソルはウィンドウの中で適切に 移動します。 o バックスペースはカーソルを 1 文字左へ移動します。 ウインドウ左端では何もしません。 o 復帰はカーソルを現在行のウインドウ左マージンに 移動します。 o 改行は clrtoeol を行った後、最後の行だった場合は ウインドウをスクロールし、カーソルを次の行の ウインドウ左マージンに移動します。 o タブは 8 桁ごとと想定します。 タブ間隔は変数 TABSIZE を設定することで変更できます。 ch が他の制御文字のときは、 ^X の形式で表示します。 制御文字を追加した後に winch を呼び出すと、 文字そのものではなく、制御文字の ^ 表現を返します。 表示属性は文字と論理和 (OR) を取ることにより、 addch その他の関連関数に渡す文字引数と合成することができます。 (ですから属性を含む文字列は inch と addch を使って、 ある場所から他の場所へとコピーすることができます。) 文字と論理和 (OR) を取る際に使えて便利な定義済みの 表示属性定数については curs_attr(3x) のマニュアル・ページを 参照してください。
echochar と wechochar ルーチンは、 addch を呼び出した後に refresh を呼び出す、または waddch を呼び出した後に wrefresh を呼び出すことと同じです。 1 つの文字だけが出力されるという知識は考慮され、そして、 非制御文字に対しては、等価な関数よりもこれらのルーチンを 使うことで相当な性能の向上がみられることがあります。
addch 一族のルーチンで画面に罫線文字等を加えるために 以下の変数 (訳注: 定数か) が使えるかもしれません。 acsc 機能項目が端末固有の代替を定義していない場合、 または端末とロケールの設定が Unicode を要求するのに ライブラリが Unicode を使うことができない場合、下表の デフォルト文字が使われます。 名前は VT100 の命名法から取られています。 名前 デフォルト 説明 -------------------------------------------------- ACS_BLOCK # solid square block 正方形ボックス ACS_BOARD # board of squares 矩形のボード ACS_BTEE + bottom tee 下ティー ACS_BULLET o bullet 黒丸 ACS_CKBOARD : checker board (stipple) チェッカーボード(点描) ACS_DARROW v arrow pointing down 下向き矢印 ACS_DEGREE ' degree symbol 度記号 ACS_DIAMOND + diamond ダイヤモンド ACS_GEQUAL > greater-than-or-equal-to 以上(不等号) ACS_HLINE - horizontal line 横線 ACS_LANTERN # lantern symbol ランタン記号 ACS_LARROW < arrow pointing left 左向き矢印 ACS_LEQUAL < less-than-or-equal-to 以下(不等号) ACS_LLCORNER + lower left-hand corner 左下隅 ACS_LRCORNER + lower right-hand corner 右下隅 ACS_LTEE + left tee 左ティー ACS_NEQUAL ! not-equal 等号否定 ACS_PI * greek pi ギリシャ語のパイ ACS_PLMINUS # plus/minus プラス/マイナス ACS_PLUS + plus 十字形 ACS_RARROW > arrow pointing right 右向き矢印 ACS_RTEE + right tee 右ティー ACS_S1 - scan line 1 走査線1 ACS_S3 - scan line 3 走査線3 ACS_S7 - scan line 7 走査線7 ACS_S9 _ scan line 9 走査線9 ACS_STERLING f pound-sterling symbol ポンド記号 ACS_TTEE + top tee 上ティー ACS_UARROW ^ arrow pointing up 上向き矢印 ACS_ULCORNER + upper left-hand corner 左上隅 ACS_URCORNER + upper right-hand corner 右上隅 ACS_VLINE | vertical line 縦線
すべてのルーチンは、上のルーチン説明で特記して いないかぎり、失敗すると整数 ERR を、成功すると OK ( SVr4 マニュアルは「 ERR 以外の整数値」としか 指定していません) を返します。 mv で始まる関数は、最初に wmove を使用してカーソルを 移動し、位置がウィンドウの外だった場合、またはウィンドウ ポインタがヌルの場合にエラーを返します。
addch, mvaddch, mvwaddch, echochar はマクロであるかも しれないことに注意してください。
これらすべての関数は、 XSI Curses standard, Issue 4 に 記述されています。POSIX ロケールでは、罫線素片文字に対して 指定されたデフォルトが適用されます。 X/Open Curses は、 ACS_ の定義は char 型定数だと明言して います。 ワイド文字用の実装には (curs_add_wch(3x) を参照) 、 これに類似した cchar_t 型定数の WACS_ の定義があります。 いくつかの ACS 識別子 (ACS_S3, ACS_S7, ACS_LEQUAL, ACS_GEQUAL, ACS_PI, ACS_NEQUAL, ACS_STERLING) は、 公に発表されたどの System V にも記述されていません。 しかし、公に利用可能な多くの terminfo は そのキー文字 (pryz{|}) が埋め込まれている中に acsc 文字列を含んでおり、 それらの文字を説明する間接的な表が明らかにされています。 これらの ACS で始まる名前は ncurses(3x) のために 考案されたものです。 ACS_ と WACS_ 定数に対して表示される値は下記に依存します。 o ライブラリの構成、つまり ncurses に対して ncursesw 。 後者は Unicode を表示することができますが、 前者はできません。 o locale が UTF-8 エンコードを使うかどうか。 ある場合には、端末は UTF-8 を使わないと罫線文字等を 表示することができません。( ncurses(3x) の NCURSES_NO_UTF8_ACS の議論を参照してください。) 変数 TABSIZE は curses のいくつかのバージョンで 実装されていますが、 X/Open curses の一部ではありません。 ch が復帰 (キャリッジ・リターン) のとき、カーソルは ウインドウの現在行の始めに移動します。 これは他の実装にも当てはまりますが、明文化されていません。
curses(3x), curs_attr(3x), curs_clear(3x), curs_inch(3x), curs_outopts(3x), curs_refresh(3x), curs_variables(3x), putc(3). ワイド文字用ライブラリ (ncursesw) の対応する関数群は curs_add_wch(3x) で説明しています。 curs_addch(3x)