ncurses.3x

Autres langues

Langue: pl

Version: 55658 (openSuse - 09/10/07)

Section: 3 (Bibliothèques de fonctions)

NAZWA

ncurses - pakiet obs³ugi CRT i jego optymalizacji

STRESZCZENIE

#include <curses.h>

OPIS

Funkcje biblioteki curses daj± u¿ytkownikowi niezale¿ne od terminala metody obs³ugiwania ekranów znakowych z sensown± optymalizacj±. Ta implementacja to ,,nowe curses'' (ncurses). Jest ona zatwierdzonym zamiennikiem dla klasycznych curses z 4.4BSD, których rozwoju zaprzestano.

Funkcje ncurses emuluj± bibliotekê curses(3X) Systemu Vr4, a tak¿e standard XPG4 (XSI curses), lecz biblioteka ncurses jest wolnodostêpna w postaci ¼ród³owej. Ró¿nice miêdzy curses z SVr4 podsumowano w sekcjach ROZSZERZENIA i B£ÊDY, wystêpuj±cych poni¿ej, a opisano szczegó³owo w takich samych sekcjach stron podrêcznika systemowego po¶wiêconych poszczególnym funkcjom.

Program, który korzysta z tych funkcji, musi byæ skonsolidowany z opcj± -lncurses (lub je¶li zosta³ wygenerowany) z bibliotek± debuggow± -lncurses_g. Biblioteka ncurses_g generuje logi ¶ledzenia (plik o nazwie 'trace', w bie¿±cym katalogu), które opisuj± akcje curses.

Pakiet ncurses obs³uguje: dzia³anie na ekranie, oknach i padach; wyj¶cie do okien i padów; odczytywanie wej¶cia z terminala; sterowanie terminalem oraz opcje wej¶cia/wyj¶cia curses; funkcje zapytañ ¶rodowiskowych; dzia³anie na kolorach; u¿ywanie klawiszy o miêkkich etykietach; w³a¶ciwo¶ci terminfo; i dostêp do niskopoziomowych funkcji obs³ugi terminala.

Aby zainicjalizowaæ pakiet, nale¿y na samym pocz±tku wywo³aæ funkcjê initscr, lub newterm. Przed wyj¶ciem nale¿y wywo³aæ funkcjê endwin. Aby uzyskaæ wej¶cie znakowe znak-po-znaku bez echa (wiêkszo¶æ interaktywnie zorientowanych programów tego chce), powinno siê u¿yæ nastêpuj±cej sekwencji:


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

Wiêkszo¶æ programów chêtnie wykorzystuje te¿ sekwencje:


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

Przed uruchomieniem programu curses, nale¿y ustawiæ <tab stops> (pozycje tabulacji) terminala, oraz wys³aæ doñ ³añcuchy inicjuj±ce. Mo¿na tego dokonaæ, wywo³uj±c polecenie tput init po uprzednim wyeksportowaniu zmiennej ¶rodowiskowej TERM. Odpowiedzialny za to jest tset(1). [Szczegó³y - zobacz terminfo(5).]

Biblioteka curses zezwala na dzia³anie na strukturach danych, nazywanych oknami, o których mo¿na my¶leæ jak o dwuwymiarowych tablicach znaków, reprezentuj±cych czê¶æ lub ca³o¶æ ekranu CRT. Dostarczane jest domy¶lne okno, o nazwie stdscr, którego wymiary odpowiadaj± ekranowi terminala. Inne okna mo¿na utworzyæ przy u¿yciu funkcji newwin.

Zauwa¿, ¿e curses nie obs³uguje zachodz±cych okien - jest to robione przez bibliotekê panels(3x). Znaczy to, ¿e mo¿esz albo u¿ywaæ stdscr, albo podzieliæ ekran na okna i nie u¿ywaæ stdscr w ogóle. £±czenie tych dwóch spowoduje niepraktyczne i niepo¿±dane efekty.

Do okien mo¿na odnosiæ siê poprzez zmienne zadeklarowane jako WINDOW *. Dzia³añ na tych strukturach dokonuje siê funkcjami opisanymi na tej stronie oraz w innych miejscach stron podrêcznika ncurses. Najbardziej podstawowymi funkcjami s± move i addch. Ogólniejsze wersje tych funkcji figuruj± pod nazwami zaczynaj±cymi siê od w i umo¿liwiaj± podanie okna. Funkcje nie zaczynaj±ce siê od w dzia³aj± na stdscr.

Po u¿yciu funkcji dzia³ania na oknie, wywo³ywany jest refresh, nakazuj±cy curses, by ekran CRT zacz±³ wygl±daæ tak jak stdscr. Znaki okna s± w³a¶ciwie typu chtype (znak i dane atrybutu), wiêc dane o znaku mo¿na przechowywaæ w nim samym.

Mo¿na te¿ operowaæ szczególnymi oknami, padami. Okna te nie s± ograniczone rozmiarami ekranu, a ich zawarto¶æ nie musi byæ w ca³o¶ci wy¶wietlana. Wiêcej szczegó³ów znajdziesz w curs_pad(3X).

Oprócz rysowania na ekranie znaków, mog± byæ obs³ugiwane atrybuty i kolory, a wiêc znaki mog± pokazywaæ siê w trybach takich jak podkre¶lenie, inwersja, lub w kolorze, o ile terminal na to pozwala. Mo¿na wy¶wietlaæ znaki sk³adaj±ce siê na linie. Na wej¶ciu, ncurses potrafi t³umaczyæ klawisze strza³ek i funkcyjne, które przekazuj± sekwencje eskejpowe, na zwyk³e warto¶ci. Atrybuty wideo, znaki rysowania linii i nazwy warto¶ci wej¶ciowych s± zdefiniowane w <curses.h> i maj± nazwy typu A_REVERSE, ACS_HLINE, czy KEY_LEFT.

Je¶li ustawiono zmienne ¶rodowiskowe LINES i COLUMNS, lub je¶li program jest uruchomiony w ¶rodowisku okienkowym, to informacje o rozmiarze ekranu przes³oni± dane odczytywane z terminfo.

Je¶li zdefiniowana jest zmienna ¶rodowiskowa TERMINFO, to ka¿dy program u¿ywaj±cy curses bêdzie szuka³ najpierw lokalnej definicji terminala, a dopiero potem zajrzy do standardowego miejsca. Np. Je¶li TERM jest ustawione na att4424, to wkompilowana definicja terminala jest znajdywana w


      /usr/lib/terminfo/a/att4424.

(a jest kopiowane z pierwszej litery att4424, aby zapobiec tworzeniu wielkich katalogów.) Jednak je¶li ustawiono TERMINFO, np. na warto¶æ $HOME/myterms, to curses zajrzy wpierw do


      $HOME/myterms/a/att4424,

a je¶li to zawiedzie, do


      /usr/lib/terminfo/a/att4424.

Jest to przydatne dla rozwijania eksperymentalnych definicji, lub gdy nie ma praw zapisu do /usr/lib/terminfo.

Zmienne ca³kowite LINES i COLS s± zdefiniowane w <curses.h> i s± wype³niane przez initscr warto¶ciami, odpowiadaj±cymi rozmiarowi ekranu. Sta³e TRUE i FALSE maj± odpowiednio warto¶ci 1 i 0.

Zmienne curses definiuj± równie¿ zmienn± WINDOW *curscr, która jest u¿ywana do pewnych niskopoziomowych operacji, jak np. oczyszczanie i od¶wie¿anie ekranu, zawieraj±cego ¶mieci. curscr mo¿e byæ u¿yte tylko w niektórych funkcjach.

Nazwy funkcji i argumentów

Wiele funkcji curses ma dwie lub wiêcej wersji. Zmienne, poprzedzone w, wymagaj± argumentu okna. Zmienne poprzedzone p wymagaj± argumentu padu. Funkcje bez przedrostka odnosz± siê w ogólno¶ci do stdscr.

Zmienne z przedrostkiem mv wymagaj± wspó³rzêdnych y i x, wskazuj±cych miejsce ekranu, do którego nale¿y siê przenie¶æ przed dokonaniem akcji. Funkcje te wymuszaj± wywo³anie move przed wywo³aniem innej funkcji. Wspó³rzêdna y zawsze odnosi siê do wiersza (okna), a x do kolumny. Górny lewy naro¿nik ma wspó³rzêdne (0,0), nie (1,1).

Funkcje z przedrostkiem mvw pobieraj± zarówno argument okna, jak i parametry wspó³rzêdnych. Argument okna jest zawsze podawany przed wspó³rzêdnymi.

W ka¿dym wypadku, win jest oknem, a pad padem, na które wp³ywa funkcja. win i pad s± zawsze wska¼nikami do typu WINDOW.

Funkcje ustawiaj±ce opcje wymagaj± flagi logicznej bf, której warto¶æ wynosi albo TRUE, albo FALSE; bf jest zawsze typu bool. Zmienne ch i attrs ni¿ej, s± zawsze typu chtype. Typy WINDOW, SCREEN, bool, i chtype s± zdefiniowane w <curses.h>. Typ TERMINAL jest zdefiniowany w <term.h>. Wszystkie pozosta³e argumenty s± typu integer.

Indeks nazw funkcji

W poni¿szej tablicy podano ka¿d± z funkcji curses, wskazuj±c przy okazji odpowiadaj±c± jej stronê podrêcznika man. Funkcje oznaczone `*', s± specyficzne dla ncurses, nieopisane przez XPG4 i SVr4.

Nazwa funkcji    Nazwa strony podrêcznika

___________________________________________

addch                  curs_addch(3X)

addchnstr              curs_addchstr(3X)

addchstr               curs_addchstr(3X)

addnstr                curs_addstr(3X)

addstr                 curs_addstr(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)

border                 curs_border(3X)

box                    curs_border(3X)

can_change_color       curs_color(3X)

cbreak                 curs_inopts(3X)

clear                  curs_clear(3X)

clearok                curs_outopts(3X)

clrtobot               curs_clear(3X)

clrtoeol               curs_clear(3X)

color_content          curs_color(3X)

copywin                curs_overlay(3X)

curs_set               curs_kernel(3X)

def_prog_mode          curs_kernel(3X)

def_shell_mode         curs_kernel(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)

echochar               curs_addch(3X)

endwin                 curs_initscr(3X)

erase                  curs_clear(3X)

erasechar              curs_termattrs(3X)

filter                 curs_util(3X)

flash                  curs_beep(3X)

flushinp               curs_util(3X)

getbegyx               curs_getyx(3X)

getch                  curs_getch(3X)

getmaxyx               curs_getyx(3X)

getmouse               curs_mouse(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)

hline                  curs_border(3X)

idcok                  curs_outopts(3X)

idlok                  curs_outopts(3X)

immedok                curs_outopts(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)

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)

is_linetouched         curs_touch(3X)

is_wintouched          curs_touch(3X)

isendwin               curs_initscr(3X)

keyname                curs_util(3X)

keypad                 curs_inopts(3X)

killchar               curs_termattrs(3X)

leaveok                curs_outopts(3X)

longname               curs_termattrs(3X)

meta                   curs_inopts(3X)

mouseinterval          curs_mouse(3X)*

mousemask              curs_mouse(3X)*

move                   curs_move(3X)

mvaddch                curs_addch(3X)

mvaddchnstr            curs_addchstr(3X)

mvaddchstr             curs_addchstr(3X)

mvaddnstr              curs_addstr(3X)

mvaddstr               curs_addstr(3X)

mvcur                  curs_terminfo(3X)

mvdelch                curs_delch(3X)

mvderwin               curs_window(3X)

mvgetch                curs_getch(3X)

mvgetstr               curs_getstr(3X)

mvinch                 curs_inch(3X)

mvinchnstr             curs_inchstr(3X)

mvinchstr              curs_inchstr(3X)

mvinnstr               curs_instr(3X)

mvinsch                curs_insch(3X)

mvinsnstr              curs_insstr(3X)

mvinsstr               curs_insstr(3X)

mvinstr                curs_instr(3X)

mvprintw               curs_printw(3X)

mvscanw                curs_scanw(3X)

mvwaddch               curs_addch(3X)

mvwaddchnstr           curs_addchstr(3X)

mvwaddchstr            curs_addchstr(3X)

mvwaddnstr             curs_addstr(3X)

mvwaddstr              curs_addstr(3X)

mvwdelch               curs_delch(3X)

mvwgetch               curs_getch(3X)

mvwgetstr              curs_getstr(3X)

mvwin                  curs_window(3X)

mvwinch                curs_inch(3X)

mvwinchnstr            curs_inchstr(3X)

mvwinchstr             curs_inchstr(3X)

mvwinnstr              curs_instr(3X)

mvwinsch               curs_insch(3X)

mvwinsnstr             curs_insstr(3X)

mvwinsstr              curs_insstr(3X)

mvwinstr               curs_instr(3X)

mvwprintw              curs_printw(3X)

mvwscanw               curs_scanw(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)

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)

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)

setscrreg              curs_outopts(3X)

setsyx                 curs_kernel(3X)

setterm                curs_terminfo(3X)

setupterm              curs_terminfo(3X)

slk_attroff            curs_slk(3X)

slk_attron             curs_slk(3X)

slk_attrset            curs_slk(3X)

slk_clear              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)

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)

typeahead              curs_inopts(3X)

unctrl                 curs_util(3X)

ungetch                curs_getch(3X)

ungetmouse             curs_mouse(3X)*

untouchwin             curs_touch(3X)

use_env                curs_util(3X)

vidattr                curs_terminfo(3X)

vidputs                curs_terminfo(3X)

vline                  curs_border(3X)

vwprintw               curs_printw(3X)

vwscanw                curs_scanw(3X)

waddch                 curs_addch(3X)

waddchnstr             curs_addchstr(3X)

waddchstr              curs_addchstr(3X)

waddnstr               curs_addstr(3X)

waddstr                curs_addstr(3X)

wattroff               curs_attr(3X)

wattron                curs_attr(3X)

wattrset               curs_attr(3X)

wbkgd                  curs_bkgd(3X)

wbkgdset               curs_bkgd(3X)

wborder                curs_border(3X)

wclear                 curs_clear(3X)

wclrtobot              curs_clear(3X)

wclrtoeol              curs_clear(3X)

wcursyncup             curs_window(3X)

wdelch                 curs_delch(3X)

wdeleteln              curs_deleteln(3X)

wechochar              curs_addch(3X)

wenclose               curs_mouse(3X)*

werase                 curs_clear(3X)

wgetch                 curs_getch(3X)

wgetnstr               curs_getstr(3X)

wgetstr                curs_getstr(3X)

whline                 curs_border(3X)

winch                  curs_inch(3X)

winchnstr              curs_inchstr(3X)

winchstr               curs_inchstr(3X)

winnstr                curs_instr(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)

wmove                  curs_move(3X)

wnoutrefresh           curs_refresh(3X)

wprintw                curs_printw(3X)

wredrawln              curs_refresh(3X)

wrefresh               curs_refresh(3X)

wresize                curs_resize(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)

wvline                 curs_border(3X)

WARTO¦Æ ZWRACANA

Funkcje, które zwracaj± integer, zwracaj± ERR w wypadku b³êdu, a po sukcesie dowolny inny integer. (chyba ¿e zaznaczono inaczej w opisie funkcji).

Wszystkie makra zwracaj± warto¶æ wersji w, poza setscrreg, wsetscrreg, getyx, getbegyx, getmaxyx. Warto¶ci zwracane setscrreg, wsetscrreg, getyx, getbegyx, i getmaxyx s± niezdefiniowane (np. nie powinny byæ u¿ywane jako instrukcje prawej strony przypisañ).

Funkcje, które zwracaj± wska¼niki, po b³êdzie zwracaj± NULL.

ZOBACZ TAK¯E

terminfo(5) oraz strony 3X , których nazwa zaczyna siê od "curs_".

ROZSZERZENIA

Biblioteka curses mo¿e byæ skompilowana z opcj± (-DTERMCAP_FILE), która powoduje skok wstecz, do starodawnego pliku /etc/termcap, je¶li nie ma odpowiedniego wpisu w terminfo. U¿ycie tej w³a¶ciwo¶ci nie jest zalecane, gdy¿ w zasadzie w³±cza ona do kodu startowego curses ca³y kompilator termcapa.

Kompilowanie z -DTERMCAP_FILE zmienia sekwencjê inicjalizacji biblioteki, na sposób podobny do 4.4BSD curses. Je¶li nie ma ¿adnego terminfo, opowiadaj±cego TERM, to biblioteka zaczyna szukaæ wpisów termcap. Robi to w nastêpuj±cych miejscach: (1) je¶li TERMINFO nie jest zdefiniowane, w pliku o nazwie TERMCAP_FILE; (2) je¶li zdefiniowano TERMINFO, i nazwa zaczyna siê od uko¶nika, to jest interpretowane jako nazwa pliku termcap, w którym nale¿y szukaæ TERM; (3) gdy TERMINFO ma napis prowadz±cy, który wygl±da jak lista wpisów nazw terminala i odpowiada TERM, to zawarto¶æ TERMINFO jest interpretowana jako termcap; (4) je¶li terminfo wygl±da jak termcap, lecz nie zawiera TERM, plik termcap jest przeszukiwany w¶ród oddzielonych dwukropkami ¶cie¿ek TERMPATHS, o ile jest ono zdefiniowane i w ~/.termcap i ostatecznie w warto¶ci plikowej TERMCAP_FILE.

Wersje curses, skompilowane na PC, wspieraj± znaki PC ROM (zawieraj±ce znaki 0-31, których curses z SVr4 nie potrafi wy¶wietliæ). Zobacz sekcje ROZSZERZENIA w curs_addch(3x) i curs_attr(3x).

PRZENO¦NO¦Æ

Bibliotekê curses zaprojektowano jako zgodn± ze standardem XSI Curses na poziomie podstawowym. Obs³ugiwane s± pewne partie rozszerzonych XSI Curses (³±cznie z obs³ug± koloru). Nie zaimplementowano jeszcze nastêpuj±cych wywo³añ rozszerzonego XSI Curses, zwi±zanych z obs³ug± szerokich (wielobajtowych) znaków: addnwstr, addwstr, mvaddnwstr, mvwaddnwstr, mvaddwstr, waddnwstr, waddwstr, add_wch, wadd_wch, mvadd_wch, mvwadd_wch, add_wchnstr, add_wchstr, wadd_wchnstr, wadd_wchstr, mvadd_wchnstr, mvadd_wchstr, mvwadd_wchnstr, mvwadd_wchstr, bkgrndset, bkgrnd, getbkgrnd, wbkgrnd, wbkgrndset, wgetbkgrnd, border_set, wborder_set, box_set, hline_set, mvhline_set, mvvline_set, mvwhline_set, mvwvline_set, whline_set, vhline_set, wvline_set, echo_wchar, wecho_wchar, erasewchar, killwchar, get_wch, mvget_wch, mvwget_ch, wget_wch, getwchtype, get_wstr, getn_wstr, wget_wstr, wgetn_wstr, mvget_wstr, mvgetn_wstr, mvwget_wstr, mvwgetn_wstr, innwstr, inwstr, winnwstr, winwstr, mvinnwstr, mvinwstr, mvwinnwstr, mvwinwstr, ins_nwstr, ins_wstr, mvins_nwstr, mvins_wstr, mvwins_nwstr, mvwins_wstr, wins_nwstr, wins_wstr, ins_wch, wins_wch, mvins_wch, mvwins_wch, in_wch, win_wch, mvin_wch, mvwin_wch, inwchstr, inwchnstr, winwchstr, winwchnstr, mvinwchstr, mvinwchnstr, mvinwchstr, mvwinwchnstr.

Niewielka ilo¶æ ró¿nic (to jest poszczególnych ró¿nic miêdzy XSI Curses, a wywo³aniami curses) jest opisywana w sekcjach PRZENO¦NO¦Æ konkretnych stron podrêcznika man.

Format terminfo, obs³ugiwany przez curses jest binarnie zgodny z SVr$, lecz nie jest zgodny z XSI curses. Jest tak, poniewa¿ ludzie od XSI Curses, w przyp³ywie uszkodzenia mózgu, zmienili nieudokumentowan± w³a¶ciwo¶æ SVr4 getm z napisu na warto¶æ logiczn±, zmieniaj±c przez to offsety binarne wszystkich pozosta³ych w³a¶ciwo¶ci.

Funkcje getmouse, mousemask, ungetmouse, mouseinterval i wenclose, zwi±zane z mysz±, nie s± czê¶ci± XPG4 ani SVr$. Zobacz dla dalszych szczegó³ów curs_mouse(3X).

Funkcja wresize nie jest czê¶ci± XPG4, i nie jest obecna w SVr4. Wiêcej szczegó³ów znajdziesz w curs_resize(3X).

W historycznych wersjach curses, opó¼nienia zawarte we w³a¶ciwo¶ciach cr, ind, cub1, ff i tab uaktywnia³y odpowiadaj±ce im bity opó¼nieñ w UNIX-owym sterowniku tty. W tej implementacji wype³nianie jest dokonywane wys³aniami znaków NUL. Metoda ta jest trochê bardziej kosztowna, lecz znacz±co zawê¿a interfejs z j±drem UNIX-a i odpowiednio do tego polepsza przeno¶no¶æ pakietu.

W standardzie XSI i w stronach podrêcznika SVr4, wiele wpisów ma argumenty prototypopwe char *const (lub cchar_t *const, lub wchar_t *const, lub void *const). Zale¿nie od interpretacji standardu ANSI C (zobacz sekcjê 3.5.4.1), deklaracje te s± (a) bez znaczenia, lub (b) bez znaczenia i niedozwolone. Deklaracja const char *x to modyfikowalny wska¼nik do modyfikowalnych danych, lecz char *const x to niemodyfikowalny wska¼nik do modyfikowalnych danych. Poniewa¿ C przekazuje argumenty przez warto¶æ, <typ> *const jako typ formalny jest co najmniej w±tpliwy. Ta wiêc w tej implementacji zamieniono je globalnie na const <type> *.

UWAGI

Plik nag³ówkowy <curses.h> automatycznie w³±cza pliki <stdio.h> i <unctrl.h>.

Jesli standardowe wyj¶cie, programu curses jest przekierowywane do czego¶, co nie jest tty, od¶wie¿enia ekranu bêd± kierowane na standardowe wyj¶cie b³êdu. Jest to nieudokumentowana w³a¶ciwo¶æ curses z AT&T SVr3.

AUTORZY

Zeyd M. Ben-Halim, Eric S. Raymond. Zej¶cie z oryginalnych pcurses zrobi³ Pavel Curtis.