ncurses(3X) Apeluri de biblioteca ncurses(3X) NUME ncurses - interfaa terminal caracter-celula cu ieire optimizata SINOPSIS #include DESCRIERE Biblioteca ,,new curses" ofera programatorului un mijloc independent de terminal de a citi intrarile tastaturii i ale mouse-ului i de a scrie pe afiaje cu celule de caractere cu ieire optimizata pentru a minimiza actualizarile ecranului. ncurses inlocuiete bibliotecile curses din System V Release 4 Unix (,,SVr4") i 4.4BSD Unix, a caror dezvoltare a incetat in anii 1990. Acest document descrie ncurses versiunea 6.6 (patch 20251230). 0urses permite controlul coninutului ecranului terminalului; abstractizarea i subdivizarea acestuia cu windows i pads; preluarea evenimentelor tastaturii i mouse-ului; selectarea culorilor i a atributelor de redare (cum ar fi aldin sau subliniere); definirea i utilizarea tastelor soft label; accesul la baza de date terminfo a capacitailor terminalului; o interfaa de compatibilitate termcap; i o abstractizare a API a sistemului pentru manipularea terminalului (cum ar fi termios(3)). ncurses implementeaza interfaa descrisa de Curses X/Open ediia 7. In multe detalii comportamentale care nu sunt standardizate de X/Open, ncurses emuleaza biblioteca curses din SVr4 i ofera numeroase extensii utile. Paginile de manual 0urses utilizeaza mai multe seciuni pentru a clarifica aspecte legate de utilizare i interoperabilitate cu alte implementari curses. o Seciunea <> descrie problemele i avertismentele de care orice utilizator al API-ului ncurses ar trebui sa fie contient, cum ar fi limitarile privind dimensiunea unui tip integral subiacent sau disponibilitatea unei macroinstruciuni de preprocesor exclusiv din definiia unei funcii (care impiedica preluarea adresei sale). Aceasta seciune descrie, de asemenea, detalii de implementare care vor fi semnificative pentru programator, dar care nu sunt standardizate. o Seciunea <> prezinta inovaiile ncurses care depaesc standardul Curses X/Open i/sau implementarea curses SVr4. Acestea sunt denumite extensions (extensii) pentru a indica faptul ca nu pot fi implementate numai prin utilizarea API-ului bibliotecii, ci necesita acces la starea interna a bibliotecii. o Seciunea <> abordeaza aspecte (dincolo de exercitarea extensiilor) care ar trebui luate in considerare atunci cand se scrie pentru un standard curses, sau pentru implementari multiple. o Seciunea <> examineaza punctele de detaliu din ncurses i alte implementari curses de-a lungul deceniilor de dezvoltare a acestora, in special acolo unde precedentul sau ineria au impiedicat o mai buna proiectare (i, in cateva cazuri, unde o astfel de inerie a fost depaita). O aplicaie curses trebuie legata cu biblioteca; utilizai opiunea -lncurses a compilatorului sau editorului de legaturi. Este posibil sa fie disponibila o versiune de depanare a bibliotecii; in acest caz, facei legatura cu aceasta folosind -lncurses_g; (este posibil ca integratorul sistemului dumneavoastra sa fi instalat aceste biblioteci astfel incat sa putei utiliza opiunile -lcurses i, respectiv, -lcurses_g). Biblioteca ncurses_g inregistreaza evenimentele care descriu aciunile ncurses intr-un fiier numit trace in directorul de lucru al aplicaiei la pornire. A se vedea seciunea <II ALTERNATIVE\[u00BB] de mai jos. Structura aplicaiei O aplicaie curses utilizeaza informaii din configuraia regionala a sistemului; setlocale(3) o pregatete pentru apelurile bibliotecii curses. setlocale(LC_ALL, ""); Daca configuraia regionala nu este astfel iniializata, biblioteca presupune ca toate caracterele sunt imprimabile ca in ISO 8859-1, pentru a funciona cu anumite programe vechi. Ar trebui sa iniializai configuraia regionala; nu va ateptai la un comportament consecvent din partea bibliotecii atunci cand parametrii regionali nu au fost configurai. initscr(3X) sau newterm(3X) trebuie sa fie apelate pentru a iniializa curses inainte de utilizarea oricaror funcii care acceseaza sau manipuleaza ferestre sau ecrane. Pentru a obine intrarea caracter cu caracter fara ecou - majoritatea programelor interactive, orientate spre ecran doresc acest lucru - utilizai urmatoarea secvena. initscr(); cbreak(); noecho(); Majoritatea aplicaiilor vor efectua configurarea urmatoare dupa cum se arata in continuare. noqiflush(); keypad(stdscr, TRUE); Un program curses intra apoi adesea intr-o bucla de gestionare a evenimentelor. Apelai endwin(3X) inainte de a iei. Prezentare generala O biblioteca curses abstractizeaza terminalul cu o structura de date SCREEN i reprezinta totul sau o parte a afiajului sau cu structuri WINDOW. Proprietai distincte se aplica fiecareia; de exemplu, disciplina liniei a unui controlor de terminal Unix tipic este in unul din cele trei moduri: brut, cbreak sau (<>) canonic. In curses, disciplina liniei este o proprietate a ecranului, care se aplica identic tuturor ferestrelor asociate cu acesta. O fereastra window este o grila dreptunghiulara de celule de caractere, adresata prin coordonate de linie i coloana (y, x), cu colul din stanga sus (0, 0). O fereastra numita stdscr, in mod implicit de aceeai dimensiune ca ecranul terminalului, este intotdeauna disponibila. Creai altele cu newwin(3X). O biblioteca curses nu gestioneaza ferestrele care se suprapun (dar a se vedea mai jos). Putei fie sa utilizai stdscr pentru a gestiona o singura fereastra care umple ecranul, fie sa imparii ecranul in ferestre care nu se suprapun i sa nu utilizai deloc stdscr. Amestecarea celor doua abordari va duce la efecte imprevizibile i nedorite. Funciile permit manipularea unei ferestre i a cursorului care identifica celula din interiorul acesteia in care va avea loc urmatoarea operaie. Printre acestea, cele mai de baza sunt move(3X) i addch(3X): acestea plaseaza cursorul in interiorul i, respectiv, scriu un caracter pe stdscr. Modificarile frecvente ale ecranului terminalului pot provoca palpairi neplacute sau utilizarea ineficienta a canalului de comunicare cu dispozitivul, astfel incat biblioteca nu il actualizeaza in general in mod automat. Prin urmare, dupa utilizarea funciilor curses pentru a acumula un set de actualizari dorite care au sens sa fie prezentate impreuna, apelai refresh(3X) pentru a spune bibliotecii sa faca ecranul utilizatorului sa arate ca stdscr. Biblioteca optimizeaza rezultatul sau prin calcularea unui numar minim de operaii pentru a muta ecranul de la starea sa de la actualizarea anterioara la cea noua. O optimizare eficienta necesita informaii precise despre dispozitivul terminal: gestionarea acestor informaii este de competena API-ului terminfo(3X), o caracteristica a fiecarei implementari curses standard. De asemenea, pot fi manipulate ferestre speciale numite pads. Acestea nu sunt limitate la dimensiunea ecranului terminalului i coninutul lor nu trebuie sa fie afiat complet. A se vedea curs_pad(3X). Multe terminale accepta configurarea culorilor de prim-plan i de fundal ale celulelor de caractere, precum i attributes, care determina redarea caracterelor in moduri precum font aldin, subliniat sau in video invers. Consultai curs_color(3X) i curs_attr(3X). curses definete constante pentru a simplifica accesul la un set mic de grafice pentru desenarea formelor corespunzatoare setului de caractere alternative DEC (ACS), o caracteristica a VT100 i a altor terminale. A se vedea addch(3X). curses este implementat folosind controlorul de terminal al sistemului de operare; evenimentele legate de taste nu sunt recepionate sub forma de coduri de scanare, ci ca secvene de octei. Controlorul raporteaza tastele grafice (tastele alfanumerice i de punctuaie, precum i spaiul) ca atare. Orice altceva, inclusiv tastele Tab, enter/return, tastatura numerica, sageile i tastele funcionale, apar in curses sub forma unui caracter de control sau a unei secvene de eludare multi-octet. curses le poate traduce pe acestea din urma in coduri de taste unice. A se vedea keypad(3X) i getch(3X). ncurses ofera reimplementari ale bibliotecilor SVr4 panel(3X), form(3X) i menu(3X); acestea permit suprapunerea ferestrelor i faciliteaza construirea de interfee cu utilizatorul folosind curses. Iniializare Selectarea unei valori adecvate a TERM in mediul procesului este eseniala pentru funcionarea corecta a bibliotecilor curses i terminfo. Un sistem bine configurat selecteaza automat o valoare TERM corecta; tset(1) poate ajuta la depanarea situaiilor exotice. Daca modificai tipul terminalului dintr-un shell, exportai variabila de mediu TERM, apoi rulai tset(1) sau comanda <>. Consultai subseciunea <i iniializare>> din terminfo(5). Daca variabilele de mediu LINES i COLUMNS sunt definite sau daca programul curses se executa intr-un mediu de ferestre grafice, informaiile astfel obinute le inlocuiesc pe cele obinute prin terminfo. O extensie ncurses permite redimensionarea afiajelor terminalelor; a se vedea wresize(3X). Daca variabila de mediu TERMINFO este definita, un program curses verifica mai intai daca exista o descriere a tipului de terminal in locaia pe care o identifica. TERMINFO este utila pentru elaborarea descrierilor de tip sau atunci cand nu este disponibila permisiunea de scriere la /usr/share/terminfo. A se vedea seciunea <> de mai jos. Convenii de denumire curses ofera multe funcii in forme variate folosind un set regulat de alternative la numele uneia elementare. Cele cu prefixul ,,w" necesita un argument de indicator WINDOW; cele cu prefixul ,,mv" efectueaza mai intai micarea cursorului folosind wmove(3X); prefixul ,,mvw" indica ambele. Funcia ,,w" este de obicei cea elementara; eliminarea acestui prefix indica de obicei operarea cu stdscr. Patru funcii prefixate cu ,,p" necesita un argument pad; a se vedea mai jos. In sinopsisurile funciilor, paginile de manual ncurses aplica urmatoarele denumiri parametrilor. Vom introduce tipurile de caractere in subseciunea urmatoare. bf o valoare booleana (TRUE sau FALSE) c un caracter sau un nr. intreg ch un chtype wc un wchar_t sau wint_t wch un cchar_t win indicator catre o fereastra WINDOW pad indicator catre o fereastra WINDOW care este un pad (fereastra de dimensiuni reduse) pair un identificator al perechii de culori prim-plan/fundal Configuraii de caractere late i nelate Aceasta pagina de manual analizeaza in principal funciile care apar in orice configuraie a bibliotecii. Exista doua configuraii comune; pentru altele, consultai seciunea <II ALTERNATIVE>> de mai jos. ncurses este biblioteca in configuraia sa ,,non-wide", care gestioneaza numai caractere pe opt bii. Aceasta stocheaza un caracter combinat cu atribute i un identificator de pereche de culori intr-un datum chtype, care este adesea un alias al lui int. Un ir de caractere curses este similar unui ir C char; un ir chtype se termina cu un 0 integral, caracterul curses nul. Atributele i identificatorul unei perechi de culori (fara caracterul corespunzator) pot fi stocate in variabile de tip chtype sau attr_t. In ambele cazuri, acestea sunt accesate prin intermediul unei mati integrale de bii. Fiecare celula a unei ferestre WINDOW este stocata ca un chtype. Curses X/Open nu specifica dimensiunile codului de caractere sau ale identificatorului perechii de culori, nici cantitatea de bii de atribut, in chtype; acestea sunt dependente de implementare. ncurses utilizeaza opt bii pentru codul caracterului. O aplicaie care necesita un tip de caracter mai lat, de exemplu pentru a reprezenta Unicode, ar trebui sa utilizeze API pentru caractere late. ncursesw este biblioteca in configuraia sa ,,wide", care gestioneaza codurile de caractere care necesita un tip de date mai mare decat poate reprezenta char (un tip de dimensiunea octetului). Aceasta ofera funcii suplimentare care le completeaza pe cele din biblioteca ,,non-wide", atunci cand dimensiunea tipului de caractere de baza este semnificativa. O convenie de denumire oarecum regulata leaga multe dintre variantele ,,wide" de omologii lor ,,non-wide" in cazul in care numele unei funcii ,,non-wide" conine <> sau <>, prefixai-l cu <<_w>> pentru a obine omologul ,,wide" De exemplu, waddch devine wadd_wch. O alta excepie este ins_nwstr (i variantele sale), scris astfel in loc de <>. (Excepiile care adauga doar <> includ addwstr, inwstr i variantele lor). Aceasta convenie este inaplicabila pentru unele nume de funcii ,,non-wide", astfel incat sunt utilizate alte transformari pentru configuraia ,,wide": funcia de gestionare a fundalului ferestrei <> devine <>; funciile de desenare i tergere a marginilor ferestrei sunt sufixate cu <<_set>>; iar funciile de manipulare a atributelor caracterelor precum <> devin <>. cchar_t este un caracter complex curses i corespunde configuraiei chtype a caracterelor ,,non-wide". Este un tip structura deoarece necesita mai multa stocare decat ofera un tip scalar standard. Este posibil ca un cod de caractere sa nu poata fi reprezentat ca un char i, in plus, mai multe caractere pot ocupa o celula (ca in cazul semnelor de accent i al altor diacritice). Fiecare caracter este de tipul wchar_t; un caracter complex conine un caracter de spaiere i zero sau mai multe caractere de nespaiere (a se vedea mai jos). Un ir de caractere complexe se termina cu un cchar_t al carui membru wchar_t este caracterul lat nul. Atributele i identificatorul unei perechi de culori sunt stocate in campuri separate ale structurii, nu combinate intr-un numar intreg ca in chtype. ncurses stocheaza fiecare celula a unei WINDOW ca un cchar_t. setcchar(3X) i getcchar(3X) stocheaza i extrag date cchar_t. API-ul de biblioteca lat al ncurses depinde de doua tipuri de date standardizate de ISO C95. wchar_t stocheaza un caracter lat. Ca i chtype, acesta poate fi un alias al lui int. In funcie de codificarea caracterelor, un caracter lat poate fi spacing, ceea ce inseamna ca ocupa singur o celula de caractere i insoete de obicei avansarea cursorului, sau non-spacing, ceea ce inseamna ca ocupa aceeai celula ca un caracter de spaiere, este adesea considerat un ,,modificator" al glifului de baza cu care se combina i de obicei nu avanseaza cursorul. wint_t poate stoca un wchar_t sau constanta WEOF, in mod analog cu funciile de manipulare a caracterelor de dimensiunea int din ISO C i constanta sa EOF. Indexare dupa numele funciei Tabelul urmator enumera funciile curses furnizate in API-urile ,,non-wide" i ,,wide" i paginile de manual corespunzatoare care le descriu. Cele marcate cu <<*\[u00BB] sunt specifice ncurses, nu sunt descrise de Curses X/Open i nici prezente in SVr4. Numele funciei curses Pagina de manual ----------------------------------------------- COLOR_PAIR curs_color(3X) PAIR_NUMBER curs_color(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_trace curs_trace(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) exit_curses curs_memleaks(3X)* exit_terminfo curs_memleaks(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_escdelay curs_threads(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)* has_mouse curs_mouse(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_cbreak curs_inopts(3X)* is_cleared curs_opaque(3X)* is_echo curs_inopts(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_nl curs_inopts(3X)* is_nodelay curs_opaque(3X)* is_notimeout curs_opaque(3X)* is_pad curs_opaque(3X)* is_raw curs_inopts(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_kernel(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_inopts(3X) nocbreak curs_inopts(3X) nodelay curs_inopts(3X) noecho curs_inopts(3X) nofilter curs_util(3X)* nonl curs_inopts(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) pecho_wchar curs_pad(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_color_pairs curs_color(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_escdelay curs_threads(3X)* set_tabsize curs_threads(3X)* set_term curs_initscr(3X) setcchar curs_getcchar(3X) setscrreg curs_outopts(3X) setsyx curs_kernel(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) slk_wset curs_slk(3X) standend curs_attr(3X) standout (evideniere) 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) tiparm_s curs_terminfo(3X)* tiscan_s 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_screen curs_threads(3X)* use_tioctl curs_util(3X)* use_window curs_threads(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) Extensia screen-pointer extension a ncurses adauga funcii suplimentare corespunzatoare multora dintre cele de mai sus, fiecare cu un sufix ,,_sp"; a se vedea curs_sp_funcs(3X). Disponibilitatea unor extensii este configurabila atunci cand ncurses este compilat; consultai seciunile <II ALTERNATIVE>> i <> de mai jos. VALOAREA RETURNATA Daca nu se indica altfel, funciile care returneaza numere intregi returneaza constantele OK in caz de succes i ERR in caz de eec; a se vedea curs_variables(3X). Funciile care returneaza indicatori returneaza un indicator null in caz de eec. De obicei, ncurses trateaza un indicator nul transmis ca parametru al funciei drept un eec. Funciile prefixate cu <> efectueaza mai intai micarea cursorului i eueaza daca poziia (y, x) este in afara limitelor ferestrei. MEDIU Urmatoarele simboluri din mediul procesului personalizeaza comportamentul aplicaiilor ncurses in timpul rularii. Biblioteca poate fi configurata sa nu ia in considerare variabilele TERMINFO, TERMINFO_DIRS, TERMPATH i HOME, daca utilizatorul este superutilizator (root) sau daca aplicaia utilizeaza setuid(2) sau setgid(2). BAUDRATE Biblioteca de depanare verifica aceasta variabila atunci cand aplicaia a redirecionat ieirea catre un fiier. ncurses interpreteaza valoarea sa integrala ca fiind viteza de linie a terminalului in bii pe secunda. Daca aceasta valoare este absenta sau nu este valida, ncurses utilizeaza 9600. Aceasta caracteristica permite dezvoltatorilor sa construiasca cazuri de testare repetabile care iau in considerare deciziile de optimizare care depind de viteza de linie a terminalului. CC (caracter de comanda) Atunci cand este definita, valoarea capacitaii command_character (cmdch) a intrarilor terminfo incarcate se modifica la valoarea acestei variabile. Foarte puine intrari terminfo ofera aceasta caracteristica. Deoarece acest nume este utilizat i in mediile de dezvoltare pentru a reprezenta numele compilatorului C, ncurses ignora valoarea sa daca nu are un singur caracter. COLUMNS Aceasta variabila specifica laimea ecranului in celule de caractere. Aplicaiile care ruleaza intr-un mediu de ferestre sunt de obicei capabile sa obina laimea ferestrei in care sunt executate. ncurses impune o limita superioara de 512 la citirea valorii. Daca COLUMNS nu este definita i dimensiunea ecranului terminalului nu este disponibila de la controlorul terminalului, ncurses utilizeaza dimensiunea specificata de capacitatea columns (cols) a intrarii tipului de terminal in baza de date terminfo, daca exista. Este important ca aplicaia dumneavoastra sa utilizeze dimensiunea corecta a ecranului. Detectarea automata a acesteia nu este intotdeauna posibila, deoarece o aplicaie poate rula pe o gazda care nu respecta NAWS (Negociations About Window Size) sau cu un ID de utilizator diferit de cel al proprietarului fiierului dispozitivului terminal. Definirea COLUMNS i/sau LINES prevaleaza asupra utilizarii de catre biblioteca a dimensiunii ecranului obinute de la sistemul de operare. Variabilele COLUMNS i LINES pot fi specificate independent. Aceasta proprietate este utila pentru a evita caracteristicile eronate ale descrierilor tipurilor de terminale motenite; descrierile xterm(1) care specifica 65 de linii au fost odata notorii. Pentru rezultate optime, evitai specificarea codurilor de capacitate cols i lines in descrierile terminfo ale emulatoarelor de terminale. use_env(3X) poate dezactiva utilizarea mediului procesului in determinarea dimensiunii ecranului. use_tioctl(3X) poate actualiza COLUMNS i LINES pentru a corespunde dimensiunii ecranului obinute din apelurile sistemului sau din baza de date a terminalului. ESCDELAY Pentru ca curses sa distinga caracterul ESC care rezulta din apasarea de catre utilizator a tastei <> de pe dispozitivul de intrare de cel care incepe o secvena escape(eludare) (aa cum este produs de obicei de tastele funcionale), acesta ateapta dupa primirea caracterului de eludare pentru a vedea daca sunt disponibile alte caractere pe fluxul de intrare intr-un interval scurt. O variabila globala ESCDELAY stocheaza acest interval in milisecunde. Valoarea implicita de 1000 (o secunda) este adecvata pentru majoritatea utilizarilor. Aceasta variabila de mediu o inlocuiete; ncurses impune o limita superioara de 30 000 (30 de secunde) atunci cand citete valoarea. Cel mai frecvent caz in care dorii sa modificai aceasta valoare este acela de a lucra cu o gazda la distana pe un canal de comunicare lent. Daca gazda care ruleaza o aplicaie curses nu primete in timp util caracterele unei secvene de scapare, biblioteca le poate interpreta ca evenimente de apasare a mai multor taste. In schimb, un dactilograf rapid care utilizeaza o conexiune cu latena redusa i care introduce tasta ESC urmata de caractere care corespund unei secvene de eludare poate intalni un comportament confuz al aplicaiei. Evenimentele de mouse xterm(1) sunt o forma de secvena de eludare; prin urmare, daca aplicaia dvs. utilizeaza in mare masura clicuri multiple, este posibil sa dorii sa prelungii valoarea implicita, deoarece intarzierea se aplica evenimentului compozit de clicuri multiple, precum i clicurilor individuale. Aplicaiile portabile nu ar trebui sa se bazeze pe prezena ESCDELAY in niciuna dintre forme, dar definirea variabilei de mediu in locul variabilei globale nu creeaza probleme la compilarea unei aplicaii. Daca keypad(3X) este dezactivata pentru fereastra curses care primete intrarea, ESCDELAY este irelevanta i un program trebuie sa dezambiguizeze singur secvenele de eludare. HOME ncurses poate citi i scrie descrieri auxiliare ale terminalelor in fiierele .termcap i .terminfo din directorul personal al utilizatorului. LINES Aceasta contraparte la COLUMNS specifica inalimea ecranului in caractere. Capacitatea i codul terminfo corespunzator este lines. A se vedea descrierea variabilei COLUMNS de mai sus. MOUSE_BUTTONS_123 (Numai adaptarea pentru OS/2 EMX) OS/2 numeroteaza un mouse cu trei butoane in mod inconsecvent faa de alte platforme, astfel incat 1 este butonul din stanga, 2 cel din dreapta i 3 cel din mijloc. Aceasta variabila personalizeaza numerotarea butoanelor mouse-ului. Valoarea sa trebuie sa fie trei cifre 1-3 in orice ordine. In mod implicit, ncurses presupune o numerotare de ,,132". NCURSES_ASSUMED_COLORS Daca este definita, aceasta variabila inlocuiete presupunerea compilata a bibliotecii ncurses conform careia culorile implicite ale terminalului sunt alb pe negru; consultai default_colors(3X). Definii valorile culorilor de prim-plan i de fundal cu aceasta variabila de mediu atribuindu-i doua valori intregi separate prin virgula, indicand numerele culorilor de prim-plan i, respectiv, de fundal. De exemplu, pentru a-i spune lui ncurses sa nu presupuna nimic cu privire la culori, utilizai o valoare de ,,-1,-1". Pentru a face schema de culori implicita verde pe negru intr-un terminal care utilizeaza atribuiri de culori ANSI X3.64/ECMA-48/ISO 6429, utilizai ,,2,0". ncurses accepta valori intregi de la -1 pana la valoarea capacitaii terminfo max_colors (colors) pentru tipul de terminal selectat. NCURSES_CONSOLE2 (Numai pentru adaptarea din MinGW) Programul Console2 gestioneaza in mod defectuos apelul Microsoft Console API CreateConsoleScreenBuffer. Aplicaiile care il utilizeaza se vor bloca. Cu toate acestea, este posibil sa se simuleze aciunea acestui apel prin atribuirea coordonatelor, salvarea explicita i restaurarea coninutului original al ecranului. Definirea variabilei de mediu NCGDB are acelai efect. NCURSES_GPM_TERMS (Numai Linux) Atunci cand ncurses este configurat pentru a utiliza interfaa GPM, aceasta variabila poate lista una sau mai multe nume de tipuri de terminale, delimitate prin bare verticale (|) sau doua puncte (:), in funcie de care este comparata variabila TERM (a se vedea mai jos). O valoare goala dezactiveaza interfaa GPM, folosind in schimb suportul integrat al ncurses pentru protocoalele de mouse xterm(1). Daca variabila este absenta, ncurses incearca sa deschida GPM daca TERM conine "linuxu00AB]>>. NCURSES_NO_HARD_TABS ncurses poate utiliza caractere de tabulare in optimizarea micarii cursorului. In unele cazuri, este posibil ca controlorul terminalului dvs. sa nu le gestioneze corespunzator. Definii aceasta variabila de mediu la orice valoare pentru a dezactiva caracteristica. De asemenea, putei ajusta parametrii stty(1) pentru a evita problema. NCURSES_NO_MAGIC_COOKIE Multe terminale stocheaza atributele video ca o proprietate a unei celule de caractere, aa cum face curses. In trecut, unele modificari ale atributelor video erau inregistrate ca date care ocupau in mod logic (dar invizibil) celulele caracterelor de pe ecran, activand sau dezactivand atributele, similar cu etichetele dintr-un limbaj de marcare, care apoi trebuiau suprascrise pentru a descrie coninutul dorit al celulelor; acestea sunt denumite ,,cookie-uri magice - magic cookies". Daca intrarea terminfo pentru tipul dvs. de terminal nu descrie in mod adecvat modul de gestionare a cookie-urilor magice, definii aceasta variabila la orice valoare pentru a instrui ncurses sa dezactiveze complet atributele. NCURSES_NO_PADDING Majoritatea descrierilor tipurilor de terminale din baza de date terminfo detaliaza dispozitivele hardware. Multe persoane utilizeaza aplicaii bazate pe curses in programe emulatoare de terminale care ruleaza intr-un mediu cu ferestre. Aceste programe pot reproduce toate caracteristicile importante ale unui terminal hardware, dar adesea lipsesc limitarile acestora. Principala problema a acestor dezavantaje absente este gestionarea fluxului de date, adica limitarea vitezei de comunicare la ceea ce hardware-ul poate gestiona. Cu excepia cazului in care un terminal hardware este interfaat cu un concentrator de terminale (care efectueaza controlul fluxului), o aplicaie trebuie sa gestioneze singura controlul fluxului pentru a preveni depairile i pierderea datelor. O soluie care nu implica costuri hardware este ca aplicaia sa intrerupa transmisia dupa ce a dat instruciuni terminalului sa execute o operaie pe care o efectueaza lent, cum ar fi tergerea afiajului. Multe descrieri ale tipurilor de terminale, inclusiv cea pentru VT100, includ specificaii de intarziere in capacitai. Este posibil sa dorii sa utilizai aceste descrieri de terminale fara a suferi pierderi de performana. Definii NCURSES_NO_PADDING la orice valoare pentru a dezactiva toate umpluturile, cu excepia celor obligatorii. Umplerea obligatorie este utilizata de capacitai de terminal precum flash_screen (flash). NCURSES_NO_SETBUF (Obsoleta ) Inainte de modificarile interne dezvoltate in ncurses 5.9 (plasturii 20120825 pana la 20130126), biblioteca folosea setbuf(3) pentru a activa ieirea stocata complet in tampon la iniializarea terminalului. Acest lucru a fost facut, precum in SVr4 curses, pentru a crete performana. In scopuri de testare, atat a ncurses, cat i a anumitor aplicaii, aceasta caracteristica a fost facuta opionala. Definirea acestei variabile a dezactivat stocarea in tampon a ieirii, lasand fluxul de ieire in modul original (de obicei, stocarea in tampon de linie). In prezent, ncurses realizeaza propria sa stocare in tampon i nu necesita aceasta soluie; nu modifica stocarea in tampon a fluxului de ieire standard. Aceasta abordare face ca gestionarea semnalelor iniiate de la tastatura de catre biblioteca sa fie mai robusta. Un dezavantaj este ca anumite programe neconvenionale amestecau apelurile stdio(3) cu apelurile ncurses i (de obicei) obineau comportamentul ateptat. Acesta nu mai este cazul; \%ncurses nu scrie in descriptorul de fiier de ieire standard printr-un flux cu tampon stdio. Ca un caz special, apelurile API de nivel scazut precum putp(3X) utilizeaza in continuare fluxul de ieire standard. Apelurile curses de nivel inalt precum printw(3X) nu o fac. NCURSES_NO_UTF8_ACS La iniializare, ncurses inspecteaza variabila de mediu TERM pentru cazurile speciale in care se tie ca anumite caractere VT100 (i capacitaile corespunzatoare ale setului de caractere alternative terminfo) nu sunt acceptate de tipurile de terminale care pretind compatibilitatea VT100. Mai exact, atunci cand ruleaza intr-o configuraie regionala UTF-8, dispozitivul de consola virtuala Linux i programul GNU screen(1) le ignora. Definii aceasta variabila la o valoare diferita de zero pentru a instrui ncurses ca suportul ACS al terminalului este deteriorat; biblioteca emite apoi puncte de cod Unicode care corespund caracterelor de desenare a formatelor. Definii-o la zero (sau un numar neintreg) pentru a dezactiva verificarea speciala a numelor tipurilor de terminale care se potrivesc cu <> sau <>, determinand ncurses sa presupuna ca funcia ACS funcioneaza daca descrierea tipului de terminal o anuna. Ca alternativa la utilizarea acestei variabile, ncurses verifica o capacitate numerica extinsa terminfo U8 care poate fi compilata utilizand ,,tic -x". Urmarii exemplele. # consola linux, daca i s-au aplicat corecii pentru a oferi # funcionarea VT100 shift-in/shift-out, cu fontul corespunzator. linux-vt100|linux console with VT100 line-graphics, U8#0, use=linux, # uxterm cu resursa vt100Graphics definita la ,,false" xterm-utf8|xterm relying on UTF-8 line-graphics, U8#1, use=xterm, Numele de doua caractere ,,U8" a fost ales pentru a permite utilizarea sa prin interfaa termcap a ncurses. NCURSES_TRACE La iniializare, ncurses (in configuraia sa de depanare) verifica prezena acestei variabile. Daca este definita cu o valoare integrala, biblioteca apeleaza curses_trace(3X) cu acea valoare ca argument. TERM Variabila TERM denota tipul terminalului. Fiecare este distinct, dei multe sunt similare. Este de obicei definita de emulatoarele de terminale pentru a ajuta aplicaiile sa gaseasca o descriere acceptabila a terminalului. Unele aleg o aproximare populara, cum ar fi ,,ansi", ,,vt100" sau ,,xterm", in loc de o potrivire exacta a capacitailor lor. Nu de puine ori, o aplicaie va avea probleme cu aceasta abordare; de exemplu, o apasare de tasta poate sa nu funcioneze corect sau sa nu produca niciun efect, ci doar caractere aparent de gunoi pe ecran. Definirea TERM nu are niciun efect asupra funcionarii hardware; aceasta afecteaza modul in care aplicaiile comunica cu terminalul. De asemenea, ca regula generala (xterm(1) fiind o excepie rara), emulatoarele de terminale care va permit sa specificai TERM ca parametru sau valoare de configurare nu ii modifica comportamentul pentru a corespunde acestei valori. TERMCAP Daca ncurses este configurat cu suport termcap, acesta verifica o descriere a tipului de terminal in format termcap daca nu este disponibila una in format terminfo. Definirea acestei variabile determina ncurses sa ignore locaia obinuita a bazei de date termcap, /etc/termcap; consultai TERMPATH mai jos. TERMCAP trebuie sa conina fie o descriere a terminalului (fara linii noi), fie un nume de fiier care sa indice unde sunt stocate informaiile solicitate de variabila de mediu TERM. TERMINFO ncurses poate fi configurat pentru a citi bazele de date de descriere a tipului de terminal in diverse locaii, utilizand formate diferite. Aceasta variabila prevaleaza asupra locaiei implicite. o Descrierile in format terminfo sunt stocate in mod normal intr-un arbore de directoare care utilizeaza subdirectoare denumite dupa primele litere comune ale tipurilor de terminale denumite in acestea. System V a folosit aceasta schema. o Daca ncurses este configurat sa utilizeze baze de date rezumate ,,hashed", atunci TERMINFO poate numi locaia sa, cum ar fi /usr/share/terminfo.db, in loc de /usr/share/terminfo/. Baza de date rezumata utilizeaza mai puin spaiu pe disc i este puin mai rapida decat arborele de directoare. Cu toate acestea, unele aplicaii presupun existena arborelui de directoare i il citesc direct, ignorand API-ul terminfo. o Daca ncurses este configurat cu suport termcap, aceasta variabila poate conine locaia unui fiier termcap. o Daca valoarea TERMINFO incepe cu ,,hex:" sau ,,b64:", ncurses utilizeaza restul valorii ca o descriere compilata terminfo. Putei produce formatul base64 utilizand infocmp(1M). TERMINFO=$(infocmp -0 -Q2 -q) export TERMINFO ncurses utilizeaza descrierea compilata numai daca aceasta corespunde tipului de terminal identificat de TERM. Definirea TERMINFO este cea mai simpla, dar nu singura, modalitate de a direciona ncurses catre o baza de date a terminalului. Ruta de cautare este urmatoarea. o ultima baza de date a terminalului in care a scris aplicaia ncurses, daca exista o locaia specificata de variabila de mediu TERMINFO o $HOME/.terminfo o locaiile enumerate in variabila de mediu TERMINFO_DIRS o location(s) configured and compiled into ncurses o /usr/share/terminfo TERMINFO_DIRS Aceasta variabila specifica o lista de locaii, asemanatoare cu PATH, in care ncurses cauta descrierile tipurilor de terminale descrise de TERMINFO mai sus. Elementele listei sunt separate prin doua puncte in Unix i punct i virgula in OS/2 EMX. terminfo System V nu are o funcie corespunzatoare; TERMINFO_DIRS este o extensie ncurses. TERMPATH Daca TERMCAP nu conine o descriere a tipului de terminal sau un nume de fiier, atunci ncurses verifica coninutul TERMPATH, o lista de locaii, asemanatoare cu PATH, in care cauta descrieri ale tipului de terminal termcap. Elementele listei sunt separate prin doua puncte in Unix i punct i virgula in OS/2 EMX. terminfo System V nu are o funcie corespunzatoare; TERMINFO_DIRS este o extensie ncurses. Daca TERMCAP i TERMPATH nu sunt definite sau nu sunt valide, ncurses cauta fiierele /etc/termcap, /usr/share/misc/termcap i $HOME/.termcap, in aceasta ordine. CONFIGURAII ALTERNATIVE Sunt posibile multe configuraii ncurses diferite, determinate de opiunile oferite scriptului configure la crearea bibliotecii. Rulai scriptul cu opiunea --help pentru a le parcurge pe toate. Cateva sunt deosebit de importante pentru dezvoltatorul de aplicaii care utilizeaza ncurses. --disable-overwrite Evita conflictele de nume de fiiere intre ncurses i o instalare curses existenta in sistem. Includerea standard a preprocesorului C pentru biblioteca curses este urmatoarea. #include Daca ncurses este instalat cu opiunea de dezactivare a suprascrierii acesta ii pune fiierele de antet intr-un subdirector. Iata un exemplu. #include Cu opiunea --disable-overwrite, instalarea omite i o legatura simbolica care ar determina opiunea -lcurses a compilatorului sa lege fiierele obiect cu ncurses in loc de biblioteca de sistem curses. Directorul utilizat de aceasta configuraie a ncurses este prezentat in seciunea <> de mai sus. --enable-widec (implicita pentru ABI 6+ incepand cu 21.10.2023) Activeaza suportul pentru caractere late. Scriptul configure redenumete biblioteca ncurses (i biblioteca tinfo, daca este specificata i --with-termlib), adaugand "wu00AB]>>. O aplicaie care dorete suport pentru caractere late utilizeaza apoi -lncursesw (sau -ltinfow) in loc de -lncurses (sau -ltinfo) ca opiune de legatura. Bibliotecile ncurses++, panel, form i menu sunt redenumite in mod similar. O aplicaie trebuie sa defineasca, de asemenea, anumite simboluri ale preprocesorului C pentru a activa caracteristicile de caractere late in fiierele de antet curses, astfel incat sa poata utiliza funciile extinse (caractere late). Simbolul care activeaza aceste funcii s-a schimbat de la Curses X/Open, ediia 4: o Iniial, caracteristica de caractere late necesita simbolul _XOPEN_SOURCE_EXTENDED, dar acesta era valabil numai pentru XPG4 (1996). o Ulterior, acest lucru a fost considerat conflictual cu _XOPEN_SOURCE definit la 500. o De la mijlocul anului 2018, nicio caracteristica ncurses nu necesita o valoare _XOPEN_SOURCE mai mare de 600. Cu toate acestea, Curses X/Open, ediia 7 (2009) recomanda definirea acesteia la 700. o Alternativ, putei activa caracteristica prin definirea NCURSES_WIDECHAR cu avertismentul ca un alt fiier antet decat curses.h poate necesita o valoare specifica pentru _XOPEN_SOURCE (sau un simbol specific sistemului). Fiierul de antet curses.h instalat pentru biblioteca de caractere late este conceput pentru a fi compatibil cu antetul bibliotecii non-late. Doar dimensiunea structurii WINDOW difera; puine aplicaii necesita mai mult decat indicatori la WINDOW. Daca fiierele de antet ale lui If ncurses sunt instalate permiand suprascrierea (implicit, dar vedei --disable-overwrite mai sus), antetetele bibliotecii de caractere late ar trebui sa fie instalate ultimele de catre sistemele de impachetare i similare, pentru a permite aplicaiilor sa fie construite folosind oricare dintre biblioteci din acelai set de antete. --with-pthread Activeaza suportul pentru aplicaii cu mai multe fire de execuie. Scriptul configure redenumete biblioteca ncurses (i biblioteca tinfo, daca este specificata i --with-termlib), adaugand "t" (inainte de orice "w" adaugat de --enable-widec). O aplicaie care dorete suport pentru mai multe fire de execuie utilizeaza, de exemplu, -lncursest (sau -ltinfot) in loc de -lncurses (sau -ltinfo) ca opiune de legatura. Bibliotecile ncurses++, panel, form i menu sunt redenumite in mod similar. ncursest i ncursestw inlocuiesc variabilele globale precum LINES cu macroinstruciuni care permit accesul numai pentru citire. In acelai timp, acestea ofera funcii pentru a defini aceste valori. Foarte puine aplicaii necesita modificari pentru a funciona cu aceasta convenie. --with-shared --with-normal --with-debug --with-profile Compilarea obligatorie a bibliotecii ncurses (i a bibliotecii tinfo, daca este specificata de asemenea opiunea --with-termlib) in formele specificate. Numele bibliotecilor partajate i normale (statice) difera prin sufixele lor, ca in cazul libncurses.so i libncurses.a. Bibliotecile de depanare i de profilare adauga un ,,_g" i un ,,_p" la radacina numelor respective, formand libncurses_g.so i libncurses_p.a, de exemplu. Bibliotecile ncurses++, panel, form i menu sunt disponibile in mod similar. --with-termlib Furnizeaza funciile de interfaa terminal de nivel inferior ale ncurses (cele care nu depind de abstraciile SCREEN i WINDOW) intr-o biblioteca numita tinfo. Aceasta aranjare reduce timpul de legare i/sau incarcare a unei aplicaii atunci cand aceasta nu necesita caracteristicile de nivel superior ale curses. Urmatoarele pagini descriu funciile curses de nivel scazut furnizate de catre tinfo. o curs_extend(3X) - extensii diverse ncurses o curs_inopts(3X) - opiuni de intrare curses o curs_kernel(3X) - rutine curses de nivel redus o curs_termattrs(3X) - rutine de interogare a mediului curses o curs_termcap(3X) - emularea curses a termcap o curs_terminfo(3X) - interfaa curses cu baza de date terminfo o curs_util(3X) - diverse rutine utilitare curses --with-trace Expune funcia curses_trace(3X) in bibliotecile partajate i statice ncurses(w). In mod normal, aceasta este disponibila numai in biblioteca de depanare. (Daca este specificata i --with-termlib, tinfo(w) inlocuiete ncurses(w) i furnizeaza funcia trace(3X) invechita.) Scriptul de configurare al unei aplicaii ar trebui sa verifice existena funciei, in loc sa presupuna ca aceasta se afla doar in biblioteca de depanare. FIIERE /usr/share/tabset baza de date de iniializare oprire a tabulatorului /usr/share/terminfo baza de date compilata privind capacitatea terminalelor NOTE Curses X/Open permite ca majoritatea funciilor pe care le specifica sa fie disponibile i ca macroinstruciuni. ncurses face acest lucru o pentru funciile care returneaza valori prin intermediul parametrilor lor, o pentru a oferi suport pentru caracteristici invechite, o pentru reutilizarea funciilor (de exemplu, cele care muta cursorul inainte de o alta operaie), i o in cateva cazuri speciale. Daca descriptorul de fiier al ieirii standard al unui program ncurses este redirecionat catre ceva care nu este un dispozitiv de terminal, biblioteca scrie actualizarile ecranului in descriptorul de fiier al ieirii de eroare standard. Aceasta a fost o caracteristica nedocumentata a SVr3 curses. Consultai subseciunea <iere antet>> de mai jos privind simbolurile expuse prin includerea lui curses.h. EXTENSII ncurses permite unei aplicaii sa capteze evenimentele mouse-ului de la anumite terminale, inclusiv xterm(1); consultai curs_mouse(3X). ncurses ofera un mijloc de a raspunde evenimentelor de redimensionare a ferestrei, ca atunci cand ruleaza intr-o aplicaie emulator de terminal GUI, cum ar fi xterm; consultai resizeterm(3X) i wresize(3X). ncurses permite unei aplicaii sa solicite terminalului prezena unei mari varietai de taste speciale; consultai has_key(3X). ncurses extinde setul fix de capacitai ale tastelor funcionale specificate de Curses X/Open permiand programatorului de aplicaii sa defineasca evenimente suplimentare ale tastelor in timpul execuiei; consultai define_key(3X), key_defined(3X), keybound(3X) i keyok(3X). ncurses poate exploata capacitaile terminalelor care implementeaza secvenele ISO 6429/ECMA-48 SGR 39 i SGR 49, care permit unei aplicaii sa readuca terminalul la culorile iniiale de prim-plan i de fundal. Din punctul de vedere al utilizatorului, aplicaia este capabila sa deseneze text colorat pe un fundal a carui culoare este stabilita independent, oferind un control mai bun asupra contrastelor de culoare. A se vedea default_colors(3X). O aplicaie ncurses poate evita cunoaterea structurii interne SCREEN i WINDOW, folosind in schimb funcii de accesoriu precum is_cbreak(3X) i is_scrollok(3X). ncurses permite unei aplicaii sa direcioneze ieirea aplicaiei catre o imprimanta ataata la dispozitivul de terminal; consultai curs_print(3X). ncurses ofera slk_attr(3X) ca o varianta contrara a attr_get(3X) pentru liniile de taste cu eticheta software i extended_slk_color(3X) ca o forma a slk_color(3X) care poate colecta informaii despre culoare de la acestea atunci cand sunt acceptate mai multe culori. ncurses permite modificarea comportamentului lui unctrl(3X); a se vedea use_legacy_coding(3X). Poate fi disponibil un suport rudimentar pentru aplicaiile multi-fir; consultai curs_threads(3X). Funciile care faciliteaza gestionarea ecranelor multiple pot fi expuse; a se vedea curs_sp_funcs(3X). Pentru a ajuta aplicaiile sa ii depaneze utilizarea memoriei, ncurses ofera opional funcii pentru a elibera mai agresiv memoria pe care o aloca dinamic; a se vedea curs_memleaks(3X). Biblioteca faciliteaza auditarea i depanarea comportamentului sau; a se vedea curs_trace(3X). Compilarea ncurses cu opiunea -DUSE_GETCAP determina revenirea la citirea /etc/termcap daca codul de configurare a terminalului nu poate gasi o intrare terminfo corespunzatoare lui TERM. Utilizarea acestei funcii nu este recomandata, deoarece include, in esena, un intreg compilator termcap in codul de pornire ncurses, cu un cost in ceea ce privete utilizarea memoriei i latena lansarii aplicaiei. PDCurses i curses NetBSD includ unele extensii ncurses. Paginile de manual individuale indica unde acesta este cazul. PORTABILITATE Curses X/Open definete doua niveluri de conformitate, ,,base" i ,,enhanced". Acesta din urma include cateva caracteristici suplimentare, cum ar fi suportul pentru caractere late i culori. ncurses intenioneaza conformitatea la nivel de baza cu Curses X/Open, i accepta toate caracteristicile nivelului sau imbunatait, cu excepia utilitarului untic. Diferenele dintre Curses X/Open i ncurses sunt documentate in seciunile <> din paginile de manual aplicabile. Verificarea erorilor In multe cazuri, Curses X/Open este vag cu privire la condiiile de eroare, omiand o parte din documentaia SVr4. Spre deosebire de alte implementari, ncurses verifica parametrii de tip indicator, cum ar fi cei pentru structurile WINDOW, pentru a se asigura ca nu sunt nule. Acest lucru se face in primul rand pentru a proteja impotriva erorilor programatorului. Interfaa standard nu prevede o modalitate prin care biblioteca sa indice unei aplicaii care dintre mai multe erori posibile a avut loc. O aplicaie care se bazeaza pe ncurses pentru a verifica validitatea parametrilor funciei sale ii limiteaza portabilitatea i robusteea. Diferene de umplere In implementarile istorice ale curses, intarzierile incorporate in capacitaile terminfo carriage_return (cr), scroll_forward (ind), cursor_left (cub1), form_feed (ff) i tab (ht) activau biii de intarziere corespunzatori in controlorul de terminal Unix. ncurses efectueaza toata umplerea prin trimiterea de octei NUL catre dispozitiv. Aceasta metoda este puin mai costisitoare, dar restrange semnificativ interfaa cu nucleul Unix i crete corespunzator portabilitatea pachetului. Fiiere antet Fiierul de antet curses.h include fiierele de antet stdio.h i unctrl.h. Curses X/Open are mai multe de spus, Includerea curses.h poate face vizibile toate simbolurile din antetele stdio.h, term.h, termios.h i wchar.h. dar nu incheie povestea. Urmeaza o relatare mai completa. o Primul curses, in 4BSD, a furnizat un fiier curses.h. Codul curses BSD includea curses.h i unctrl.h dintr-un fiier de antet intern curses.ext, unde ,,ext" abrevia ,,externs". Implementarile printw i scanw au utilizat funcii interne nedocumentate ale bibliotecii de In/Ie standard (_doprnt i _doscan), dar nimic in curses.h nu s-a bazat pe stdio.h. o curses SVr2 a adaugat newterm, care se bazeaza pe stdio.h deoarece prototipul funciei sale utilizeaza tipul FILE. curses SVr4 a adaugat putwin i getwin, care utilizeaza i stdio.h. Curses X/Open specifica toate aceste trei funcii. curses SVr4 i Curses X/Open nu solicita dezvoltatorului sa includa stdio.h inainte de curses.h. Ambele documenteaza utilizarea curses ca necesitand doar curses.h. Ca urmare, standardul curses.h include intotdeauna stdio.h. o Curses X/Open i curses SVr4 nu sunt compatibile cu unctrl.h. Dupa cum se menioneaza in curs_util(3X), ncurses include unctrl.h din curses.h (aa cum face SVr4). o Comentariile din Curses X/Open despre term.h i termios.h se pot referi la HP-UX i AIX. curses HP-UX include term.h din curses.h pentru a declara setupterm in curses.h, dar ncurses i curses Solaris nu. curses AIX include term.h i termios.h. Din nou, ncurses i curses Solaris nu. o Curses X/Open spune ca curses.h poate include term.h, dar nu ii cere sa faca acest lucru. Unele programe utilizeaza funcii declarate atat in curses.h, cat i in term.h, i trebuie sa includa ambele fiiere de antet in aceeai unitate de traducere (conversie). Fiierele de antet furnizate de ncurses includ antetele bibliotecii standard necesare pentru declaraiile sale, astfel incat propriile fiiere de antet ale ncurses pot fi incluse in orice ordine. Pentru portabilitate chiar i pe sistemele AIX vechi, includei curses.h inainte de term.h. o Curses X/Open spune ,,poate face vizibile" deoarece includerea unui fiier antet nu face neaparat vizibile toate simbolurile din acesta (luai in considerare #ifdef i altele similare). De exemplu, ncurses's curses.h poate include wchar.h daca simbolul corespunzator este definit i daca ncurses este configurat pentru suportul caracterelor late. Daca wchar.h este inclus, simbolurile sale pot fi facute vizibile in funcie de valoarea macroinstruciunii de testare a caracteristicii _XOPEN_SOURCE. o Curses X/Open impune includerea de catre o aplicaie a unui antet de biblioteca C standard intr-un caz special: stdarg.h inainte de curses.h pentru a prototipa funciile vw_printw i vw_scanw (precum i invechitele vwprintw i vwscanw). Fiecare dintre acestea ia o lista de argumente variadice, un parametru va_list, precum cel al printf(3). curses SVr3 a introdus doua funcii invechite, iar Curses X/Open pe celelalte. Intre timp, curses SVr4 a prevazut posibilitatea ca o aplicaie sa includa fie varargs.h, fie stdarg.h. Acestea reprezentau abordari contrastante pentru gestionarea listelor de argumente variadice. Interfaa mai veche, varargs.h, folosea un indicator catre char pentru parametrul va_list al funciilor variadice. Ulterior, lista i-a dobandit propriul tip de date standard, va_list, definit in stdarg.h, permiand compilatorului sa verifice tipurile parametrilor reali ai unui apel de funcie in raport cu cele formale declarate in prototipul sau. Nicio implementare conforma a Curses X/Open nu solicita unei aplicaii sa includa stdarg.h inaintea curses.h, deoarece fie au permis pentru un tip special, fie, precum ncurses, includ ele insele stdarg.h pentru a oferi o interfaa portabila. AUTORI Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey. Bazat pe pcurses de Pavel Curtis. CONSULTAI I curs_variables(3X), terminfo(5), user_caps(5) TRADUCERE Traducerea in limba romana a acestui manual a fost facuta de Remus- Gabriel Chelu Aceasta traducere este documentaie gratuita; citii Licena publica generala GNU Versiunea 3 sau o versiune ulterioara cu privire la condiii privind drepturile de autor. NU se asuma NICIO RESPONSABILITATE. Daca gasii erori in traducerea acestui manual, va rugam sa trimitei un e-mail la . ncurses 6.6 11 noiembrie 2025 ncurses(3X)