日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
ncurses(3X) ncurses(3X)
名称
ncurses - CRT 画面操作と最適化パッケージ
書式
#include <curses.h>
解説
ncurses ライブラリルーチンは、合理的な最適化で文字画面を更新する端末に
依存しない方法を使用者に与えます。この実装は、"新しい curses" (ncurses)
で、中断されていた、4.4BSD の古典 (クラシック) curses の代わりに認めら
れました。これは、ncurses バージョン 6.2 (パッチ 20200215) について説明
しています。
ncurses ライブラリは、System V Release 4 UNIX の curses ライブラリと
(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(3X) は、終了する前に呼び出されな
ければなりません。
(ほとんどの対話型で画面指向のプログラムで望まれる) エコーせずに 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(3X) が呼び出さ
れ、ユーザの 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 として格納され
ます。
setcchar(3X) と getcchar(3X) 関数は、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)
alloc_pair new_pair(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)
extended_color_content curs_color(3X)*
extended_pair_content curs_color(3X)*
extended_slk_color curs_slk(3X)*
filter curs_util(3X)
find_pair new_pair(3X)*
flash curs_beep(3X)
flushinp curs_util(3X)
free_pair new_pair(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_extended_color curs_color(3X)*
init_extended_pair 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_pad curs_opaque(3X)*
is_scrollok curs_opaque(3X)*
is_subwin 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)
resize_term resizeterm(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)
tiparm curs_terminfo(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)*
use_tioctl curs_util(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)
wgetdelay curs_opaque(3X)*
wgetn_wstr curs_get_wstr(3X)
wgetnstr curs_getstr(3X)
wgetparent curs_opaque(3X)*
wgetscrreg curs_opaque(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 以外の整数値を返します。
原則として、null ポインタのためのルーチンのチェックは、パラメータとして
渡され、エラーとしてこれを扱います。
すべてのマクロは、setscrreg、wsetscrreg、getyx、getbegyx と getmaxyx を
除いて w バージョンの値を返します。setscrreg、wsetscrreg、getyx、
getbegyx と getmaxyx の返り値は、未定義です (すなわち、これらを、代入文
の右側として使用すべきではありません)。
ポインタを返すルーチンは、エラーの場合 NULL を返します。
環境変数
次の環境シンボルは、ncurses ライブラリの実行時の振る舞いをカスタマイズ
するために役立ちます。最も重要なものは、既に詳細に議論されました。
CC コマンド文字
設定されたとき、ロードされた terminfo エントリの command_character (す
なわち、cmdch ケーパビリティ) の発生を、この変数の値に変更します。ほと
んどの terminfo エントリは、この機能を提供しません。
また、この名前は、C コンパイラの名前を表わすために開発環境で使用される
ので、ncurses は、たまたま単一文字ではなかったら、それを無視します。
BAUDRATE
デバッグライブラリは、アプリケーションがファイルに出力をリダイレクトし
たとき、この環境変数をチェックします。変数の数の値は、baudrate のために
使用されます。値が見つけられないなら、ncurses は、9600 を使用します。こ
れによって、テスタは、baudrate に依存するコストを考慮に入れて繰り返し可
能なテストケーズを構築することができます。
カラム
画面の文字単位の幅を指定します。通常ウィンドウ環境で実装しているアプリ
ケーションは、それらが実行しているウィンドウの幅を得ることができます。
COLUMNS 値も端末の画面サイズのいずれも利用可能でないなら、ncurses は、
terminfo データベースで指定されるサイズ (すなわち、cols ケーパビリティ)
を使用します。
利用者のアプリケーションが画面のための正確なサイズを使用することは重要
です。利用者のアプリケーションが、NAWS (Negotiations About Window Size
(ウィンドウサイズについての交渉)) を支持しないホストで実行されるか、ま
たは別のユーザとして一時的に実行しているという理由で、これは、常に実行
できません。しかしながら、COLUMNS および/または LINES を設定すること
は、ライブラリで使用されるオペレーティングシステムから得られる画面サイ
ズを上書きします。
COLUMNS または LINES シンボルのいずれも単独で指定できます。これは、例え
ば、65 行の画面を一般的に指定する xterm のような、端末の記述の古い仕様
の欠陥を回避するために主として役に立ちます。最良の結果のために、lines
と cols は、エミュレーションとして実行される端末のために端末の記述で指
定されてはなりません。
画面サイズを決定するための (システムコールを含まず) 外部の環境変数のす
べての使用を無効にするために use_env 関数を使用します。システムコールか
ら得られた画面サイズまたは端末のデータベースと一致する COLUMNS または
LINES を更新するために use_tioctl 関数を使用します。
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_CONSOLE2
これは、ncurses の MinGW ポートにだけ適用します。
Console2 プログラムの Microsoft Console API 呼び出し
CreateConsoleScreenBuffer の処理は、不完全です。これを使用するアプリ
ケーションは、ハングアップします。しかしながら、座標のマップによるこの
呼び出しのアクションをシミュレーションすることが可能で、オリジナルの画
面内容を明示的に保存し、復元します。環境変数 NCGDB を設定することは、同
じ効果があります。
NCURSES_GPM_TERMS
これは、GPM インタフェースを使用するために設定された ncurses だけに適用
されます。
存在しているなら、環境変数は、TERM 環境変数が一致する 1 つ以上の端末名
のリストです。空の値にそれを設定すると、GPM インタフェースを無効にしま
す。xterm などの組み込みサポートに使用します。
環境変数がなく、TERM が "linux" を含んでいるなら、ncurses は、GPM を
オープンすることを試みます。
NCURSES_NO_HARD_TABS
ncurses は、カーソルの動作の最適化の一部としてタブを使用します。ある場
合には、利用者の端末ドライバは、適切にこれらを扱わないかもしれません。
この環境変数の機能を無効にするように設定します。また、利用者は、問題を
避けるために stty 設定を調整することができます。
NCURSES_NO_MAGIC_COOKIE
いくつかの端末は、適切にハイライトと他のビデオ属性の表示を行うために特
別な取り扱いを必要とする魔法のクッキ (magic-cookie) 機能を使用します。
利用者は、この環境変数を設定することによって、これらの端末のためのハイ
ライトを完全に抑制することができます。
NCURSES_NO_PADDING
terminfo データベースのほとんどの端末の記述は、実際の "ハードウェア" 端
末のために書かれています。多くの人々は、ウィンドウ環境で実行される端末
エミュレータを使用し、curses ベースのアプリケーションを使用します。端末
のエミュレータは、ハードウェア端末の重要な形状をすべて複写することがで
きますが、それらは、同じ制限を持っていません。使用者のアプリケーション
の観点からハードウェア端末の主要な制限は、データフローの管理、すなわち
タイミングです。ハードウェア端末が (フロー制御を行う) 端末のコンセント
レータへのインタフェースで接続されないなら、それ (または、使用者のアプ
リケーション) は、オーバランを防止してデータフローを管理しなければなり
ません。最も安価な解決策 (ハードウェアコストではなく) は、使用者のプロ
グラムのために端末が、ディスプレイをクリアするように、ゆっくり行う操作
の後に一時停止することによって、これを行うことです。
結果として、多くの端末の記述 (vt100 を含んで) は、遅延時間を埋め込みま
す。これらの記述を使用したいかもしれませんが、実行効率のペナルティ (不
利益) を払いたくありません。
NCURSES_NO_PADDING 環境変数を強制的な詰め物を行う (padding) ほかは、す
べて無効にするように設定します。強制的な詰め物 (padding) は、flash のよ
うな特別の制御シーケンスの一部として使用されます。
NCURSES_NO_SETBUF
この設定は、時代遅れです。変更の前に
• 5.9 パッチ 20120825 で開始されました、そして
• 5.9 パッチ 20130126 を通して継続されました
ncurses は、端末の初期化の間にバッファリングされた出力を有効にしまし
た。これは、性能の理由のために (SVr4 curses でのように) 行われました。
ncurses と特定のアプリケーションの両方のテストの目的のために、この機能
は、オプションになりました。NCURSES_NO_SETBUF 変数の設定は、オリジナル
(通常、行のバッファリング) モードで出力を残して、出力のバッファリングを
無効にしました。
現在の実装では、ncurses は、それ自体のバッファリングを実行し、この回避
方法を要求しません。それは、標準出力をバッファリングを修正しません。
変更の理由は、割り込みと他のシグナルのための振る舞いをより強固にするこ
とでした。1 つの難点は、特定の従来的でないプログラムが ncurses 呼び出し
がある、通常の stdio 呼び出しと (通常) 作業を混合するであろうということ
です。これは、ncurses がバッファリングされた標準出力を使用せずに、(同じ
ファイル記述子へ) それ自体の出力を使用しているので、もはや可能ではあり
ません。特殊な場合として、putp のような低レベルの呼び出しは、まだ標準出
力を使用します。しかし、高レベルの curses 呼び出しは、行いません。
NCURSES_NO_UTF8_ACS
初期化の間に、ncurses ライブラリは、terminfo に記述された VT100 の行描
画 (と、対応する代わりの文字を設定するケーパビリティ) が不足しているこ
とが知られている、特別な場合をチェックします。特に、UTF-8 ロケールで実
行しているき、Linux コンソールエミュレータと GNU 画面プログラムは、これ
らを無視します。ncurses は、これらのために TERM 環境変数をチェックしま
す。他の特別な場合のために、利用者は、この環境変数を設定するべきです。
これを行うことは、VT100 の行描画グリフ (glyph) に対応する Unicode 値を
使用するように ncurses に伝えます。それは、前述の特別な場合のために動作
し、端末エミュレータのように動作します。
この変数を設定するとき、利用者は、0 でない値に設定するべきです。それ
を、0 (または、非数値) に設定すると、"linux" と "画面" のための特別な
チェックは、無効となります。
環境変数の代わりとして、ncurses は、拡張 terminfo ケーパビリティ U8 を
チェックします。これは、tic -x を使用してコンパイルすることができる数値
のケーパビリティです。例えば、
# linux コンソール, 動作を提供するためにパッチされているなら
# 対応するフォントで, VT100 シフトイン/シフトアウト.
linux-vt100|linux console with VT100 line-graphics,
U8#0, use=linux,
# 偽に設定された vt100Graphics リソースがある uxterm
xterm-utf8|xterm relying on UTF-8 line-graphics,
U8#1, use=xterm,
名前 "U8" は、ncurses の termcap インタフェースを使用するアプリケーショ
ンによって、それが使用されることを許可する 2 文字に選ばれます。
NCURSES_TRACE
初期化の間に、ncurses デバッグライブラリは、NCURSES_TRACE 環境変数を
チェックします。それが数値として定義されるなら、ncurses は、引数として
その値を使用して、trace 関数を呼び出します。
curses.h で定義される引数の値は、いくつかのタイプの情報を提供します。ト
レースが有効にされて実行しているとき、利用者のアプリケーションは、ファ
イル trace をカレントディレクトリに書き込みます。
詳細については、curs_trace(3X) を参照してください。
TERM
利用者の端末タイプを示します。各端末タイプは、区別されますが、多くは、
類似しています。
TERM は、アプリケーションが動作可能な端末の記述を見つけることを手助ける
ために、端末エミュレータによって共通に設定されます。それらのいくつか
は、正確な適合ではなく、良く知られている近似、例えば、"ansi", "vt100",
"xterm"。まれにではなく、利用者のアプリケーションは、そのアプローチで問
題があります、例えば、間違ったファンクションキー定義。
利用者が環境に TERM を設定するなら、端末エミュレータの操作で効果があり
ません。それは、端末内で動作する方法 (way) アプリケーションに影響するだ
けです。同様に、(まれな例外である xterm) 一般的な規則として、パラメータ
または設定値として TERM 指定することができ、端末エミュレータは、その設
定と一致するそれらの振る舞いを変更しません。
TERMCAP
ncurses ライブラリが termcap のサポートで設定されたなら、ncurses は、
terminfo データベースで利用可能ではないなら、termcap 形式の端末の記述を
チェックします。
TERMCAP 環境変数は、端末の記述 (改行が、取り除かれて)、または情報が存在
する TERM 環境変数によって示されるところを伝えるファイル名のいずれかを
含んでいます。いずれにしても、それを設定することは、この情報、例えば、
/etc/termcap のための通常の場所を無視するように ncurses に指示します。
TERMINFO
複数の端末データベースから読み込みために、ncurses を設定することができ
ます。TERMINFO 変数は、デフォルト端末データベースのための位置を上書きし
ます。(端末形式の) 端末記述は、端末データベースに格納されます:
• 通常、これらは、その中の端末名の最初の文字によって指定されたサブ
ディレクトリを使用してディレクトリツリーに格納されます。
これは、古い Unix システムが使用する、System V で使用されたスキーム
で、TERMINFO 変数は、端末データベースのデフォルト位置を上書きするそ
れらのシステムの curses アプリケーションによって使用されます。
• ncurses が、ハッシュされたデータベースを使用するために構築されるな
ら、このリストの各エントリは、ハッシュされたデータベースファイルの
パス、例えば、
/usr/share/terminfo.db
次ではなく
/usr/share/terminfo/
ハッシュされたデータベースは、少ないディスク空間を使用し、ディレク
トリツリーより少し速くなります。しかしながら、いくつかのアプリケー
ションは、ディレクトリツリーの存在を仮定し、terminfo ライブラリ呼び
出しを使用するのではなく、直接それを読み込みます。
• ncurses が、termcap ファイルを直接読み込むためのサポートで構築され
ているなら、このリストのエントリは、termcap ファイルのパスとなりま
す。
• TERMINFO 変数が "hex:" or "b64:" で始まるなら、ncurses は、コンパイ
ルされた端末記述としてその変数の残りを使用します。利用者は、
infocmp(1M) を使用して base64 形式を生成します:
TERMINFO="$(infocmp -0 -Q2 -q)"
export TERMINFO
コンパイルされた記述は、それが、TERM 変数によって識別された端末に対
応しているなら、使用されます。
TERMINFO を設定することは、簡単ですが、デフォルトの端末データベースの位
置を設定するための唯一の方法ではありません。次の順序でデータベース位置
の完全なリストは、次の通りです:
• ncurses が書き込んだ最後の端末データベースがあるなら、最初に検索
されます
• TERMINFO 環境変数によって指定された位置
• $HOME/.terminfo
• TERMINFO_DIRS 環境変数にリストされた位置
• 名前が設定され、ncurses ライブラリにコンパイルされた 1 つ以上の
位置、すなわち、
• @TERMINFO_DIRS@ (TERMINFO_DIRS 変数に対応する)
• /usr/share/misc/terminfo (TERMINFO 変数に対応する)
TERMINFO_DIRS
端末記述を検索する位置のリストを指定します。リストの各位置は、TERMINFO
変数のセクションで説明されるように端末データベースです。リストは、Unix
のコロン (すなわち、":")、OS/2EMX のセミコロンによって区切られます。
System V terminfo に対応する機能は、ありません。それは、ncurses のため
に開発された拡張です。
TERMPATH
TERMCAP がファイル名を保存しないなら、ncurses は、TERMPATH 環境変数を
チェックします。これは、Unix の空白、またはコロン (すなわち、":")、
OS/2EMX のセミコロンで区切られたファイル名のリストです。
TERMPATH 環境変数が設定されないなら、ncurses は、次の順序でファイル
/etc/termcap, /usr/share/misc/termcap and $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
利用者は、また、拡張された (ワイド文字) 関数を使用するためにワイド
文字ライブラリのためにコンパイルされるとき、ヘッダファイルのワイド
文字機能を有効にしなければなりません。これらの機能を有効にするシン
ボルは、XSI Curses, Issue 4 以来変更されました:
• 本来、ワイド文字機能は、シンボル _XOPEN_SOURCE_EXTENDED を必要
としますが、それは、XPG4 (1996) のためだけに有効でした。
• 後に、それは、500 に定義された _XOPEN_SOURCE と矛盾していると
考えられました。
• 2018 年中ごろ、現在、この実装の機能のどれも、600 以上の
_XOPEN_SOURCE 機能を必要としません。しかしながら、X/Open
Curses, Issue 7 (2009) は、それを 700 に定義するように推奨しま
す。
• 代わりに、利用者は、curses.h に比べていくつかの他のヘッダファ
イルが、_XOPEN_SOURCE のための特有な値 (または、システム特有な
シンボル) を必要とすることを警告して NCURSES_WIDECHAR を定義す
ることによって機能を有効にすることができます。
ワイド文字ライブラリのためにインストールされる curses.h ファイル
は、通常のライブラリヘッダと互換性があるように設計されています。
WINDOW 構造体のサイズのみ異なり、ほとんどのアプリケーションは、
WINDOW へのポインタを単に要求することはありません。
ヘッダが上書きを許してインストールされるなら、ワイド文字のライブラ
リのヘッダは、アプリケーションが、同じセットのヘッダからいずれかの
ライブラリを使用して構築できるように最後にインストールされるべきで
す。
--with-pthread
設定スクリプトは、ライブラリの名前を変更します。ライブラリ名のすべ
ては、(--enable-widec によって追加される、あらゆる "w" の前に) そ
れらに付加される "t" があります。
LINES のようなグローバル変数は、読み込み専用アクセスを許可するため
に、マクロによって置き換えられます。同時に、セッタ (setter) 関数
は、これらの値を設定するために提供されています。いくつかのアプリ
ケーション (ほとんない) は、この規約で動作するための変更を必要とす
るかもしれません。
--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_" で始まる名前の関
連するページ。
curs_variables(3X)
ユーザ定義のケーパビリティのための user_caps(5)
拡張機能
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 呼び出しの間の個別
の差) は、ライブラリマニュアルページの移植性セクションに記述されていま
す。
他の実装と異なり、これは、それらが null でないことを保証するために
WINDOW 構造へのポインタのようなパラメータをチェックします。この振る舞い
を提供する主な理由は、プログラマのエラーを避けることです。標準インタ
フェースは、いくつかの指定できるエラーのどれが検出されたかをアプリケー
ションに伝えるライブラリのための方法を提供していません。この (または他
のあるもの) 拡張を当てにすることは、curses アプリケーションの移植性に悪
影響を与えます。
また、この実装は、次のいくつかの拡張を含んでいます:
• ルーチン 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) を参
照してください。
• この実装は、マルチスレッドのアプリケーションのための基本的なサポー
トを提供するために設定することができます。詳細については、
curs_threads(3X) を参照してください。
• また、この実装は、複数の画面を管理する能力を向上する 1 組の関数を提
供するために設定することができます。詳細については、
curs_sp_funcs(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 に文書化されていない機能です。
作者
Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey。Pavel Curtis によ
る pcurses に基づいています。
ncurses(3X)