ncurses(3)

명칭
ncurses - CRT screen handling and optimization package

서식
#include <ncurses.h>

해설
ncurses 프로그램 라이브러리 routine에서는, 단말에 의존하지 않는 방법으로, 그 나름대로 최적화해 캐릭터 화면을 갱신할 수 있습니다. ncurses routine는, System V Release 4 UNIX 의 curses(3) 프로그램 라이브러리를 에뮤레이트 합니다만, 소스 형식에서 자유롭게 재분배할 수 있습니다. System V Release 4 UNIX 의 curses 와의 차이에 대해서는, 각각의 메뉴얼 페이지의 버그 섹션으로 설명합니다. 차이는 조금 밖에 없고, ncurses 가 발전하는 것에 따라, 차이는 적게 됩니다. 이 routine를 사용하고 있는 프로그램은, -lncurses 옵션, 또는(생성되었을 경우는) -ldcurses 나 -lpcurses 등의 디버그 프로그램 라이브러리의 1 개를 사용해 링크 할 필요가 있습니다. dcurses 프로그램 라이브러리는, curses 액션을 기술한 트레이스 로그를 생성합니다. pcurses 프로그램 라이브러리는, 프로파일화를 서포트하고 있습니다. ncurses 패키지에서는, 화면 전체, 윈도우, 패드의 조작, 윈도우와 패드에의 출력, 단말 입력의 독 붐비어, 단말, ncurses 입력과 출력의 옵션의 제어, 환경 쿠에리 routine, 칼라 조작, 소프트 label 키의 사용, terminfo 기능, 저레벨 ncurses routine에의 액세스가 서포트 되고 있습니다. routine를 초기화하려면 , routine initscr 나 newterm (을)를 호출하고 나서, 윈도우와 화면을 처리하는 그 외의 routine를 사용한다 필요가 있습니다. 종료전에는, routine endwin 를 호출해 주세요. 에코 하지 않고 1 회에 1 캐릭터씩 입력하려면 (인터랙티브로 화면 주도의 대부분의 프로그램으로 필요), 이하의 순차 순서를 사용합니다.
      initscr(); cbreak(); noecho() ; 대부분의 프로그램에서는, 이하의 순차 순서도 사용합니다.
      nonl(); intrflush(stdscr, FALSE); keypad(stdscr, TRUE) ; ncurses 프로그램을 실행하기 전에는, 단말의 tab stop를 설정해, 정의되고 있으면 초기화 캐릭터 라인을 출력할 필요가 있습니다. 이것은, 쉘 환경 변수 TERM 를 export 한 다음에 명령 tput init 를 실행 스치고 바행 쇠약해집니다. [상세한 것에 대하여는, terminfo(5)를 참조해 주세요. ] ncurses 프로그램 라이브러리에서는, CRT 화면의 전체나 일부를 나타내는 캐릭터의 2 차원 배열로 간주할 수 있는, windows 라고 하는 데이터 구조를 조작할 수 있습니다. 디폴트 윈도우는 stdscr 라는 것으로, 사이즈는 단말 화면의 사이즈 (이)가 되어 있습니다. 그 외의 윈도우는, newwin 로 작성할 수 있습니다. 윈도우는, WINDOW * 와 같이 선언한 변수로 참조합니다. 이 데이터 구조는, 메뉴얼 섹션 3 의 페이지로 해설하고 있는 routine (이름이 「curs_」로 시작되는 것)(으)로 조작합니다. 이 중 가장 기본적인 routine는, move 와 addch입니다. 이 routine의 일반적인 버젼은, 이름이 w 로 시작됩니다. 이 버젼에서는 윈도우를 지정할 수 있습니다. w 로 시작되지 않는 routine는 stdscr 에 영향을 줍니다. routine를 사용해 윈도우를 조작한 다음에는 refresh 가 불려 가 유저의 CRT 화면을 stdscr 와 같이 표시하는 지시가 ncurses 에 나옵니다. 윈도우의 캐릭터의 타입은 실제로는 chtype (캐릭터와 속성 데이터)이므로, 캐릭터의 그 외의 정보도 각각의 캐릭터와 함께 보존할 수 있습니다. 패드라고 하는 특수한 윈도우도 조작할 수 있습니다. 패드는 화면의 사이즈에 제한되지 않는 윈도우로, 패드의 내용은 완전하게 표시할 필요가 없습니다. 상세한 것에 대하여는 curs_pad(3)를 참조해 주세요. 캐릭터의 화면에의 묘화 외에, 비디오 속성과 칼라도 서포트 되고 있으므로, 밑줄, 리버스 비디오, 칼라등의 모드로, 이러한 표시 확장 기능을 서포트하고 있는 단말에 캐릭터를 표시할 수 있습니다. 라인 묘화 캐릭터를 출력하도록(듯이) 지정할 수도 있습니다. ncurses 는, 입력시에 escape sequence를 송신하는 커서 키와 function key를 1 개의 값으로 변환할 수 있습니다. 비디오 속성, 라인 묘화 캐릭터, 입력치에서는, A_REVERSE, ACS_HLINE, KEY_LEFT 와 같은, <ncurses.h> 에 정의된 이름이 사용됩니다. 환경 변수 LINES 와 COLUMNS 를 설정했을 경우, 또는 윈도우 환경에서 프로그램을 실행하고 있는 경우, terminfo 로 읽힌 정보는, 환경의 행과 컬럼의 정보로 덧쓰기됩니다. 이것은, 화면의 사이즈를 변경할 수 있는, AT&T 630 레이어등으로 실행하고 있는 프로그램에 영향을 줍니다. 환경 변수 TERMINFO 를 정의하면(자), ncurses 를 사용하고 있는 프로그램은, 로컬의 단말 정의를 체크하고 나서 표준의 장소에 체크인 합니다. 예를 들어 TERM 를 att4424 로 설정하면(자), 컴파일 된 단말 정의는 이하의 장소에서 발견됩니다.
      @TERMINFO@/a/att4424 (a 는, 큰 디렉토리의 작성을 피하기 위해서(때문에) att4424 의 최초의 캐릭터를 카피한 것입니다. ) 그러나 TERMINFO 를 $HOME/myterms 로 설정하면(자), ncurses는 이하의 장소를 최초로 체크합니다.
      $HOME/myterms/a/att4424 체크가 실패에 끝나면(자), 다음에 이하를 체크합니다.
      @TERMINFO@/a/att4424 이것은, 시험용 정의를 개발하고 있는 경우, 또는 @TERMINFO@ 의 기록권이 없다 경우에 편리합니다. 정수 변수 LINES 와 COLS 는, <ncurses.h>에 정의되고 있습니다. 이 정수 변수에는, initscr 가 화면의 사이즈에 따라 값을 입력합니다. 정수 TRUE 와 FALSE 의 값은, 각각 1 와 0 가 되어 있습니다. ncurses routine는, WINDOW * 변수 curscr 도 정의합니다. 이 변수는, 쓰레기를 포함한 화면의 클리어나 재묘화 등, 특정의 저레벨 조작으로 사용합니다. curscr 는, 소수의 routine로 밖에 사용되지 않을 것입니다.

  routine명과 인수명
많은 ncurses routine에는 복수의 버젼이 있습니다. w 로 시작되는 routine에는 윈도우 인수가 필요합니다. p 로 시작되는 routine에는 패드 인수가 필요합니다. 접두어가 없는 routine는, 일반적으로 stdscr 를 사용합니다. mv 로 시작되는 routine에서는, 이동처의 y 좌표와 x 좌표가 없으면, 적절한 액션을 실행할 수 없습니다. routine가 mv 로 시작된다고 하는 것은, move 가 불려 가고 나서 다른 routine가 불려 간다고 하는 것입니다. y 좌표는 윈도우의 행을, x 좌표는 컬럼을 항상 나타냅니다. 좌상은 (1,1)은 아니고 항상 (0,0)입니다. mvw 로 시작되는 routine에는, 윈도우 인수와 x 좌표와 y 좌표가 필요합니다. 윈도우 인수를 지정하고 나서 좌표를 지정해 주세요. 어느 케이스에서도, win 는 영향을 받는 윈도우로, pad 는 영향을 받는 패드입니다. win 와 pad 는, 항상 WINDOW 형의 포인터입니다. 옵션 설정 routine에서는, 값이 TRUE 나 FALSE 가 되어 있다 논리 플래그 bf 가 필요합니다. bf 의 형태는 항상 bool 입니다. 변수 ch 와 attrs 의 형태는 항상 chtype 입니다. 형태 WINDOW, SCREEN, bool, chtype 은, <ncurses.h> 로 정의되고 있습니다. TERMINAL 형은, <term.h> 로 정의되고 있습니다. 그 외 모든 인수는 정수입니다.

  routine명 인덱스
이하의 겉(표)는, 각 ncurses routine, 및 그 해설이 실려 있다 메뉴얼 페이지의 이름을 집계한 것입니다.
ncurses routine명 메뉴얼 페이지명
___________________________________________
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)

반환값
routine의 해설로 특기되어 있지 않으면, 정수를 되돌리는 routine는, 에러가 발생했을 경우는 ERR 를 되돌려, 문제가 없는 경우는 ERR 이외의 정수치를 되돌립니다. setscrreg, wsetscrreg, getyx, getbegyx, getmaxyx 이외의 모든 매크로는, w 버젼의 값을 되돌립니다. setscrreg, wsetscrreg, getyx, getbegyx, getmaxyx 의 반환값은 정의되고 있지 않습니다. (즉, 할당 스테이트먼트의 우측에서는 사용하지 말아 주세요. ) 포인터를 되돌리는 routine는, 에러가 발생하면(자) NULL 를 되돌립니다.

관련 항목
routine의 상세한 것에 대하여는, terminfo(5), 및 이름이 「curs_」로 시작된다 섹션 3 의 페이지를 참조해 주세요.

주
헤더 파일 <ncurses.h> 를 수중에 넣으면(자), 헤더 파일 <stdio.h> 와 <unctrl.h> 가 자동적으로 받아들여집니다.