スポンサーリンク

ncurses

名称
書式
解説
戻り値
関連項目

名称

ncurses - CRT screen handling and optimization package

書式

#include <ncurses.h>

解説

ncurses ライブラリルーチンでは、端末に依存しない方法で、それなりに最適 化してキャラクタ画面を更新できます。

ncurses ルーチンは、System V Release 4 UNIX の curses(3) ライブラリをエ ミュレートしますが、ソース形式で自由に再分配できます。 System V Release 4 UNIX の curses との違いについては、それぞれのマニュアルページのバグセ クションで説明します。違いは少ししかなく、 ncurses が発展するにつれ、違 いは少なくなります。

このルーチンを使用しているプログラムは、-lncurses オプション、または(生 成 された場合は) -ldcurses-lpcurses などのデバッグライブラリの 1 つ を使用してリンクする必要があります。 dcurses ライブラリは、curses ア ク ショ ン を記述したトレースログを生成します。 pcurses ライブラリは、プロ ファイル化をサポートしています。

ncurses パッケージでは、画面全体、ウィンドウ、パッドの操作、ウィンド ウ と パッドへの出力、端末入力の読込み、端末、ncurses 入力と出力のオプショ ンの制御、環境クエリルーチン、カラー操作、ソフトラベ ル キー の 使 用、 terminfo 機能、低レベル ncurses ルーチンへのアクセスがサポートされてい ます。

ルーチンを初期化するには、ルーチン initscrnewterm を呼び出 し て か ら、 ウィ ン ドウと画面を処理するその他のルーチンを使用する必要がありま す。終了前には、ルーチン endwin を呼び出してください。エコーせずに 1 回 に 1 キャラクタずつ入力するには (インタラクティブで画面主導のほとんどの プログラムで必要)、以下のシーケンスを使用します。

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

ほとんどのプログラムでは、以下のシーケンスも使用します。

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

ncurses プログラムを実行する前には、端末のタブストップを設定し、定義 さ れ ていれば初期化文字列を出力する必要があります。これは、シェル環境変数 TERM をエクスポートした後でコマンド tput init を実行すれば行なえま す。 [詳細については、terminfo(5) を参照してください。]

ncurses ライブラリでは、CRT 画面の全体か一部を表すキャラクタの 2 次元配 列とみなせる、windows というデータ構造を操作できます。デフォルトウィ ン ド ウは stdscr というもので、サイズは端末画面のサイズになっています。そ の他のウィンドウは、newwin で作成できます。

ウィンドウは、WINDOW * のように宣言した変数で参照します。このデータ構造 は、 マ ニュ ア ル セ クション 3 のページで解説しているルーチン (名前が 「curs_」で始まるもの)で操作します。このうち最も基本的なルー チ ン は、 moveaddchです。このルーチンの一般的なバージョンは、名前が w で始ま ります。このバージョンではウィンドウを指定できます。 w で始まらないルー チンは stdscr に影響します。

ルーチンを使用してウィンドウを操作した後では refresh が呼び出され、ユー ザの CRT 画面を stdscr のように表示する指示が ncurses に出さ れ ま す。 ウィ ン ドウのキャラクタのタイプは実際には chtype (キャラクタと属性デー タ)なので、キャラクタのその他の情報もそれぞれのキャラクタとともに保存で きます。

パッ ドという特殊なウィンドウも操作できます。パッドは画面のサイズに制限 されないウィンドウで、パッドの内容は完全に表示する必要がありません。 詳 細については curs_pad(3) を参照してください。

キャ ラクタの画面への描画の他に、ビデオ属性とカラーもサポートされている ので、下線、リバースビデオ、カラーなどのモードで、このような表示拡張 機 能 をサポートしている端末にキャラクタを表示できます。ライン描画キャラク タを出力するように指定することもできます。 ncurses は、入力時にエスケー プシーケンスを送信する矢印キーとファンクションキーを 1 つの値に変換でき ます。ビデオ属性、ライン描画キャ ラ ク タ、 入 力 値 で は、A_REVERSEACS_HLINEKEY_LEFT のような、<ncurses.h> に定義された名前が使用されま す。

環境変数 LINESCOLUMNS を設定した場合、またはウィンドウ環境でプロ グ ラムを実行している場合、terminfo で読み込まれた情報は、環境の行とカラム の情報で上書きされます。これは、画面のサイズを変更できる、 AT&T 630 レ イヤなどで実行しているプログラムに影響します。

環 境 変 数 TERMINFO を定義すると、ncurses を使用しているプログラムは、 ローカルの端末定義をチェックしてから標準の場所にチェックインします。 た とえば TERMatt4424 に設定すると、コンパイルされた端末定義は以下の場 所で見つかります。

@TERMINFO@/a/att4424 (a は、大きなディレクトリの作成を避けるた め に att4424 の 最 初 の文字をコピーしたものです。) しかし TERMINFO$HOME/myterms に設定すると、ncursesは以下の場所を最初にチェックします。

$HOME/myterms/a/att4424

チェックが失敗に終わると、次に以下をチェックします。

@TERMINFO@/a/att4424

こ れは、試験用定義を開発している場合、または @TERMINFO@ の書込み権がな い場合に便利です。

整数変数 LINESCOLS は、<ncurses.h>に定義されています。この整数変 数 に は、initscr が画面のサイズに従って値を入力します。定数 TRUEFALSE の値は、それぞれ 10 になっています。

ncurses ルーチンは、WINDOW * 変数 curscr も定義します。この変数は、ごみ を 含む画面のクリアや再描画など、特定の低レベル操作で使用します。curscr は、少数のルーチンでしか使用されないでしょう。

ルーチン名と引数名

多くの ncurses ルーチンには複数のバージョンがあります。 w で始まる ルー チンにはウィンドウ引数が必要です。 p で始まるルーチンにはパッド引数が必 要です。接頭語がないルーチンは、一般的に stdscr を使用します。

mv で始まるルーチンでは、移動先の y 座標と x 座標がなければ、適切なアク ションを実行できません。ルーチンが mv で始まるということは、move が呼び 出されてから別のルーチンが呼び出されるということです。 y 座標はウィンド ウの行を、x 座標はカラムを常に表します。左上は (1,1) ではなく常に (0,0) です。

mvw で始まるルーチンには、ウィンドウ引数と x 座標と y 座標が必要で す。 ウィンドウ引数を指定してから座標を指定してください。

どのケースでも、win は影響を受けるウィンドウで、 pad は影響を受けるパッ ドです。winpad は、常に WINDOW 型のポインタです。

オプション設定ルーチンでは、値が TRUEFALSE になっている論理フ ラ グ bf が 必要です。 bf の型は常に bool です。変数 chattrs の型は常に chtype です。型 WINDOW, SCREEN, bool, chtype は、 <ncurses.h> で定義 さ れています。 TERMINAL 型は、<term.h> で定義されています。その他すべての 引数は整数です。

ルーチン名インデックス

以下の表は、各 ncurses ルーチン、およびその解説が載っているマニュ ア ル ページの名前をまとめたものです。

ncurses ルーチン名  マニュアルページ名
___________________________________________
addch                  curs_addch(3)
addchnstr              curs_addchstr(3)
addchstr               curs_addchstr(3)
addnstr                curs_addstr(3)
addstr                 curs_addstr(3)
attroff                curs_attr(3)
attron                 curs_attr(3)
attrset                curs_attr(3)
baudrate               curs_termattrs(3)
beep                   curs_beep(3)
bkgd                   curs_bkgd(3)
bkgdset                curs_bkgd(3)
border                 curs_border(3)
box                    curs_border(3)
can_change_color       curs_color(3)
cbreak                 curs_inopts(3)
clear                  curs_clear(3)
clearok                curs_outopts(3)
clrtobot               curs_clear(3)
clrtoeol               curs_clear(3)
color_content          curs_color(3)
copywin                curs_overlay(3)
curs_set               curs_kernel(3)
def_prog_mode          curs_kernel(3)
def_shell_mode         curs_kernel(3)
del_curterm            curs_terminfo(5)
delay_output           curs_util(3)
delch                  curs_delch(3)
deleteln               curs_deleteln(3)
delscreen              curs_initscr(3)
delwin                 curs_window(3)
derwin                 curs_window(3)
doupdate               curs_refresh(3)
dupwin                 curs_window(3)
echo                   curs_inopts(3)
echochar               curs_addch(3)
endwin                 curs_initscr(3)
erase                  curs_clear(3)
erasechar              curs_termattrs(3)
filter                 curs_util(3)
flash                  curs_beep(3)
flushinp               curs_util(3)
getbegyx               curs_getyx(3)
getch                  curs_getch(3)
getmaxyx               curs_getyx(3)
getparyx               curs_getyx(3)
getstr                 curs_getstr(3)
getsyx                 curs_kernel(3)
getwin                 curs_util(3)
getyx                  curs_getyx(3)
halfdelay              curs_inopts(3)
has_colors             curs_color(3)
has_ic                 curs_termattrs(3)
has_il                 curs_termattrs(3)
hline                  curs_border(3)
idcok                  curs_outopts(3)
idlok                  curs_outopts(3)
immedok                curs_outopts(3)
inch                   curs_inch(3)
inchnstr               curs_inchstr(3)
inchstr                curs_inchstr(3)
init_color             curs_color(3)
init_pair              curs_color(3)
initscr                curs_initscr(3)
innstr                 curs_instr(3)
insch                  curs_insch(3)
insdelln               curs_deleteln(3)
insertln               curs_deleteln(3)
insnstr                curs_insstr(3)
insstr                 curs_insstr(3)
instr                  curs_instr(3)
intrflush              curs_inopts(3)
is_linetouched         curs_touch(3)
is_wintouched          curs_touch(3)
isendwin               curs_initscr(3)
keyname                curs_util(3)
keypad                 curs_inopts(3)
killchar               curs_termattrs(3)
leaveok                curs_outopts(3)
longname               curs_termattrs(3)
meta                   curs_inopts(3)
move                   curs_move(3)
mvaddch                curs_addch(3)
mvaddchnstr            curs_addchstr(3)
mvaddchstr             curs_addchstr(3)
mvaddnstr              curs_addstr(3)
mvaddstr               curs_addstr(3)
mvcur                  curs_terminfo(5)
mvdelch                curs_delch(3)
mvderwin               curs_window(3)
mvgetch                curs_getch(3)
mvgetstr               curs_getstr(3)
mvinch                 curs_inch(3)
mvinchnstr             curs_inchstr(3)
mvinchstr              curs_inchstr(3)
mvinnstr               curs_instr(3)
mvinsch                curs_insch(3)
mvinsnstr              curs_insstr(3)
mvinsstr               curs_insstr(3)
mvinstr                curs_instr(3)
mvprintw               curs_printw(3)
mvscanw                curs_scanw(3)
mvwaddch               curs_addch(3)
mvwaddchnstr           curs_addchstr(3)
mvwaddchstr            curs_addchstr(3)
mvwaddnstr             curs_addstr(3)
mvwaddstr              curs_addstr(3)
mvwdelch               curs_delch(3)
mvwgetch               curs_getch(3)
mvwgetstr              curs_getstr(3)
mvwin                  curs_window(3)
mvwinch                curs_inch(3)
mvwinchnstr            curs_inchstr(3)
mvwinchstr             curs_inchstr(3)
mvwinnstr              curs_instr(3)
mvwinsch               curs_insch(3)
mvwinsnstr             curs_insstr(3)
mvwinsstr              curs_insstr(3)
mvwinstr               curs_instr(3)
mvwprintw              curs_printw(3)
mvwscanw               curs_scanw(3)
napms                  curs_kernel(3)
newpad                 curs_pad(3)
newterm                curs_initscr(3)
newwin                 curs_window(3)
nl                     curs_outopts(3)
nocbreak               curs_inopts(3)
nodelay                curs_inopts(3)
noecho                 curs_inopts(3)
nonl                   curs_outopts(3)
noqiflush              curs_inopts(3)
noraw                  curs_inopts(3)
notimeout              curs_inopts(3)
overlay                curs_overlay(3)
overwrite              curs_overlay(3)
pair_content           curs_color(3)
pechochar              curs_pad(3)
pnoutrefresh           curs_pad(3)
prefresh               curs_pad(3)
printw                 curs_printw(3)
putp                   curs_terminfo(5)
putwin                 curs_util(3)
qiflush                curs_inopts(3)
raw                    curs_inopts(3)
redrawwin              curs_refresh(3)
refresh                curs_refresh(3)
reset_prog_mode        curs_kernel(3)
reset_shell_mode       curs_kernel(3)
resetty                curs_kernel(3)
restartterm            curs_terminfo(5)
ripoffline             curs_kernel(3)
savetty                curs_kernel(3)
scanw                  curs_scanw(3)
scr_dump               curs_scr_dmp(3)
scr_init               curs_scr_dmp(3)
scr_restore            curs_scr_dmp(3)
scr_set                curs_scr_dmp(3)
scrl                   curs_scroll(3)
scroll                 curs_scroll(3)
scrollok               curs_outopts(3)
set_curterm            curs_terminfo(5)
set_term               curs_initscr(3)
setscrreg              curs_outopts(3)
setsyx                 curs_kernel(3)
setterm                curs_terminfo(5)
setupterm              curs_terminfo(5)
slk_attroff            curs_slk(3)
slk_attron             curs_slk(3)
slk_attrset            curs_slk(3)
slk_clear              curs_slk(3)
slk_init               curs_slk(3)
slk_label              curs_slk(3)
slk_noutrefresh        curs_slk(3)
slk_refresh            curs_slk(3)
slk_restore            curs_slk(3)
slk_set                curs_slk(3)
slk_touch              curs_slk(3)
standend               curs_attr(3)
standout               curs_attr(3)
start_color            curs_color(3)
subpad                 curs_pad(3)
subwin                 curs_window(3)
syncok                 curs_window(3)
termattrs              curs_termattrs(3)
termname               curs_termattrs(3)
tigetflag              curs_terminfo(5)
tigetnum               curs_terminfo(5)
tigetstr               curs_terminfo(5)
timeout                curs_inopts(3)
touchline              curs_touch(3)
touchwin               curs_touch(3)
tparm                  curs_terminfo(5)
tputs                  curs_terminfo(5)
typeahead              curs_inopts(3)
unctrl                 curs_util(3)
ungetch                curs_getch(3)
untouchwin             curs_touch(3)
use_env                curs_util(3)
vidattr                curs_terminfo(5)
vidputs                curs_terminfo(5)
vline                  curs_border(3)
vwprintw               curs_printw(3)
vwscanw                curs_scanw(3)
waddch                 curs_addch(3)
waddchnstr             curs_addchstr(3)
waddchstr              curs_addchstr(3)
waddnstr               curs_addstr(3)
waddstr                curs_addstr(3)
wattroff               curs_attr(3)
wattron                curs_attr(3)
wattrset               curs_attr(3)
wbkgd                  curs_bkgd(3)
wbkgdset               curs_bkgd(3)
wborder                curs_border(3)
wclear                 curs_clear(3)
wclrtobot              curs_clear(3)
wclrtoeol              curs_clear(3)
wcursyncup             curs_window(3)
wdelch                 curs_delch(3)
wdeleteln              curs_deleteln(3)
wechochar              curs_addch(3)
werase                 curs_clear(3)
wgetch                 curs_getch(3)
wgetnstr               curs_getstr(3)
wgetstr                curs_getstr(3)
whline                 curs_border(3)
winch                  curs_inch(3)
winchnstr              curs_inchstr(3)
winchstr               curs_inchstr(3)
winnstr                curs_instr(3)
winsch                 curs_insch(3)
winsdelln              curs_deleteln(3)
winsertln              curs_deleteln(3)
winsnstr               curs_insstr(3)
winsstr                curs_insstr(3)
winstr                 curs_instr(3)
wmove                  curs_move(3)
wnoutrefresh           curs_refresh(3)
wprintw                curs_printw(3)
wredrawln              curs_refresh(3)
wrefresh               curs_refresh(3)
wscanw                 curs_scanw(3)
wscrl                  curs_scroll(3)
wsetscrreg             curs_outopts(3)
wstandend              curs_attr(3)
wstandout              curs_attr(3)
wsyncdown              curs_window(3)
wsyncup                curs_window(3)
wtimeout               curs_inopts(3)
wtouchln               curs_touch(3)
wvline                 curs_border(3)

戻り値

ルー チンの解説で特記されていなければ、整数を戻すルーチンは、エラーが発 生した場合は ERR を戻し、問題がない場合は ERR 以外の整数値を戻します。

setscrreg, wsetscrreg, getyx, getbegyx, getmaxyx 以外のすべてのマ ク ロ は、w バー ジョ ン の 値 を 戻 します。 setscrreg, wsetscrreg, getyx, getbegyx, getmaxyx の戻り値は定義されていません。(すなわち、割り当て ス テートメントの右側では使用しないでください。)

ポインタを戻すルーチンは、エラーが発生すると NULL を戻します。

関連項目

ルー チンの詳細については、terminfo(5)、および名前が「curs_」で始まるセ クション 3 のページを参照してください。

ヘッダファイル <ncurses.h> を取り込むと、ヘッダファイル <stdio.h><unctrl.h> が自動的に取り込まれます。

スポンサーリンク