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)