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 マニュアルページのここと他のところで記述されたルーチンで操作されます。それらの中で、最も基本的なルーチンは、 move と addch です。これらのルーチンのより一般的なバージョンは、ユーザがウィンドウを指定することを可能にして、 w で始まる名前で含まれています。 w で始まらないルーチンは、 stdscr に影響します。
ウィンドウを操作するためのルーチンを使用した後、 refresh が呼び出され、ユーザの CRT 画面を stdscr のように見せるように curses に伝えます。ウィンドウの文字は、文字についての他の情報は、それぞれの文字とともに格納できるように、実際のところタイプ chtype (文字と属性データ) です。
pads と呼ばれる特殊なウィンドウもまた操作できます。それらは、画面のサイズに制約されず、その内容を完全に表示する必要のないウィンドウです。より詳細については、 curs_pad(3X) を参照してください。
画面上に文字を描画することに加えて、ビデオ属性と色は、表示増強をサポートしている端末で、下線、リバース (反転) ビデオまたは色のようなモードで文字を表示することをサポートしています。行描画文字を出力するように指定することもできます。入力時に、 curses は、エスケープシーケンスを送出する矢印キーとファンクションキーを単一の値に変換することもできます。ビデオ属性、行描画文字と入力値は、 A_REVERSE、 ACS_HLINE と KEY_LEFT のような <curses.h> に定義された名前を使用します。
環境変数 LINES と COLUMNS が設定されるなら、またはプログラムがウィンドウ環境で実行しているなら、環境中の行とカラムの情報は、 terminfo によって読み込まれる情報を上書きします。これは、例えば、画面のサイズが変更可能な、AT&T 630 レイヤで実行しているプログラムに影響します ( 環境変数参照)。
環境変数 TERMINFO が定義されているなら、 curses を使用するあらゆるプログラムは、標準の場所をチェックする前にローカル端末定義をチェックします。例えば TERM が att4424 に設定されているなら、コンパイルされた端末定義は、次の場所で見つけられます。
/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 の書き込みパーミッションが利用可能でないときに役に立ちます。
整数変数 LINES と COLS は、 <curses.h> に定義され、画面のサイズで initscr によって満たされます。定数 TRUE と FALSE は、それぞれ、値 1 と 0 があります。
また、 curses ルーチンは、ゴミを含む画面をクリアしたり再描画するようないくらか低レベルの操作のために使用される WINDOW * 変数 curscr を定義します。ほんの少しのルーチンでのみ curscr を使用することができます。
ルーチン名と引数名
多くの curses ルーチンは、2 つ以上のバージョンがあります。 w が前に付いたルーチンは、ウィンドウ引数を要求します。 p が前に付いたルーチンには、詰め物 (pad) 引数を要求します。接頭辞のないものは、一般的に stdscr を使用します。mv が前に付いたルーチンは、適切なアクションを実行する前に移動するために y と x 座標を要求します。 mv ルーチンは、別のルーチンを呼び出す前に move を呼び出すこと意味します。座標 y は、常に (ウィンドウの) 行を参照し、座標 x は、常にカラムを参照します。左上の角は、(1,1) ではなく、常に (0,0) です。
mvw が前に付いたルーチンは、ウィンドウ引数と x と y 座標の両方を取ります。ウィンドウ引数は、常に座標の前に指定されます。
どの場合でも、 win は、影響を受けるウィンドウで、 pad は、影響を受ける詰め物 (pad) です。 win と pad は、常にタイプ WINDOW へのポインタです。
オプション設定ルーチンは、値 TRUE または FALSE のブール値フラグ bf を要求します。 bf は、常にタイプ bool です。 WINDOW, SCREEN, bool と chtype のような、ライブラリルーチンで使用されるデータタイプのほとんどは、 <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 以外の整数値を返します。すべてのマクロは、 setscrreg、 wsetscrreg、 getyx、 getbegyx と getmaxyx を除いて w バージョンの値を返します。 setscrreg、 wsetscrreg、 getyx、 getbegyx と getmaxyx の返り値は、未定義です (すなわち、これらを、代入文の右側として使用すべきではありません)。
ポインタを返すルーチンは、エラーの場合 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 のような、端末の記述の古い仕様の欠陥を回避するために主として役に立ちます。最良の結果のために、 lines と cols は、エミュレーションとして実行される端末のために端末の記述で指定されてはなりません。
- 画面サイズを決定するための (システムコールを含んで) 外部の環境のすべての使用を無効にするために、 use_env 関数を使用します。
- ESCDELAY
- ncurses が、例えば、ファンクションキーのような文字シーケンスを待つ、合計時間をミリ秒単位で指定します。デフォルト値は、1000 ミリ秒で、ほとんどの使用に十分です。しかしながら、それは、変数を普通でないアプリケーションに適応させます。
- この値を変更したい最も一般的な事例は、例えば、ネットワーク上で実行している遅いホストで動作するためです。ホストが十分に速く文字を読み込むことができないなら、あたかも端末が十分に速く文字を送信しなかったような同じ効果があります。ライブラリは、それでもタイムアウトに出会います。
- xterm マウスイベントは、xterm から受信された文字シーケンスから組み立てられることに注意してください。使用者のアプリケーションが重いマルチクリックを使用するなら、タイムアウトが、個別のクリックと同様に組み立てられるマルチクリックイベントに適応されるので、このデフォルト値を延長したいと思うかもしれません。
- 環境変数に加えて、この実装は、同じ名前でグローバル変数を提供します。移植性のあるアプリケーションは、いずれかの形式の ESCDELAY の存在に依存するるべきではありませんが、アプリケーションをコンパイルするとき、グローバル変数ではなく環境変数を設定することは、問題を起こしません。
- HOME
- 利用者のホームディレクトリを ncurses に伝えます。それは、つぎのように補助端末の記述を読み込み書き込みできる場所です:
-
$HOME/.termcap
- LINES
- COLUMNS のように、画面の文字単位の高さを指定します。詳細な記述については、COLUMNS を参照してください。
- MOUSE_BUTTONS_123
-
これは、OS/2 EMX ポートのみに適応されます。それは、マウスのボタンの順序を指定します。 OS/2 は、他のプラットフォームから 3 ボタンマウスに一貫性なく番号を付けます:
- 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 のための標準のインクルードは、 書式に記述されています:
- このオプションは、 ncurses がコンピュータの curses の主要な実装でないとき、ファイル名の衝突を避けるために使用されます。 ncurses が上書きを無効にしてインストールされるなら、サブディレクトリにヘッダを置きます、例えば、
- また、シンボリックリンクを省略することによって、利用者は、実行形式を構築するために -lcurses を使用することができます。
- --enable-widec
- 設定スクリプトは、ライブラリの名前を変更して、 ( --disable-overwrite オプションが使用されるなら) 異なったサブディレクトリにヘッダファイルを置きます。すべてのライブラリ名の先頭に "w"をつけます、すなわち、
- の代わりに、次でリンクします。
- また、利用者は、拡張 (ワイド文字) 関数を使用するためにワイド文字ライブラリをコンパイルするとき、 _XOPEN_SOURCE_EXTENDED を定義しなければなりません。ワイド文字ライブラリのためにインストールされる curses.h ファイルは、通常のライブラリヘッダと互換性があるように設計されています。 WINDOW 構造体のサイズのみ異なり、ほとんどのアプリケーションは、 WINDOW へのポインタを単に要求することはありません。ヘッダが上書きを許してインストールされるなら、ワイド文字のライブラリのヘッダは、アプリケーションが、同じセットのヘッダからいずれかのライブラリを使用して構築できるように最後にインストールされるべきです。
- --with-shared
- --with-normal
- --with-debug
- --with-profile
- 共有と通常の (静的な) ライブラリ名は、それらの接尾辞、例えば、 libncurses.so と libncurses.a によって異なります。デバッグとプロファイリングのライブラリは、それぞれ基本の名前に "_g"と "_p"を追加します、例えば、 libncurses_g.a と libncurses_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, mouseinterval と wenclose は、 XPG4 の一部ではありませんし、SVr4 にもありません。詳細については、 curs_mouse(3X) マニュアルページを参照してください。
ルーチン mcprint は、あらゆる以前の curses 実装にありませんでした。詳細については、 curs_print(3X) マニュアルページを参照してください。
ルーチン wresize は、XPG4 の一部ではありませんし、SVr4 にもありません。詳細については、 wresize(3X) マニュアルページを参照してください。
アプリケーションプログラムから WINDOW 構造体の内部の詳細を隠すことができます。 is_scrollok などの考察については、 curs_opaque(3X) を参照してください。
歴史的な curses バージョンでは、ケーパビリティ cr、 ind、 cub1、 ff と tab に埋め込まれた遅延は、UNIX の tty ドライバ中の対応する遅延ビットを活性化しました。この実装では、すべての埋め込み (padding) は、ヌル (NUL) バイトを送信することによって行われます。この方法は、わずかにより高価ですが、UNIX カーネルへのインタフェースを著しく狭くし、相応してパッケージの移植性を増加させます。
注
ヘッダファイル <curses.h> は、自動的にヘッダファイル <stdio.h> と <unctrl.h> を含みます。ncurses プログラムからの標準出力が tty でないものに出力先変更されるなら、画面の更新は、標準エラーに向けられます。これは、AT&T System V Release 3 の curses に文書化されていない機能です。