EN JA
ncurses(3X)
ncurses(3X) ncurses(3X)

名称

ncurses - CRT 画面操作と最適化パッケージ

書式

#include <curses.h>
 

解説

ncurses ライブラリルーチンは、合理的な最適化で文字画面を更新する端末に依存しない方法を使用者に与えます。この実装は、``新しい curses'' (ncurses) で、中断されていた、 4.4BSD の古典 (クラシック) curses の代わりに認められました。これは、 ncurses バージョン 5.7 (パッチ 20081102) について説明しています。

ncurses ライブラリは、System V Release 4 UNIX の curses(3X) ライブラリと (XSI curses としても知られている) XPG4 (X/Open Portability Guide (移植性ガイド)) curses をエミュレートしています。 XSI は、X/Open System Interfaces Extension を略語です。 ncurses ライブラリは、ソース形式で自由に再配布できます。 SVr4 curses との違いは、下記の 拡張機能移植性セクションに要約され、個々のマニュアルページの、それぞれ 拡張機能移植性、と バグセクションに詳細に説明されています。

また、 ncurses ライブラリは、多くの役に立つ拡張を提供しています、すなわち、簡単なアドオンのライブラリによって実装することができませんが、ライブラリの内部へのアクセスを必要とする機能です。

これらのルーチンを使用するプログラムは、 -lncurses オプション、または (生成されているなら) デバッグライブラリ -lncurses_g とリンクしなければなりません。 (また、利用者のシステムインテグレータは、 -lcurses-lcurses_g という名前でこれらのライブラリをインストールしたかもしれません。) ncurses_g ライブラリは、curses アクションを記述する (カレントディレクトリに 'trace' と呼ばれるファイルで) トレースログを生成します。また、 代わりの設定セクションを参照してください。

ncurses パッケージは、次をサポートしています: 全体の画面、ウィンドウと詰め物 (pad) の操作、ウィンドウと詰め物の出力、端末入力の読み込み、端末と curses 入力と出力オプションの制御、環境問い合わせ (クエリ) ルーチン、カラー操作、ソフトラベルキーの使用、 terminfo ケーパビリティ、と低レベル端末操作ルーチンへのアクセスです。

ライブラリは、呼び出しプログラムが初期化したロケールを使用します。通常、それは、 setlocale で行われます:

 


setlocale(LC_ALL, "");

 

ロケールが初期化されないなら、ライブラリは、特定の古いプログラムで動作するために、文字が ISO-8859-1 として印刷可能であると仮定します。利用者は、ロケールを初期化するべきで、ロケールが設定されなかったとき、ライブラリの特定の詳細を当てにするべきではありません。

関数 initscr または newterm は、ウィンドウと画面を処理するその他のルーチンのいずれかが使用される前に、ライブラリを初期化するために、呼び出されなければなりません。ルーチン endwin は、終了する前に呼び出されなければなりません。

(ほとんどの対話型で画面指向のプログラムで望まれる) エコーせずに 1 度に 1 文字ずつ入力を取得するには、次のシーケンスが使用されるべきです:

 


initscr(); cbreak(); noecho();

 

さらに、ほとんどのプログラムは、次のシーケンスも使用するでしょう:

 


nonl();
intrflush(stdscr, FALSE);
keypad(stdscr, TRUE);

 

curses プログラムが実行される前に、端末のタブストップが設定されるべきで、定義されていれば、その初期化文字列が出力されなければなりません。シェル環境変数 TERM がエクスポートされた後に、 tput init コマンドを実行することによって、これを、行なうことができます。 tset(1) は、通常これを行なう責任があります。 [さらなる詳細については、 terminfo(5) を参照してください。]

ncurses ライブラリは、CRT 画面の全体か一部を表す文字の 2 次元配列とみなすことができる、 windows と呼ばれるデータ構造を操作できます。端末画面のサイズである、 stdscr と呼ばれるデフォルトのウィンドウが供給されます。その他のウィンドウは、 newwin で作成できます。

curses は、オーバラップウィンドウを操作しないことに注意してくさい。それは、 panel(3X) ライブラリで行なわれます。これは、使用者が stdscr を使用できるか、画面にタイルが張られたウィンドウに分割して、 stdscr を全く使用することができないかのいずれかを意味します。 2 つの混合は、予測不可能で、望まれない結果となるでしょう。

ウィンドウは、 WINDOW * のように宣言された変数によって参照されます。これらのデータ構造は、 ncurses マニュアルページのここと他のところで記述されたルーチンで操作されます。それらの中で、最も基本的なルーチンは、 moveaddch です。これらのルーチンのより一般的なバージョンは、ユーザがウィンドウを指定することを可能にして、 w で始まる名前で含まれています。 w で始まらないルーチンは、 stdscr に影響します。

ウィンドウを操作するためのルーチンを使用した後、 refresh が呼び出され、ユーザの CRT 画面を stdscr のように見せるように curses に伝えます。ウィンドウの文字は、文字についての他の情報は、それぞれの文字とともに格納できるように、実際のところタイプ chtype (文字と属性データ) です。

pads と呼ばれる特殊なウィンドウもまた操作できます。それらは、画面のサイズに制約されず、その内容を完全に表示する必要のないウィンドウです。より詳細については、 curs_pad(3X) を参照してください。

画面上に文字を描画することに加えて、ビデオ属性と色は、表示増強をサポートしている端末で、下線、リバース (反転) ビデオまたは色のようなモードで文字を表示することをサポートしています。行描画文字を出力するように指定することもできます。入力時に、 curses は、エスケープシーケンスを送出する矢印キーとファンクションキーを単一の値に変換することもできます。ビデオ属性、行描画文字と入力値は、 A_REVERSEACS_HLINEKEY_LEFT のような <curses.h> に定義された名前を使用します。

環境変数 LINESCOLUMNS が設定されるなら、またはプログラムがウィンドウ環境で実行しているなら、環境中の行とカラムの情報は、 terminfo によって読み込まれる情報を上書きします。これは、例えば、画面のサイズが変更可能な、AT&T 630 レイヤで実行しているプログラムに影響します ( 環境変数参照)。

環境変数 TERMINFO が定義されているなら、 curses を使用するあらゆるプログラムは、標準の場所をチェックする前にローカル端末定義をチェックします。例えば TERMatt4424 に設定されているなら、コンパイルされた端末定義は、次の場所で見つけられます。

 


/usr/share/misc/terminfo/a/att4424

 

( a は、大きなディレクトリの作成を避けるために att4424 の最初の文字からコピーされます。) しかしながら、 TERMINFO$HOME/myterms に設定されるなら、 curses は、次の場所を最初にチェックします。

 


$HOME/myterms/a/att4424

 

そして、チェックが失敗するなら、次をチェックします。

 


/usr/share/misc/terminfo/a/att4424

 

これは、実験的な定義を開発する、または /usr/share/misc/terminfo の書き込みパーミッションが利用可能でないときに役に立ちます。

整数変数 LINESCOLS は、 <curses.h> に定義され、画面のサイズで initscr によって満たされます。定数 TRUEFALSE は、それぞれ、値 10 があります。

また、 curses ルーチンは、ゴミを含む画面をクリアしたり再描画するようないくらか低レベルの操作のために使用される WINDOW * 変数 curscr を定義します。ほんの少しのルーチンでのみ curscr を使用することができます。

ルーチン名と引数名

多くの curses ルーチンは、2 つ以上のバージョンがあります。 w が前に付いたルーチンは、ウィンドウ引数を要求します。 p が前に付いたルーチンには、詰め物 (pad) 引数を要求します。接頭辞のないものは、一般的に stdscr を使用します。

mv が前に付いたルーチンは、適切なアクションを実行する前に移動するために yx 座標を要求します。 mv ルーチンは、別のルーチンを呼び出す前に move を呼び出すこと意味します。座標 y は、常に (ウィンドウの) 行を参照し、座標 x は、常にカラムを参照します。左上の角は、(1,1) ではなく、常に (0,0) です。

mvw が前に付いたルーチンは、ウィンドウ引数と xy 座標の両方を取ります。ウィンドウ引数は、常に座標の前に指定されます。

どの場合でも、 win は、影響を受けるウィンドウで、 pad は、影響を受ける詰め物 (pad) です。 winpad は、常にタイプ WINDOW へのポインタです。

オプション設定ルーチンは、値 TRUE または FALSE のブール値フラグ bf を要求します。 bf は、常にタイプ bool です。 WINDOW, SCREEN, boolchtype のような、ライブラリルーチンで使用されるデータタイプのほとんどは、 <curses.h> に定義されています。 TERMINAL のような terminfo ルーチンのために使用されるタイプは、 <term.h> で定義されています。

このマニュアルページは、ライブラリのあらゆる設定に現れる関数について説明しています。ライブラリの 2 つの共通の設定があります:

ncurses
8 ビットの文字を操作する、"通常"のライブラリ。通常の (8 ビット) ライブラリは、 chtype データの属性と組み合わされた文字を格納します。
(対応する文字がない) 属性だけは、 chtype または同等な attr_t データに格納されます。いずれにしても、データは、整数のようなものに格納されます。
WINDOW の各セル (行とカラム) は、 chtype として格納されます。
ncursesw
マルチバイト文字 ( 代わりの設定セクションを参照) を扱う、いわゆる "ワイド"ライブラリ。 "ワイド"ライブラリは、"通常"のライブラリの呼び出しのすべてを含んでいます。マルチバイト文字を格納するデータタイプを使用しておよそ 1/3 以上の呼び出しを追加しています:
cchar_t
chtype に対応しています。しかしながら、それは、整数に収めることができるよりより多くのデータを格納できるので構造体となっています。文字は、完全な整数の値を必要とするより十分大きく - そして、1 つのセルに 1 文字以上あります。ビデオ属性と色は、構造体の別々のフィールドに格納されています。
WINDOW 中の各セル (行とカラム) は、 cchar_t として格納されます。
wchar_t
"ワイド"文字を格納します。 chtype のように、これは整数です。
wint_t
wchar_t または WEOF を格納します - 同じではありませんが、両方は、同じサイズです。
"ワイド"ライブラリは、"通常"のライブラリの関数と類似している新しい関数を提供しています。通常/ワイド変異型の多くに関連する命名規則があります: "_w"が、名前に挿入されます。例えば、 waddch は、 wadd_wch となります。

ルーチン名インデックス

次のテーブルは、各 curses ルーチンと記述されたマニュアルページの名前をリストしています。 `*' フラグが付けられたルーチンは、XPG4 または現在の SVr4 に記述されていない ncurses 特有です。
curses ルーチン名 マニュアルページ名
COLOR_PAIR curs_color(3X)
PAIR_NUMBER curs_attr(3X)
_nc_free_and_exit curs_memleaks(3X)*
_nc_freeall curs_memleaks(3X)*
_nc_tracebits curs_trace(3X)*
_traceattr curs_trace(3X)*
_traceattr2 curs_trace(3X)*
_tracechar curs_trace(3X)*
_tracechtype curs_trace(3X)*
_tracechtype2 curs_trace(3X)*
_tracedump curs_trace(3X)*
_tracef curs_trace(3X)*
_tracemouse curs_trace(3X)*
add_wch curs_add_wch(3X)
add_wchnstr curs_add_wchstr(3X)
add_wchstr curs_add_wchstr(3X)
addch curs_addch(3X)
addchnstr curs_addchstr(3X)
addchstr curs_addchstr(3X)
addnstr curs_addstr(3X)
addnwstr curs_addwstr(3X)
addstr curs_addstr(3X)
addwstr curs_addwstr(3X)
assume_default_colors default_colors(3X)*
attr_get curs_attr(3X)
attr_off curs_attr(3X)
attr_on curs_attr(3X)
attr_set curs_attr(3X)
attroff curs_attr(3X)
attron curs_attr(3X)
attrset curs_attr(3X)
baudrate curs_termattrs(3X)
beep curs_beep(3X)
bkgd curs_bkgd(3X)
bkgdset curs_bkgd(3X)
bkgrnd curs_bkgrnd(3X)
bkgrndset curs_bkgrnd(3X)
border curs_border(3X)
border_set curs_border_set(3X)
box curs_border(3X)
box_set curs_border_set(3X)
can_change_color curs_color(3X)
cbreak curs_inopts(3X)
chgat curs_attr(3X)
clear curs_clear(3X)
clearok curs_outopts(3X)
clrtobot curs_clear(3X)
clrtoeol curs_clear(3X)
color_content curs_color(3X)
color_set curs_attr(3X)
copywin curs_overlay(3X)
curs_set curs_kernel(3X)
curses_version curs_extend(3X)*
def_prog_mode curs_kernel(3X)
def_shell_mode curs_kernel(3X)
define_key define_key(3X)*
del_curterm curs_terminfo(3X)
delay_output curs_util(3X)
delch curs_delch(3X)
deleteln curs_deleteln(3X)
delscreen curs_initscr(3X)
delwin curs_window(3X)
derwin curs_window(3X)
doupdate curs_refresh(3X)
dupwin curs_window(3X)
echo curs_inopts(3X)
echo_wchar curs_add_wch(3X)
echochar curs_addch(3X)
endwin curs_initscr(3X)
erase curs_clear(3X)
erasechar curs_termattrs(3X)
erasewchar curs_termattrs(3X)
filter curs_util(3X)
flash curs_beep(3X)
flushinp curs_util(3X)
get_wch curs_get_wch(3X)
get_wstr curs_get_wstr(3X)
getattrs curs_attr(3X)
getbegx curs_legacy(3X)*
getbegy curs_legacy(3X)*
getbegyx curs_getyx(3X)
getbkgd curs_bkgd(3X)
getbkgrnd curs_bkgrnd(3X)
getcchar curs_getcchar(3X)
getch curs_getch(3X)
getcurx curs_legacy(3X)*
getcury curs_legacy(3X)*
getmaxx curs_legacy(3X)*
getmaxy curs_legacy(3X)*
getmaxyx curs_getyx(3X)
getmouse curs_mouse(3X)*
getn_wstr curs_get_wstr(3X)
getnstr curs_getstr(3X)
getparx curs_legacy(3X)*
getpary curs_legacy(3X)*
getparyx curs_getyx(3X)
getstr curs_getstr(3X)
getsyx curs_kernel(3X)
getwin curs_util(3X)
getyx curs_getyx(3X)
halfdelay curs_inopts(3X)
has_colors curs_color(3X)
has_ic curs_termattrs(3X)
has_il curs_termattrs(3X)
has_key curs_getch(3X)*
hline curs_border(3X)
hline_set curs_border_set(3X)
idcok curs_outopts(3X)
idlok curs_outopts(3X)
immedok curs_outopts(3X)
in_wch curs_in_wch(3X)
in_wchnstr curs_in_wchstr(3X)
in_wchstr curs_in_wchstr(3X)
inch curs_inch(3X)
inchnstr curs_inchstr(3X)
inchstr curs_inchstr(3X)
init_color curs_color(3X)
init_pair curs_color(3X)
initscr curs_initscr(3X)
innstr curs_instr(3X)
innwstr curs_inwstr(3X)
ins_nwstr curs_ins_wstr(3X)
ins_wch curs_ins_wch(3X)
ins_wstr curs_ins_wstr(3X)
insch curs_insch(3X)
insdelln curs_deleteln(3X)
insertln curs_deleteln(3X)
insnstr curs_insstr(3X)
insstr curs_insstr(3X)
instr curs_instr(3X)
intrflush curs_inopts(3X)
inwstr curs_inwstr(3X)
is_cleared curs_opaque(3X)*
is_idcok curs_opaque(3X)*
is_idlok curs_opaque(3X)*
is_immedok curs_opaque(3X)*
is_keypad curs_opaque(3X)*
is_leaveok curs_opaque(3X)*
is_linetouched curs_touch(3X)
is_nodelay curs_opaque(3X)*
is_notimeout curs_opaque(3X)*
is_scrollok curs_opaque(3X)*
is_syncok curs_opaque(3X)*
is_term_resized resizeterm(3X)*
is_wintouched curs_touch(3X)
isendwin curs_initscr(3X)
key_defined key_defined(3X)*
key_name curs_util(3X)
keybound keybound(3X)*
keyname curs_util(3X)
keyok keyok(3X)*
keypad curs_inopts(3X)
killchar curs_termattrs(3X)
killwchar curs_termattrs(3X)
leaveok curs_outopts(3X)
longname curs_termattrs(3X)
mcprint curs_print(3X)*
meta curs_inopts(3X)
mouse_trafo curs_mouse(3X)*
mouseinterval curs_mouse(3X)*
mousemask curs_mouse(3X)*
move curs_move(3X)
mvadd_wch curs_add_wch(3X)
mvadd_wchnstr curs_add_wchstr(3X)
mvadd_wchstr curs_add_wchstr(3X)
mvaddch curs_addch(3X)
mvaddchnstr curs_addchstr(3X)
mvaddchstr curs_addchstr(3X)
mvaddnstr curs_addstr(3X)
mvaddnwstr curs_addwstr(3X)
mvaddstr curs_addstr(3X)
mvaddwstr curs_addwstr(3X)
mvchgat curs_attr(3X)
mvcur curs_terminfo(3X)
mvdelch curs_delch(3X)
mvderwin curs_window(3X)
mvget_wch curs_get_wch(3X)
mvget_wstr curs_get_wstr(3X)
mvgetch curs_getch(3X)
mvgetn_wstr curs_get_wstr(3X)
mvgetnstr curs_getstr(3X)
mvgetstr curs_getstr(3X)
mvhline curs_border(3X)
mvhline_set curs_border_set(3X)
mvin_wch curs_in_wch(3X)
mvin_wchnstr curs_in_wchstr(3X)
mvin_wchstr curs_in_wchstr(3X)
mvinch curs_inch(3X)
mvinchnstr curs_inchstr(3X)
mvinchstr curs_inchstr(3X)
mvinnstr curs_instr(3X)
mvinnwstr curs_inwstr(3X)
mvins_nwstr curs_ins_wstr(3X)
mvins_wch curs_ins_wch(3X)
mvins_wstr curs_ins_wstr(3X)
mvinsch curs_insch(3X)
mvinsnstr curs_insstr(3X)
mvinsstr curs_insstr(3X)
mvinstr curs_instr(3X)
mvinwstr curs_inwstr(3X)
mvprintw curs_printw(3X)
mvscanw curs_scanw(3X)
mvvline curs_border(3X)
mvvline_set curs_border_set(3X)
mvwadd_wch curs_add_wch(3X)
mvwadd_wchnstr curs_add_wchstr(3X)
mvwadd_wchstr curs_add_wchstr(3X)
mvwaddch curs_addch(3X)
mvwaddchnstr curs_addchstr(3X)
mvwaddchstr curs_addchstr(3X)
mvwaddnstr curs_addstr(3X)
mvwaddnwstr curs_addwstr(3X)
mvwaddstr curs_addstr(3X)
mvwaddwstr curs_addwstr(3X)
mvwchgat curs_attr(3X)
mvwdelch curs_delch(3X)
mvwget_wch curs_get_wch(3X)
mvwget_wstr curs_get_wstr(3X)
mvwgetch curs_getch(3X)
mvwgetn_wstr curs_get_wstr(3X)
mvwgetnstr curs_getstr(3X)
mvwgetstr curs_getstr(3X)
mvwhline curs_border(3X)
mvwhline_set curs_border_set(3X)
mvwin curs_window(3X)
mvwin_wch curs_in_wch(3X)
mvwin_wchnstr curs_in_wchstr(3X)
mvwin_wchstr curs_in_wchstr(3X)
mvwinch curs_inch(3X)
mvwinchnstr curs_inchstr(3X)
mvwinchstr curs_inchstr(3X)
mvwinnstr curs_instr(3X)
mvwinnwstr curs_inwstr(3X)
mvwins_nwstr curs_ins_wstr(3X)
mvwins_wch curs_ins_wch(3X)
mvwins_wstr curs_ins_wstr(3X)
mvwinsch curs_insch(3X)
mvwinsnstr curs_insstr(3X)
mvwinsstr curs_insstr(3X)
mvwinstr curs_instr(3X)
mvwinwstr curs_inwstr(3X)
mvwprintw curs_printw(3X)
mvwscanw curs_scanw(3X)
mvwvline curs_border(3X)
mvwvline_set curs_border_set(3X)
napms curs_kernel(3X)
newpad curs_pad(3X)
newterm curs_initscr(3X)
newwin curs_window(3X)
nl curs_outopts(3X)
nocbreak curs_inopts(3X)
nodelay curs_inopts(3X)
noecho curs_inopts(3X)
nofilter curs_util(3X)*
nonl curs_outopts(3X)
noqiflush curs_inopts(3X)
noraw curs_inopts(3X)
notimeout curs_inopts(3X)
overlay curs_overlay(3X)
overwrite curs_overlay(3X)
pair_content curs_color(3X)
pechochar curs_pad(3X)
pnoutrefresh curs_pad(3X)
prefresh curs_pad(3X)
printw curs_printw(3X)
putp curs_terminfo(3X)
putwin curs_util(3X)
qiflush curs_inopts(3X)
raw curs_inopts(3X)
redrawwin curs_refresh(3X)
refresh curs_refresh(3X)
reset_prog_mode curs_kernel(3X)
reset_shell_mode curs_kernel(3X)
resetty curs_kernel(3X)
resizeterm resizeterm(3X)*
restartterm curs_terminfo(3X)
ripoffline curs_kernel(3X)
savetty curs_kernel(3X)
scanw curs_scanw(3X)
scr_dump curs_scr_dump(3X)
scr_init curs_scr_dump(3X)
scr_restore curs_scr_dump(3X)
scr_set curs_scr_dump(3X)
scrl curs_scroll(3X)
scroll curs_scroll(3X)
scrollok curs_outopts(3X)
set_curterm curs_terminfo(3X)
set_term curs_initscr(3X)
setcchar curs_getcchar(3X)
setscrreg curs_outopts(3X)
setsyx curs_kernel(3X)
setterm curs_terminfo(3X)
setupterm curs_terminfo(3X)
slk_attr curs_slk(3X)*
slk_attr_off curs_slk(3X)
slk_attr_on curs_slk(3X)
slk_attr_set curs_slk(3X)
slk_attroff curs_slk(3X)
slk_attron curs_slk(3X)
slk_attrset curs_slk(3X)
slk_clear curs_slk(3X)
slk_color curs_slk(3X)
slk_init curs_slk(3X)
slk_label curs_slk(3X)
slk_noutrefresh curs_slk(3X)
slk_refresh curs_slk(3X)
slk_restore curs_slk(3X)
slk_set curs_slk(3X)
slk_touch curs_slk(3X)
standend curs_attr(3X)
standout curs_attr(3X)
start_color curs_color(3X)
subpad curs_pad(3X)
subwin curs_window(3X)
syncok curs_window(3X)
term_attrs curs_termattrs(3X)
termattrs curs_termattrs(3X)
termname curs_termattrs(3X)
tgetent curs_termcap(3X)
tgetflag curs_termcap(3X)
tgetnum curs_termcap(3X)
tgetstr curs_termcap(3X)
tgoto curs_termcap(3X)
tigetflag curs_terminfo(3X)
tigetnum curs_terminfo(3X)
tigetstr curs_terminfo(3X)
timeout curs_inopts(3X)
touchline curs_touch(3X)
touchwin curs_touch(3X)
tparm curs_terminfo(3X)
tputs curs_termcap(3X)
tputs curs_terminfo(3X)
trace curs_trace(3X)*
typeahead curs_inopts(3X)
unctrl curs_util(3X)
unget_wch curs_get_wch(3X)
ungetch curs_getch(3X)
ungetmouse curs_mouse(3X)*
untouchwin curs_touch(3X)
use_default_colors default_colors(3X)*
use_env curs_util(3X)
use_extended_names curs_extend(3X)*
use_legacy_coding legacy_coding(3X)*
vid_attr curs_terminfo(3X)
vid_puts curs_terminfo(3X)
vidattr curs_terminfo(3X)
vidputs curs_terminfo(3X)
vline curs_border(3X)
vline_set curs_border_set(3X)
vw_printw curs_printw(3X)
vw_scanw curs_scanw(3X)
vwprintw curs_printw(3X)
vwscanw curs_scanw(3X)
wadd_wch curs_add_wch(3X)
wadd_wchnstr curs_add_wchstr(3X)
wadd_wchstr curs_add_wchstr(3X)
waddch curs_addch(3X)
waddchnstr curs_addchstr(3X)
waddchstr curs_addchstr(3X)
waddnstr curs_addstr(3X)
waddnwstr curs_addwstr(3X)
waddstr curs_addstr(3X)
waddwstr curs_addwstr(3X)
wattr_get curs_attr(3X)
wattr_off curs_attr(3X)
wattr_on curs_attr(3X)
wattr_set curs_attr(3X)
wattroff curs_attr(3X)
wattron curs_attr(3X)
wattrset curs_attr(3X)
wbkgd curs_bkgd(3X)
wbkgdset curs_bkgd(3X)
wbkgrnd curs_bkgrnd(3X)
wbkgrndset curs_bkgrnd(3X)
wborder curs_border(3X)
wborder_set curs_border_set(3X)
wchgat curs_attr(3X)
wclear curs_clear(3X)
wclrtobot curs_clear(3X)
wclrtoeol curs_clear(3X)
wcolor_set curs_attr(3X)
wcursyncup curs_window(3X)
wdelch curs_delch(3X)
wdeleteln curs_deleteln(3X)
wecho_wchar curs_add_wch(3X)
wechochar curs_addch(3X)
wenclose curs_mouse(3X)*
werase curs_clear(3X)
wget_wch curs_get_wch(3X)
wget_wstr curs_get_wstr(3X)
wgetbkgrnd curs_bkgrnd(3X)
wgetch curs_getch(3X)
wgetn_wstr curs_get_wstr(3X)
wgetnstr curs_getstr(3X)
wgetstr curs_getstr(3X)
whline curs_border(3X)
whline_set curs_border_set(3X)
win_wch curs_in_wch(3X)
win_wchnstr curs_in_wchstr(3X)
win_wchstr curs_in_wchstr(3X)
winch curs_inch(3X)
winchnstr curs_inchstr(3X)
winchstr curs_inchstr(3X)
winnstr curs_instr(3X)
winnwstr curs_inwstr(3X)
wins_nwstr curs_ins_wstr(3X)
wins_wch curs_ins_wch(3X)
wins_wstr curs_ins_wstr(3X)
winsch curs_insch(3X)
winsdelln curs_deleteln(3X)
winsertln curs_deleteln(3X)
winsnstr curs_insstr(3X)
winsstr curs_insstr(3X)
winstr curs_instr(3X)
winwstr curs_inwstr(3X)
wmouse_trafo curs_mouse(3X)*
wmove curs_move(3X)
wnoutrefresh curs_refresh(3X)
wprintw curs_printw(3X)
wredrawln curs_refresh(3X)
wrefresh curs_refresh(3X)
wresize wresize(3X)*
wscanw curs_scanw(3X)
wscrl curs_scroll(3X)
wsetscrreg curs_outopts(3X)
wstandend curs_attr(3X)
wstandout curs_attr(3X)
wsyncdown curs_window(3X)
wsyncup curs_window(3X)
wtimeout curs_inopts(3X)
wtouchln curs_touch(3X)
wunctrl curs_util(3X)
wvline curs_border(3X)
wvline_set curs_border_set(3X)

戻り値

整数を返すルーチンは、ルーチンの解説で特に断りのない限り、失敗すると ERR を返し、成功して終了すれば、 ERR 以外の整数値を返します。

すべてのマクロは、 setscrregwsetscrreggetyxgetbegyxgetmaxyx を除いて w バージョンの値を返します。 setscrregwsetscrreggetyxgetbegyxgetmaxyx の返り値は、未定義です (すなわち、これらを、代入文の右側として使用すべきではありません)。

ポインタを返すルーチンは、エラーの場合 NULL を返します。

環境変数

次の環境シンボルは、 ncurses ライブラリの実行時の振る舞いをカスタマイズするために役立ちます。最も重要なものは、既に詳細に議論されました。
BAUDRATE
アプリケーションがファイルへの出力に変更したとき、デバッギングライブラリは、この環境シンボルをチェックします。シンボルの数値は、ボーレートのために使用されます。値が見つからないなら、 ncurses は、9600 を使用します。これによって、テスタは、ボーレートに依存するコストを考慮に入れる反復可能なテストケースを構築できます。
CC
設定されたとき、ロードされた terminfo エントリの command_character (すなわち、 cmdch ケーパビリティ) の発生を、このシンボルの値に変更します。ほとんどの terminfo エントリは、この機能を提供しません。
COLUMNS
画面の文字単位の幅を指定します。通常ウィンドウ環境で実装しているアプリケーションは、それらが実行しているウィンドウの幅を得ることができます。 COLUMNS 値も端末の画面サイズのいずれも利用可能でないなら、 ncurses は、terminfo データベースで指定されるサイズ (すなわち、 cols ケーパビリティ) を使用します。
利用者のアプリケーションが画面のための正確なサイズを使用することは重要です。利用者のアプリケーションが、NAWS (Negotiations About Window Size (ウィンドウサイズについての交渉)) を支持しないホストで実行されるか、または別のユーザとして一時的に実行しているという理由で、これは、常に実行できません。しかしながら、 COLUMNS および/または LINES を設定することは、ライブラリで使用されるオペレーティングシステムから得られる画面サイズを上書きします。
COLUMNS または LINES シンボルのいずれも単独で指定できます。これは、例えば、65 行の画面を一般的に指定する xterm のような、端末の記述の古い仕様の欠陥を回避するために主として役に立ちます。最良の結果のために、 linescols は、エミュレーションとして実行される端末のために端末の記述で指定されてはなりません。
画面サイズを決定するための (システムコールを含んで) 外部の環境のすべての使用を無効にするために、 use_env 関数を使用します。
ESCDELAY
ncurses が、例えば、ファンクションキーのような文字シーケンスを待つ、合計時間をミリ秒単位で指定します。デフォルト値は、1000 ミリ秒で、ほとんどの使用に十分です。しかしながら、それは、変数を普通でないアプリケーションに適応させます。
この値を変更したい最も一般的な事例は、例えば、ネットワーク上で実行している遅いホストで動作するためです。ホストが十分に速く文字を読み込むことができないなら、あたかも端末が十分に速く文字を送信しなかったような同じ効果があります。ライブラリは、それでもタイムアウトに出会います。
xterm マウスイベントは、xterm から受信された文字シーケンスから組み立てられることに注意してください。使用者のアプリケーションが重いマルチクリックを使用するなら、タイムアウトが、個別のクリックと同様に組み立てられるマルチクリックイベントに適応されるので、このデフォルト値を延長したいと思うかもしれません。
環境変数に加えて、この実装は、同じ名前でグローバル変数を提供します。移植性のあるアプリケーションは、いずれかの形式の ESCDELAY の存在に依存するるべきではありませんが、アプリケーションをコンパイルするとき、グローバル変数ではなく環境変数を設定することは、問題を起こしません。
HOME
利用者のホームディレクトリを ncurses に伝えます。それは、つぎのように補助端末の記述を読み込み書き込みできる場所です:
$HOME/.termcap
 
$HOME/.terminfo
LINES
COLUMNS のように、画面の文字単位の高さを指定します。詳細な記述については、COLUMNS を参照してください。
MOUSE_BUTTONS_123
これは、OS/2 EMX ポートのみに適応されます。それは、マウスのボタンの順序を指定します。 OS/2 は、他のプラットフォームから 3 ボタンマウスに一貫性なく番号を付けます:
 
1 = 左
 
2 = 右
 
3 = 中間
 
このシンボルは、使用者にマウスをカスタマイズさせます。シンボルは、任意の順序、例えば、123 または 321 のように、 3 つの数値 1-3 でなければなりません。指定されないなら、 ncurses は、132 を使用します。
NCURSES_ASSUMED_COLORS
端末のデフォルト色が黒で白い (white-on-black) ( default_colors(3X) 参照) というコンパイルされた仮定を上書きします。利用者は、2 つの要素のリストを示すことによって、この環境変数でフォアグランドとバックグラウンドの色の値を設定することができます: フォアグランド、バックグラウンド。例えば、色に関して何も仮定しないように ncurses に伝えるためには、これを "-1,-1"に設定します。黒で緑 (green-on-black) にするためには、"2,0"に設定します。 0 から terminfo max_colors 値までのあらゆる正の値が許されます。
NCURSES_GPM_TERMS
これは GPM インタフェースを使用するために設定された ncurses だけに適用されます。
存在しているなら、環境変数は、TERM 環境変数がマッチする 1 つ以上の端末名のリストです。空の値にそれを設定すると、GPM インタフェースを無効にします。 xterm などの組み込みサポートに使用します。
環境変数がなく、TERM が "linux"を含んでいるなら、 ncurses は、GPM をオープンすることを試みます。
NCURSES_NO_HARD_TABS
ncurses は、カーソルの動作の最適化の一部としてタブを使用します。ある場合には、利用者の端末ドライバは、適切にこれらを扱わないかもしれません。この環境変数の機能を無効にするように設定します。また、利用者は、問題を避けるために stty 設定を調整することができます。
NCURSES_NO_MAGIC_COOKIES
いくつかの端末は、適切にハイライトと他のビデオ属性の表示を行うために特別な取り扱いを必要とする魔法のクッキ (magic-cookie) 機能を使用します。利用者は、この環境変数を設定することによって、これらの端末のためのハイライトを完全に抑制することができます。
NCURSES_NO_PADDING
terminfo データベースのほとんどの端末の記述は、実際の "ハードウェア"端末のために書かれています。多くの人々は、ウィンドウ環境で実行される端末エミュレータを使用し、 curses ベースのアプリケーションを使用します。端末のエミュレータは、ハードウェア端末の重要な形状をすべて複写することができますが、それらは、同じ制限を持っていません。使用者のアプリケーションの観点からハードウェア端末の主要な制限は、データフローの管理、すなわちタイミングです。ハードウェア端末が (フロー制御を行う) 端末のコンセントレータへのインタフェースで接続されないなら、それ (または、使用者のアプリケーション) は、オーバランを防止してデータフローを管理しなければなりません。最も安価な解決策 (ハードウェアコストではなく) は、使用者のプログラムのために端末が、ディスプレイをクリアするように、ゆっくり行う操作の後に一時停止することによって、これを行うことです。
結果として、多くの端末の記述 (vt100 を含んで) は、遅延時間を埋め込みます。これらの記述を使用したいかもしれませんが、実行効率のペナルティ (不利益) を払いたくありません。
NCURSES_NO_PADDING シンボルを強制的な詰め物を行う (padding) ほかはすべて無効にするように設定します。強制的な詰め物 (padding) は、 flash のような特別の制御シーケンスの一部として使用されます。
NCURSES_NO_SETBUF
通常、 ncurses は、端末の初期化の間にバッファリングされた出力を有効にします。これは、実行効率の理由のために (SVr4 curses などで) 行なわれます。 ncurses と特定のアプリケーションの両方のテストの目的のために、この機能は、オプションとされています。 NCURSES_NO_SETBUF 変数を設定すると、オリジナルの (通常、行をバッファリングする) モードの出力を中止して、バッファリングされた出力を無効にします。
NCURSES_NO_UTF8_ACS
初期化の間に、 ncurses ライブラリは、terminfo に記述された VT100 の行描画 (と、対応する代わりの文字を設定するケーパビリティ) が不足していることが知られている、特別な場合をチェックします。特に、UTF-8 ロケールで実行しているき、Linux コンソールエミュレータと GNU 画面プログラムは、これらを無視します。 ncurses は、これらのために TERM 環境変数をチェックします。他の特別な場合のために、利用者は、この環境変数を設定するべきです。これを行うことは、VT100 の行描画グリフ (glyph) に対応する Unicode 値を使用するように ncurses に伝えます。それは、前述の特別な場合のために動作し、端末エミュレータのように動作します。
この変数を設定するとき、利用者は、0 でない値に設定するべきです。それを、0 (または、非数値) に設定すると、Linux と画面のための特別なチェックは、無効となります。
NCURSES_TRACE
初期化の間に、 ncurses デバッグライブラリは、NCURSES_TRACE シンボルをチェックします。それが数値として定義されるなら、 ncurses は、引数としてその値を使用して、 trace 関数を呼び出します。
curses.h で定義される引数の値は、いくつかのタイプの情報を提供します。トレースが有効にされて実行しているとき、利用者のアプリケーションは、ファイル trace をカレントディレクトリに書き込みます。
TERM
利用者の端末タイプを示します。各端末タイプは、区別されますが、多くは、類似しています。
TERMCAP
ncurses ライブラリが termcap サポートで設定されているなら、 ncurses は、terminfo データベースにおいて利用可能でないなら、 termcap の形式の端末記述をチェックします。
TERMCAP シンボルは、(改行を取り除かれた) 端末記述、または TERM シンボルによって示される情報がどこに存在するか伝えるファイル名のいずれかを含んでいます。いずれにしても、その設定は、この情報のための通常の場所、例えば、/etc/termcap を無視するように ncurses に指示します。
TERMINFO
ncurses が利用者の端末記述を検索するディレクトリを無効にします。これは、最も単純ですが、ディレクトリのリストを変更するただ一つの方法ではありません。ディレクトリの完全なリストは、次の順序です:
-
ncurses が書き込んだ最後のディレクトリがあるなら、最初に検索されます
-
TERMINFO シンボルによって指定されたディレクトリ
-
$HOME/.terminfo
-
TERMINFO_DIRS シンボルにリストされたディレクトリ
-
名前が設定され、ncurses ライブラリにコンパイルされた 1 つ以上のディレクトリ、例えば、/usr/share/misc/terminfo
TERMINFO_DIRS
端末記述を検索するためのディレクトリのリストを指定します。リストは、Unix では、コロン (すなわち ":")、OS/2 EMX では、セミコロンで区切られます。端末記述のすべては、端末名の最初の 1 文字で指定されたサブディレクトリをその場所に作る terminfo の形式です。
TERMPATH
TERMCAP がファイル名を保持しないなら、 ncurses は、TERMPATH シンボルをチェックします。これは、Unix では、空白またはコロン (すなわち ":")、OS/2 EMX では、セミコロンで区切られたファイル名のリストです。 TERMPATH シンボルが設定されていないなら、 ncurses は、順番にファイル /etc/termcap、/usr/share/misc/termcap と $HOME/.termcap を調べます。

ライブラリは、現在のユーザがスーパユーザ (root) であるとき、またはアプリケーションが setuid または setgid のパーミッションを使用するなら、次の変数を無視するように設定されます: $HOME と同様に、$TERMINFO、$TERMINFO_DIRS、$TERMPATH。

代わりの設定

ncurses を構築するとき、使用される設定スクリプトオプションによって、いくつかの異なった設定が可能です。 ncurses を使用するアプリケーションの開発者にとって、効果が目に見えるいくつかの主要なオプションがあります:
--disable-overwrite
ncurses のための標準のインクルードは、 書式に記述されています:
 
#include <curses.h>
このオプションは、 ncurses がコンピュータの curses の主要な実装でないとき、ファイル名の衝突を避けるために使用されます。 ncurses が上書きを無効にしてインストールされるなら、サブディレクトリにヘッダを置きます、例えば、
 
#include <ncurses/curses.h>
また、シンボリックリンクを省略することによって、利用者は、実行形式を構築するために -lcurses を使用することができます。
--enable-widec
設定スクリプトは、ライブラリの名前を変更して、 ( --disable-overwrite オプションが使用されるなら) 異なったサブディレクトリにヘッダファイルを置きます。すべてのライブラリ名の先頭に "w"をつけます、すなわち、
 
-lncurses
の代わりに、次でリンクします。
 
-lncursesw
また、利用者は、拡張 (ワイド文字) 関数を使用するためにワイド文字ライブラリをコンパイルするとき、 _XOPEN_SOURCE_EXTENDED を定義しなければなりません。ワイド文字ライブラリのためにインストールされる curses.h ファイルは、通常のライブラリヘッダと互換性があるように設計されています。 WINDOW 構造体のサイズのみ異なり、ほとんどのアプリケーションは、 WINDOW へのポインタを単に要求することはありません。ヘッダが上書きを許してインストールされるなら、ワイド文字のライブラリのヘッダは、アプリケーションが、同じセットのヘッダからいずれかのライブラリを使用して構築できるように最後にインストールされるべきです。
--with-shared
--with-normal
--with-debug
--with-profile
共有と通常の (静的な) ライブラリ名は、それらの接尾辞、例えば、 libncurses.solibncurses.a によって異なります。デバッグとプロファイリングのライブラリは、それぞれ基本の名前に "_g"と "_p"を追加します、例えば、 libncurses_g.alibncurses_p.a
--with-trace
trace 関数は、通常デバッグライブラリにありますが、共有ライブラリで、これを設定するために時々役に立ちます。 Configure (設定) スクリプトは、常にデバッグライブラリにあると仮定するのではなく、関数が存在するかどうかチェックするべきです。

関連ファイル

/usr/share/tabset
端末ケーパビリティデータベース /usr/share/misc/terminfo のための初期化ファイルを含んでいるディレクトリ。

関連項目

terminfo(5) と詳細なルーチンの記述については、"curs_"で始まる名前の関連するページ。

拡張機能

ncurses ライブラリを、オプション ( -DUSE_GETCAP) でコンパイルできます、それは、端末のセットアップコードが TERM に対応する terminfo エントリを見つけることができないなら、古いスタイルの /etc/termcap ファイルに戻ります。中核と起動時のサイクルでの重要なコストで、 ncurses 起動時のコードで本質的に termcap コンパイラ全体を含んでいるので、この機能の使用は、勧められません。

ncurses ライブラリは、特定の端末 (xterm を含んで) でのマウスイベントを捕獲するための機能を含んでいます。詳細については、 curs_mouse(3X) マニュアルページを参照してください。

ncurses ライブラリは、例えば、xterm で実行するとき、ウィンドウサイズ変更イベントに応答するための機能を含んでいます。詳細については、 resizeterm(3X) と wresize(3X) マニュアルページを参照してください。さらに、ライブラリは、SIGWINCH ハンドラで設定できます。

ncurses ライブラリは、アプリケーションの設計者が実行時に追加のキーシーケンスを定義することができることによって、端末のファンクションキーのケーパビリティの固定の設定を拡張します。詳細については、 define_key(3X), key_defined(3X) と keyok(3X) マニュアルページを参照してください。

ncurses ライブラリは、アプリケーションがそのオリジナルの前景と背景色に端末をリセットすることができる、ISO-6429 SGR 39 と SGR 49 制御を実装する端末のケーパビリティを有効に使うことができます。ユーザの観点から、アプリケーションは、色の対比に関してよりよい制御を提供して、色が独立して設定される背景上の色のついたテキストを描画することができます。詳細については、 default_colors(3X) マニュアルページを参照してください。

ncurses ライブラリは、端末デバイスに付けられたプリンタにアプリケーションの出力を向けるための機能を含んでいます。詳細については、 curs_print(3X) マニュアルページを参照してください。

移植性

ncurses ライブラリは、XSI Curses と基本的なレベルで整合性があることを目的としています。 EXTENDED XSI Curses 機能 (色サポートを含んで) がサポートされています。

小数の局所的な差分 (すなわち、XSI Curses と ncurses 呼び出しの間の個別の差) は、ライブラリマニュアルページの 移植性セクションに記述されています。

また、この実装は、次のいくつかの拡張を含んでいます:

ルーチン has_key は、XPG4 の一部ではありませんし、SVr4 にもありません。詳細については、 curs_getch(3X) マニュアルページを参照してください。

ルーチン slk_attr は、XPG4 の一部ではありませんし、SVr4 にもありません。詳細については、 curs_slk(3X) マニュアルページを参照してください。

マウスインタフェースに関連するルーチン getmouse, mousemask, ungetmouse, mouseintervalwenclose は、 XPG4 の一部ではありませんし、SVr4 にもありません。詳細については、 curs_mouse(3X) マニュアルページを参照してください。

ルーチン mcprint は、あらゆる以前の curses 実装にありませんでした。詳細については、 curs_print(3X) マニュアルページを参照してください。

ルーチン wresize は、XPG4 の一部ではありませんし、SVr4 にもありません。詳細については、 wresize(3X) マニュアルページを参照してください。

アプリケーションプログラムから WINDOW 構造体の内部の詳細を隠すことができます。 is_scrollok などの考察については、 curs_opaque(3X) を参照してください。

歴史的な curses バージョンでは、ケーパビリティ crindcub1fftab に埋め込まれた遅延は、UNIX の tty ドライバ中の対応する遅延ビットを活性化しました。この実装では、すべての埋め込み (padding) は、ヌル (NUL) バイトを送信することによって行われます。この方法は、わずかにより高価ですが、UNIX カーネルへのインタフェースを著しく狭くし、相応してパッケージの移植性を増加させます。

ヘッダファイル <curses.h> は、自動的にヘッダファイル <stdio.h><unctrl.h> を含みます。

ncurses プログラムからの標準出力が tty でないものに出力先変更されるなら、画面の更新は、標準エラーに向けられます。これは、AT&T System V Release 3 の curses に文書化されていない機能です。

作者

Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey。 Pavel Curtis による pcurses に基づいています。