.\" -*- coding: UTF-8 -*- '\" t .\"*************************************************************************** .\" Copyright 2018-2023,2024 Thomas E. Dickey * .\" Copyright 1998-2015,2017 Free Software Foundation, Inc. * .\" * .\" Permission is hereby granted, free of charge, to any person obtaining a * .\" copy of this software and associated documentation files (the * .\" "Software"), to deal in the Software without restriction, including * .\" without limitation the rights to use, copy, modify, merge, publish, * .\" distribute, distribute with modifications, sublicense, and/or sell * .\" copies of the Software, and to permit persons to whom the Software is * .\" furnished to do so, subject to the following conditions: * .\" * .\" The above copyright notice and this permission notice shall be included * .\" in all copies or substantial portions of the Software. * .\" * .\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * .\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * .\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * .\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * .\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * .\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * .\" THE USE OR OTHER DEALINGS IN THE SOFTWARE. * .\" * .\" Except as contained in this notice, the name(s) of the above copyright * .\" holders shall not be used in advertising or otherwise to promote the * .\" sale, use or other dealings in this Software without prior written * .\" authorization. * .\"*************************************************************************** .\" .\" $Id: ncurses.3x,v 1.214 2024/04/27 17:55:43 tom Exp $ .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH ncurses 3X "27 aprilie 2024" "ncurses 6.5" "Apeluri de bibliotecă" .ie \n(.g \{\ .ds `` \(lq .ds '' \(rq .\} .el \{\ .ie t .ds `` `` .el .ds `` "" .ie t .ds '' '' .el .ds '' "" .\} . .de bP .ie n .IP \(bu 4 .el .IP \(bu 2 .. . .de tQ . br . ns . TP .. .\" Add supplementary paragraph tag on its own line after TP. .\" Adapted from TQ (which would produce mandoc warnings). . .ds d /usr/share/terminfo .SH NUME \fB\%ncurses\fP \- interfață terminal caracter\-celulă cu ieșire optimizată .SH SINOPSIS .nf \fB#include \fP .fi .SH DESCRIERE Biblioteca „new curses” oferă programatorului un mijloc independent de terminal de a citi intrările tastaturii și ale mouse\-ului și de a actualiza terminalele cu celule de caractere cu ieșire optimizată pentru a minimiza actualizările ecranului. \fI\%ncurses\fP înlocuiește bibliotecile \fIcurses\fP din System V Release 4 Unix „SVr4”și 4.4BSD Unix, a căror dezvoltare a încetat în anii 1990. Acest document descrie \fI\%ncurses\fP versiunea 6.5 (patch 20240427). .PP \fI\\ncurses\fP permite controlul conținutului ecranului terminalului; abstractizarea și subdivizarea acestuia cu \fIwindows\fP și \fIpads\fP; citirea datelor de intrare ale terminalului; controlul opțiunilor de intrare și ieșire ale terminalului; rutine de interogare a mediului; manipularea culorilor; definirea și utilizarea tastelor \fIsoft label\fP; accesul la capacitățile \fI\%term\%info\fP; o interfață de compatibilitate \fItermcap\fP; și o abstractizare a API a sistemului pentru manipularea terminalului (cum ar fi \fI\%termios\fP(3)). .PP \fI\%ncurses\fP implementează interfața descrisă de Curses X/Open ediția 7. În multe detalii comportamentale care nu sunt standardizate de X/Open, \fI\%ncurses\fP emulează biblioteca \fIcurses\fP din SVr4 și oferă numeroase extensii utile. .PP Paginile de manual \fI\ncurses\fP utilizează mai multe secțiuni pentru a clarifica aspecte legate de utilizare și interoperabilitate cu alte implementări \fIcurses\fP. .bP Secțiunea «NOTE» descrie problemele și avertismentele de care orice utilizator al API\-ului \fI\%ncurses\fP ar trebui să fie conștient, cum ar fi limitările privind dimensiunea unui tip integral subiacent sau disponibilitatea unei macroinstrucțiuni de preprocesor exclusiv din definiția unei funcții (care împiedică preluarea adresei sale). Această secțiune descrie, de asemenea, detalii de implementare care vor fi semnificative pentru programator, dar care nu sunt standardizate. .bP Secțiunea «EXTENSII» prezintă inovațiile \fI\%ncurses\fP care depășesc standardul Curses X/Open și/sau implementarea \fIcurses\fP SVr4. Acestea sunt denumite \fIextensions\fP (extensii) pentru a indica faptul că nu pot fi implementate numai prin utilizarea API\-ului bibliotecii, ci necesită acces la starea internă a bibliotecii. .bP Secțiunea «PORTABILITATE» abordează aspecte (dincolo de exercitarea extensiilor) care ar trebui luate în considerare atunci când se scrie pentru un standard \fIcurses\fP, sau pentru implementări multiple. .bP Secțiunea «ISTORIA» examinează punctele de detaliu din \fI\%ncurses\fP și alte implementări \fIcurses\fP de\-a lungul deceniilor de dezvoltare a acestora, în special acolo unde precedentul sau inerția au împiedicat o mai bună proiectare (și, în câteva cazuri, unde o astfel de inerție a fost depășită). .PP O aplicație \fIcurses\fP trebuie legată cu biblioteca; utilizați opțiunea \fB\-lncurses\fP a compilatorului sau editorului de legături. Este posibil să fie disponibilă o versiune de depanare a bibliotecii; în acest caz, faceți legătura cu aceasta folosind \fB\-lncurses_g\fP; (ste posibil ca integratorul sistemului dumneavoastră să fi instalat aceste biblioteci astfel încât să puteți utiliza opțiunile \fB\-lcurses\fP și, respectiv, \fB\-lcurses_g\fP). Biblioteca \fI\%ncurses_g\fP generează jurnale de urmărire (într\-un fișier numit \fI\%trace\fP în directorul curent) care descriu acțiunile \fI\%ncurses\fP. A se vedea secțiunea «CONFIGURAȚII ALTERNATIVE\» de mai jos. .SS "Structura aplicației" O aplicație \fIcurses\fP utilizează informații din configurația regională a sistemului; \fI\%setlocale\fP(3) o pregătește pentru apelurile bibliotecii \fIcurses\fP. .PP .RS 4 .EX setlocale(LC_ALL, ""); .EE .RE .PP Dacă configurația regională nu este astfel inițializată, biblioteca presupune că toate caracterele sunt imprimabile ca în ISO\ 8859\-1, pentru a funcționa cu anumite programe vechi. Ar trebui să inițializați configurația regională; nu vă așteptați la un comportament consecvent din partea bibliotecii atunci când parametrii regionali nu au fost configurați. .PP \fB\%initscr\fP(3X) sau \fB\%newterm\fP(3X) trebuie să fie apelate pentru a inițializa \fIcurses\fP înainte de utilizarea oricărei funcții care se ocupă de ferestre și ecrane. .PP Pentru a obține o intrare caracter cu caracter fără ecou, majoritatea programelor interactive, orientate pe ecran, doresc să utilizeze următoarea secvență. .PP .RS 4 .EX initscr(); cbreak(); noecho(); .EE .RE .PP Majoritatea aplicațiilor efectuează configurarea următoare după cum se indică mai jos. .PP .RS 4 .EX intrflush(stdscr, FALSE); keypad(stdscr, TRUE); .EE .RE .PP Un program \fIcurses\fP intră apoi adesea într\-o buclă de evenimente de un anumit tip. Apelați \fB\%endwin\fP(3X) înainte de a ieși. .SS "Prezentare generală" O bibliotecă \fIcurses\fP abstractizează ecranul terminalului prin reprezentarea totală sau parțială a acestuia ca o structură de date \fI\%WINDOW\fP. O \fIwindow\fP (fereastră) este o grilă dreptunghiulară de celule de caractere, adresate prin coordonate de linie și coloană (\fIy\fP, \fIx\fP), cu colțul din stânga sus ca (0, 0). O fereastră numită \fB\%stdscr\fP, de aceeași dimensiune ca ecranul terminalului, este întotdeauna disponibilă. Creați altele cu \fB\%newwin\fP(3X). .PP O bibliotecă \fIcurses\fP nu gestionează ferestrele care se suprapun (dar a se vedea mai jos). Puteți fie să utilizați \fB\%stdscr\fP pentru a gestiona o singură fereastră care umple ecranul, fie să împărțiți ecranul în ferestre care nu se suprapun și să nu utilizați deloc \fB\%stdscr\fP. Amestecarea celor două abordări va duce la efecte imprevizibile și nedorite. .PP Funcțiile permit manipularea unei ferestre și a \fIcursorului\fP care identifică celula din cadrul acesteia în care va avea loc următoarea operație de ieșire. Printre acestea, cele mai de bază sunt \fB\%move\fP(3X) și \fB\%addch\fP(3X): acestea plasează cursorul și, respectiv, scriu un caracter în \fB\%stdscr\fP. .PP .\" X/Open Curses Issue 7 assumes some optimization will be done, but .\" does not mandate it in any way. Modificările frecvente ale ecranului terminalului pot provoca pâlpâiri neplăcute sau utilizarea ineficientă a canalului de comunicare cu dispozitivul, astfel încât biblioteca nu îl actualizează în general în mod automat. Prin urmare, după utilizarea funcțiilor \fIcurses\fP pentru a acumula un set de actualizări dorite care au sens să fie prezentate împreună, apelați \fB\%refresh\fP(3X) pentru a spune bibliotecii să facă ecranul utilizatorului să arate ca \fBstdscr\fP. Biblioteca \fIoptimizează\fP rezultatul său prin calcularea unui număr minim de operații pentru a muta ecranul de la starea sa de la actualizarea anterioară la cea nouă. O optimizare eficientă necesită informații precise despre dispozitivul terminal: gestionarea acestor informații este de competența API\-ului \fB\%terminfo\fP(3X), o caracteristică a fiecărei implementări \fIcurses\fP standard. .PP De asemenea, pot fi manipulate ferestre speciale numite \fIpads\fP. Acestea sunt ferestre care nu sunt constrânse la dimensiunea ecranului terminalului și al căror conținut nu trebuie să fie afișat complet. Consultați \fB\%curs_pad\fP(3X). .PP În plus față de desenarea caracterelor pe ecran, pot fi acceptate atribute de redare și culori, ceea ce face ca caracterele să apară în moduri cum ar fi subliniat, în video invers sau în culori pe terminalele care acceptă astfel de îmbunătățiri ale afișării. A se vedea \fB\%curs_attr\fP(3X). .PP \fIcurses\fP predefinește constante pentru un mic set de grafice de desenare a formularelor corespunzătoare DEC Alternate Character Set (ACS), o caracteristică a VT100 și a altor terminale. A se vedea \fB\%waddch\fP(3X). .PP \fIcurses\fP este implementat utilizând controlorul de terminal al sistemului de operare; evenimentele de apăsare a tastelor nu sunt recepționate sub formă de coduri de scanare, ci sub formă de secvențe de octeți. Tastele grafice (tastele alfanumerice și de punctuație, precum și spațiul) apar ca atare. Orice altceva, inclusiv tastele tab, enter/return, tastatura numerică, tastele săgeată și tastele de funcție, apar ca un caracter de control sau ca o \fIsecvență de eludare\fP multi\-octe. \fIcurses\fP le traduce în coduri unice \fIkey codes.\fP Consultați \fB\%getch\fP(3X). .PP \fI\%ncurses\fP oferă reimplementări ale bibliotecilor SVr4 \fBpanel\fP(3X), \fBform\fP(3X) și \fBmenu\fP(3X) pentru a facilita construirea de interfețe cu utilizatorul folosind \fIcurses\fP. .SS Inițializare Selectarea unei valori adecvate a \fITERM\fP în mediul procesului este esențială pentru funcționarea corectă a bibliotecilor \fIcurses\fP și \fI\%term\%info\fP. Un sistem bine configurat selectează automat o valoare \fITERM\fP corectă; \fB\%tset\fP(1) poate ajuta la depanarea situațiilor exotice. .PP Dacă schimbați tipul de terminal, exportați variabila de mediu \fITERM\fP în shell, apoi executați \fB\%tset\fP(1) sau comanda «\fBtput init\fP». Consultați subsecțiunea «Tabulatoare și inițializare» din \fB\%terminfo\fP(5). .PP Dacă variabilele de mediu \fI\%LINES\fP și \fI\%COLUMNS\fP sunt definite sau dacă programul \fIcurses\fP se execută într\-un mediu de ferestre grafice, informațiile astfel obținute le înlocuiesc pe cele obținute prin \fI\%term\%info\fP. O extensie \fI\%ncurses\fP acceptă terminale redimensionabile; a se vedea \fB\%wresize\fP(3X). .PP Dacă variabila de mediu \fI\%TERMINFO\fP este definită, un program \fIcurses\fP verifică mai întâi dacă există o descriere a tipului de terminal în locația pe care o identifică. \fI\%TERMINFO\fP este utilă pentru dezvoltarea descrierilor de tip experimentale sau atunci când permisiunea de scriere la \fI\%\*d\fP nu este disponibilă. .PP A se vedea secțiunea «MEDIU» de mai jos. .SS "Convenții de denumire" \fIcurses\fP oferă multe funcții în forme variate folosind un set regulat de alternative la numele uneia elementare. Cele cu prefixul „w” necesită un argument de indicator \fI\%WINDOW\fP; cele cu prefixul „mv” efectuează mai întâi mișcarea cursorului folosind \fB\%wmove\fP(3X); prefixul „mvw” indică ambele. Funcția „w” este de obicei cea elementară; eliminarea acestui prefix indică de obicei operarea cu \fB\%stdscr\fP. .PP Patru funcții prefixate cu „p” necesită un argument \fIpad\fP; a se vedea mai jos. .PP În sinopsisurile funcțiilor, paginile de manual \fI\%ncurses\fP aplică următoarele denumiri parametrilor. .PP .TS center; Li L. bf \fIboolean\fP (\fBTRUE\fP sau \fBFALSE\fP) c un \fIcaracter\fP sau un \fInr. întreg\fP ch un \fIchtype\fP wc un \fIwchar_t\fP sau \fIwint_t\fP wch un \fIcchar_t\fP win indicator către o fereastră \fIWINDOW\fP pad indicator către o fereastră \fIWINDOW\fP care este un \fIpad\fP (fereastră de dimensiuni reduse) .TE .SS "Configurații de caractere late și nelate" .\" "ncursesw" + 2n Această pagină de manual descrie funcțiile care apar în orice configurație a bibliotecii. Există două configurații comune; consultați secțiunea «CONFIGURAȚII ALTERNATIVE» de mai jos. .TP 10 \fI\%ncurses\fP este biblioteca în configurația sa „non\-wide” (normală), care gestionează numai caractere pe opt biți. Aceasta stochează un caracter combinat cu atribute într\-o dată \fI\%chtype\fP, care este adesea un alias al lui \fIint\fP. .IP Atributele singure (fără caracterul corespunzător) pot fi stocate în variabile de tip \fI\%chtype\fP sau \fI\%attr_t\fP. În ambele cazuri, acestea sunt reprezentate ca o mască integrală de biți. .IP Fiecare celulă a unei \fI\%WINDOW\fP este stocată ca un \fI\%chtype\fP. .TP 10 \fI\%ncursesw\fP .\" same as foregoing tag width este biblioteca în configurația sa „wide” (de caractere late), care gestionează codurile de caractere care necesită un tip de date mai mare decât poate reprezenta \fI\%char\fP (un tip de dimensiunea octetului). Aceasta adaugă aproximativ o treime mai multe apeluri utilizând tipuri de date suplimentare care pot stoca astfel de caractere \fImulti\-octet\fP. .RS 10 .\" "cchar_t" + 2n .TP 9 \fI\%cchar_t\fP corespunde \fI\%chtype\fP din configurația „non\-wide” (normală). Este întotdeauna un tip de structură, deoarece stochează mai multe date decât încape într\-un tip scalar standard. Este posibil ca un cod de caractere să nu poată fi reprezentat ca un \fI\%char\fP și, în plus, mai multe caractere pot ocupa o celulă (ca în cazul semnelor de accent și al altor diacritice). Fiecare caracter este de tipul \fI\%wchar_t\fP; un caracter complex conține un caracter de spațiere și zero sau mai multe caractere de nespațiere (a se vedea mai jos). Atributele și datele de culoare sunt stocate în câmpuri separate ale structurii, nu combinate ca în \fI\%chtype\fP. .PP Fiecare celulă a unei \fI\%WINDOW\fP este stocată ca un \fI\%cchar_t\fP. .PP \fB\%setcchar\fP(3X) și \fB\%getcchar\fP(3X) stochează și extrag date \fI\%cchar_t\fP. API\-ul de bibliotecă lat al \fI\%ncurses\fP depinde de două tipuri de date standardizate de ISO C95. .TP 9 \fI\%wchar_t\fP stochează un caracter lat. Ca și \fI\%chtype\fP, acesta poate fi un alias al lui \fIint\fP. În funcție de codificarea caracterelor, un caracter lat poate fi \fIspacing\fP, ceea ce înseamnă că ocupă singur o celulă de caractere și însoțește de obicei avansarea cursorului, sau \fInon\-spacing\fP, ceea ce înseamnă că ocupă aceeași celulă ca un caracter de spațiere, este adesea considerat un „modificator” al glifului de bază cu care se combină și de obicei nu avansează cursorul. .TP 9 \fI\%wint_t\fP poate stoca un \fI\%wchar_t\fP sau constanta \fB\%WEOF\fP, în mod analog cu funcțiile de manipulare a caracterelor de dimensiunea \fIint\fP din ISO C și constanta sa \fB\%EOF\fP. .RE .IP Biblioteca „wide” oferă funcții suplimentare care le completează pe cele din biblioteca „non\-wide” atunci când dimensiunea tipului de caracter subiacent este semnificativă. O convenție de denumire oarecum regulată leagă multe dintre variantele „wide” de omologii lor „non\-wide”; atunci când un nume de funcție „non\-wide” conține «ch» sau «str», prefixați\-l cu «_w» pentru a obține omologul „wide”. De exemplu, \fB\%waddch\fP devine \fB\%wadd_wch\fP. (Excepțiile care adaugă doar «w includ \fB\%addwstr\fP, \fB\%inwstr\fP și variantele lor). .IP .\" Această convenție este inaplicabilă pentru unele nume de funcții „non\-wide”, astfel încât sunt utilizate alte transformări pentru configurația „wide”: funcția de gestionare a fundalului ferestrei «bkgd» devine «bkgrnd»; funcțiile de desenare și ștergere a marginilor ferestrei sunt sufixate cu «_set»; iar funcțiile de manipulare a atributelor caracterelor precum «attron» devin «attr_on». .SS "Indexare după numele funcției" Tabelul următor enumeră funcțiile \fIcurses\fP furnizate în API\-urile „non\-wide” și „wide” și paginile de manual corespunzătoare care le descriu. Cele marcate cu «*\» sunt specifice \fI\%ncurses\fP, nu sunt descrise de Curses X/Open și nici prezente în SVr4. .PP .TS center tab(/); l l . Numele funcției \f(BIcurses\fR/Pagina de manual _ COLOR_PAIR/\fBcurs_color\fP(3X) PAIR_NUMBER/\fBcurs_color\fP(3X) add_wch/\fBcurs_add_wch\fP(3X) add_wchnstr/\fBcurs_add_wchstr\fP(3X) add_wchstr/\fBcurs_add_wchstr\fP(3X) addch/\fBcurs_addch\fP(3X) addchnstr/\fBcurs_addchstr\fP(3X) addchstr/\fBcurs_addchstr\fP(3X) addnstr/\fBcurs_addstr\fP(3X) addnwstr/\fBcurs_addwstr\fP(3X) addstr/\fBcurs_addstr\fP(3X) addwstr/\fBcurs_addwstr\fP(3X) alloc_pair/\fBnew_pair\fP(3X)* assume_default_colors/\fBdefault_colors\fP(3X)* attr_get/\fBcurs_attr\fP(3X) attr_off/\fBcurs_attr\fP(3X) attr_on/\fBcurs_attr\fP(3X) attr_set/\fBcurs_attr\fP(3X) attroff/\fBcurs_attr\fP(3X) attron/\fBcurs_attr\fP(3X) attrset/\fBcurs_attr\fP(3X) baudrate/\fBcurs_termattrs\fP(3X) beep/\fBcurs_beep\fP(3X) bkgd/\fBcurs_bkgd\fP(3X) bkgdset/\fBcurs_bkgd\fP(3X) bkgrnd/\fBcurs_bkgrnd\fP(3X) bkgrndset/\fBcurs_bkgrnd\fP(3X) border/\fBcurs_border\fP(3X) border_set/\fBcurs_border_set\fP(3X) box/\fBcurs_border\fP(3X) box_set/\fBcurs_border_set\fP(3X) can_change_color/\fBcurs_color\fP(3X) cbreak/\fBcurs_inopts\fP(3X) chgat/\fBcurs_attr\fP(3X) clear/\fBcurs_clear\fP(3X) clearok/\fBcurs_outopts\fP(3X) clrtobot/\fBcurs_clear\fP(3X) clrtoeol/\fBcurs_clear\fP(3X) color_content/\fBcurs_color\fP(3X) color_set/\fBcurs_attr\fP(3X) copywin/\fBcurs_overlay\fP(3X) curs_set/\fBcurs_kernel\fP(3X) curses_trace/\fBcurs_trace\fP(3X)* curses_version/\fBcurs_extend\fP(3X)* def_prog_mode/\fBcurs_kernel\fP(3X) def_shell_mode/\fBcurs_kernel\fP(3X) define_key/\fBdefine_key\fP(3X)* del_curterm/\fBcurs_terminfo\fP(3X) delay_output/\fBcurs_util\fP(3X) delch/\fBcurs_delch\fP(3X) deleteln/\fBcurs_deleteln\fP(3X) delscreen/\fBcurs_initscr\fP(3X) delwin/\fBcurs_window\fP(3X) derwin/\fBcurs_window\fP(3X) doupdate/\fBcurs_refresh\fP(3X) dupwin/\fBcurs_window\fP(3X) echo/\fBcurs_inopts\fP(3X) echo_wchar/\fBcurs_add_wch\fP(3X) echochar/\fBcurs_addch\fP(3X) endwin/\fBcurs_initscr\fP(3X) erase/\fBcurs_clear\fP(3X) erasechar/\fBcurs_termattrs\fP(3X) erasewchar/\fBcurs_termattrs\fP(3X) exit_curses/\fBcurs_memleaks\fP(3X)* exit_terminfo/\fBcurs_memleaks\fP(3X)* extended_color_content/\fBcurs_color\fP(3X)* extended_pair_content/\fBcurs_color\fP(3X)* extended_slk_color/\fBcurs_slk\fP(3X)* filter/\fBcurs_util\fP(3X) find_pair/\fBnew_pair\fP(3X)* flash/\fBcurs_beep\fP(3X) flushinp/\fBcurs_util\fP(3X) free_pair/\fBnew_pair\fP(3X)* get_escdelay/\fBcurs_threads\fP(3X)* get_wch/\fBcurs_get_wch\fP(3X) get_wstr/\fBcurs_get_wstr\fP(3X) getattrs/\fBcurs_attr\fP(3X) getbegx/\fBcurs_legacy\fP(3X)* getbegy/\fBcurs_legacy\fP(3X)* getbegyx/\fBcurs_getyx\fP(3X) getbkgd/\fBcurs_bkgd\fP(3X) getbkgrnd/\fBcurs_bkgrnd\fP(3X) getcchar/\fBcurs_getcchar\fP(3X) getch/\fBcurs_getch\fP(3X) getcurx/\fBcurs_legacy\fP(3X)* getcury/\fBcurs_legacy\fP(3X)* getmaxx/\fBcurs_legacy\fP(3X)* getmaxy/\fBcurs_legacy\fP(3X)* getmaxyx/\fBcurs_getyx\fP(3X) getmouse/\fBcurs_mouse\fP(3X)* getn_wstr/\fBcurs_get_wstr\fP(3X) getnstr/\fBcurs_getstr\fP(3X) getparx/\fBcurs_legacy\fP(3X)* getpary/\fBcurs_legacy\fP(3X)* getparyx/\fBcurs_getyx\fP(3X) getstr/\fBcurs_getstr\fP(3X) getsyx/\fBcurs_kernel\fP(3X) getwin/\fBcurs_util\fP(3X) getyx/\fBcurs_getyx\fP(3X) halfdelay/\fBcurs_inopts\fP(3X) has_colors/\fBcurs_color\fP(3X) has_ic/\fBcurs_termattrs\fP(3X) has_il/\fBcurs_termattrs\fP(3X) has_key/\fBcurs_getch\fP(3X)* has_mouse/\fBcurs_mouse\fP(3X)* hline/\fBcurs_border\fP(3X) hline_set/\fBcurs_border_set\fP(3X) idcok/\fBcurs_outopts\fP(3X) idlok/\fBcurs_outopts\fP(3X) immedok/\fBcurs_outopts\fP(3X) in_wch/\fBcurs_in_wch\fP(3X) in_wchnstr/\fBcurs_in_wchstr\fP(3X) in_wchstr/\fBcurs_in_wchstr\fP(3X) inch/\fBcurs_inch\fP(3X) inchnstr/\fBcurs_inchstr\fP(3X) inchstr/\fBcurs_inchstr\fP(3X) init_color/\fBcurs_color\fP(3X) init_extended_color/\fBcurs_color\fP(3X)* init_extended_pair/\fBcurs_color\fP(3X)* init_pair/\fBcurs_color\fP(3X) initscr/\fBcurs_initscr\fP(3X) innstr/\fBcurs_instr\fP(3X) innwstr/\fBcurs_inwstr\fP(3X) ins_nwstr/\fBcurs_ins_wstr\fP(3X) ins_wch/\fBcurs_ins_wch\fP(3X) ins_wstr/\fBcurs_ins_wstr\fP(3X) insch/\fBcurs_insch\fP(3X) insdelln/\fBcurs_deleteln\fP(3X) insertln/\fBcurs_deleteln\fP(3X) insnstr/\fBcurs_insstr\fP(3X) insstr/\fBcurs_insstr\fP(3X) instr/\fBcurs_instr\fP(3X) intrflush/\fBcurs_inopts\fP(3X) inwstr/\fBcurs_inwstr\fP(3X) is_cbreak/\fBcurs_inopts\fP(3X)* is_cleared/\fBcurs_opaque\fP(3X)* is_echo/\fBcurs_inopts\fP(3X)* is_idcok/\fBcurs_opaque\fP(3X)* is_idlok/\fBcurs_opaque\fP(3X)* is_immedok/\fBcurs_opaque\fP(3X)* is_keypad/\fBcurs_opaque\fP(3X)* is_leaveok/\fBcurs_opaque\fP(3X)* is_linetouched/\fBcurs_touch\fP(3X) is_nl/\fBcurs_inopts\fP(3X)* is_nodelay/\fBcurs_opaque\fP(3X)* is_notimeout/\fBcurs_opaque\fP(3X)* is_pad/\fBcurs_opaque\fP(3X)* is_raw/\fBcurs_inopts\fP(3X)* is_scrollok/\fBcurs_opaque\fP(3X)* is_subwin/\fBcurs_opaque\fP(3X)* is_syncok/\fBcurs_opaque\fP(3X)* is_term_resized/\fBresizeterm\fP(3X)* is_wintouched/\fBcurs_touch\fP(3X) isendwin/\fBcurs_initscr\fP(3X) key_defined/\fBkey_defined\fP(3X)* key_name/\fBcurs_util\fP(3X) keybound/\fBkeybound\fP(3X)* keyname/\fBcurs_util\fP(3X) keyok/\fBkeyok\fP(3X)* keypad/\fBcurs_inopts\fP(3X) killchar/\fBcurs_termattrs\fP(3X) killwchar/\fBcurs_termattrs\fP(3X) leaveok/\fBcurs_outopts\fP(3X) longname/\fBcurs_termattrs\fP(3X) mcprint/\fBcurs_print\fP(3X)* meta/\fBcurs_inopts\fP(3X) mouse_trafo/\fBcurs_mouse\fP(3X)* mouseinterval/\fBcurs_mouse\fP(3X)* mousemask/\fBcurs_mouse\fP(3X)* move/\fBcurs_move\fP(3X) mvadd_wch/\fBcurs_add_wch\fP(3X) mvadd_wchnstr/\fBcurs_add_wchstr\fP(3X) mvadd_wchstr/\fBcurs_add_wchstr\fP(3X) mvaddch/\fBcurs_addch\fP(3X) mvaddchnstr/\fBcurs_addchstr\fP(3X) mvaddchstr/\fBcurs_addchstr\fP(3X) mvaddnstr/\fBcurs_addstr\fP(3X) mvaddnwstr/\fBcurs_addwstr\fP(3X) mvaddstr/\fBcurs_addstr\fP(3X) mvaddwstr/\fBcurs_addwstr\fP(3X) mvchgat/\fBcurs_attr\fP(3X) mvcur/\fBcurs_terminfo\fP(3X) mvdelch/\fBcurs_delch\fP(3X) mvderwin/\fBcurs_window\fP(3X) mvget_wch/\fBcurs_get_wch\fP(3X) mvget_wstr/\fBcurs_get_wstr\fP(3X) mvgetch/\fBcurs_getch\fP(3X) mvgetn_wstr/\fBcurs_get_wstr\fP(3X) mvgetnstr/\fBcurs_getstr\fP(3X) mvgetstr/\fBcurs_getstr\fP(3X) mvhline/\fBcurs_border\fP(3X) mvhline_set/\fBcurs_border_set\fP(3X) mvin_wch/\fBcurs_in_wch\fP(3X) mvin_wchnstr/\fBcurs_in_wchstr\fP(3X) mvin_wchstr/\fBcurs_in_wchstr\fP(3X) mvinch/\fBcurs_inch\fP(3X) mvinchnstr/\fBcurs_inchstr\fP(3X) mvinchstr/\fBcurs_inchstr\fP(3X) mvinnstr/\fBcurs_instr\fP(3X) mvinnwstr/\fBcurs_inwstr\fP(3X) mvins_nwstr/\fBcurs_ins_wstr\fP(3X) mvins_wch/\fBcurs_ins_wch\fP(3X) mvins_wstr/\fBcurs_ins_wstr\fP(3X) mvinsch/\fBcurs_insch\fP(3X) mvinsnstr/\fBcurs_insstr\fP(3X) mvinsstr/\fBcurs_insstr\fP(3X) mvinstr/\fBcurs_instr\fP(3X) mvinwstr/\fBcurs_inwstr\fP(3X) mvprintw/\fBcurs_printw\fP(3X) mvscanw/\fBcurs_scanw\fP(3X) mvvline/\fBcurs_border\fP(3X) mvvline_set/\fBcurs_border_set\fP(3X) mvwadd_wch/\fBcurs_add_wch\fP(3X) mvwadd_wchnstr/\fBcurs_add_wchstr\fP(3X) mvwadd_wchstr/\fBcurs_add_wchstr\fP(3X) mvwaddch/\fBcurs_addch\fP(3X) mvwaddchnstr/\fBcurs_addchstr\fP(3X) mvwaddchstr/\fBcurs_addchstr\fP(3X) mvwaddnstr/\fBcurs_addstr\fP(3X) mvwaddnwstr/\fBcurs_addwstr\fP(3X) mvwaddstr/\fBcurs_addstr\fP(3X) mvwaddwstr/\fBcurs_addwstr\fP(3X) mvwchgat/\fBcurs_attr\fP(3X) mvwdelch/\fBcurs_delch\fP(3X) mvwget_wch/\fBcurs_get_wch\fP(3X) mvwget_wstr/\fBcurs_get_wstr\fP(3X) mvwgetch/\fBcurs_getch\fP(3X) mvwgetn_wstr/\fBcurs_get_wstr\fP(3X) mvwgetnstr/\fBcurs_getstr\fP(3X) mvwgetstr/\fBcurs_getstr\fP(3X) mvwhline/\fBcurs_border\fP(3X) mvwhline_set/\fBcurs_border_set\fP(3X) mvwin/\fBcurs_window\fP(3X) mvwin_wch/\fBcurs_in_wch\fP(3X) mvwin_wchnstr/\fBcurs_in_wchstr\fP(3X) mvwin_wchstr/\fBcurs_in_wchstr\fP(3X) mvwinch/\fBcurs_inch\fP(3X) mvwinchnstr/\fBcurs_inchstr\fP(3X) mvwinchstr/\fBcurs_inchstr\fP(3X) mvwinnstr/\fBcurs_instr\fP(3X) mvwinnwstr/\fBcurs_inwstr\fP(3X) mvwins_nwstr/\fBcurs_ins_wstr\fP(3X) mvwins_wch/\fBcurs_ins_wch\fP(3X) mvwins_wstr/\fBcurs_ins_wstr\fP(3X) mvwinsch/\fBcurs_insch\fP(3X) mvwinsnstr/\fBcurs_insstr\fP(3X) mvwinsstr/\fBcurs_insstr\fP(3X) mvwinstr/\fBcurs_instr\fP(3X) mvwinwstr/\fBcurs_inwstr\fP(3X) mvwprintw/\fBcurs_printw\fP(3X) mvwscanw/\fBcurs_scanw\fP(3X) mvwvline/\fBcurs_border\fP(3X) mvwvline_set/\fBcurs_border_set\fP(3X) napms/\fBcurs_kernel\fP(3X) newpad/\fBcurs_pad\fP(3X) newterm/\fBcurs_initscr\fP(3X) newwin/\fBcurs_window\fP(3X) nl/\fBcurs_inopts\fP(3X) nocbreak/\fBcurs_inopts\fP(3X) nodelay/\fBcurs_inopts\fP(3X) noecho/\fBcurs_inopts\fP(3X) nofilter/\fBcurs_util\fP(3X)* nonl/\fBcurs_inopts\fP(3X) noqiflush/\fBcurs_inopts\fP(3X) noraw/\fBcurs_inopts\fP(3X) notimeout/\fBcurs_inopts\fP(3X) overlay/\fBcurs_overlay\fP(3X) overwrite/\fBcurs_overlay\fP(3X) pair_content/\fBcurs_color\fP(3X) pecho_wchar/\fBcurs_pad\fP(3X) pechochar/\fBcurs_pad\fP(3X) pnoutrefresh/\fBcurs_pad\fP(3X) prefresh/\fBcurs_pad\fP(3X) printw/\fBcurs_printw\fP(3X) putp/\fBcurs_terminfo\fP(3X) putwin/\fBcurs_util\fP(3X) qiflush/\fBcurs_inopts\fP(3X) raw/\fBcurs_inopts\fP(3X) redrawwin/\fBcurs_refresh\fP(3X) refresh/\fBcurs_refresh\fP(3X) reset_color_pairs/\fBcurs_color\fP(3X)* reset_prog_mode/\fBcurs_kernel\fP(3X) reset_shell_mode/\fBcurs_kernel\fP(3X) resetty/\fBcurs_kernel\fP(3X) resize_term/\fBresizeterm\fP(3X)* resizeterm/\fBresizeterm\fP(3X)* restartterm/\fBcurs_terminfo\fP(3X) ripoffline/\fBcurs_kernel\fP(3X) savetty/\fBcurs_kernel\fP(3X) scanw/\fBcurs_scanw\fP(3X) scr_dump/\fBcurs_scr_dump\fP(3X) scr_init/\fBcurs_scr_dump\fP(3X) scr_restore/\fBcurs_scr_dump\fP(3X) scr_set/\fBcurs_scr_dump\fP(3X) scrl/\fBcurs_scroll\fP(3X) scroll/\fBcurs_scroll\fP(3X) scrollok/\fBcurs_outopts\fP(3X) set_curterm/\fBcurs_terminfo\fP(3X) set_escdelay/\fBcurs_threads\fP(3X)* set_tabsize/\fBcurs_threads\fP(3X)* set_term/\fBcurs_initscr\fP(3X) setcchar/\fBcurs_getcchar\fP(3X) setscrreg/\fBcurs_outopts\fP(3X) setsyx/\fBcurs_kernel\fP(3X) setupterm/\fBcurs_terminfo\fP(3X) slk_attr/\fBcurs_slk\fP(3X)* slk_attr_off/\fBcurs_slk\fP(3X) slk_attr_on/\fBcurs_slk\fP(3X) slk_attr_set/\fBcurs_slk\fP(3X) slk_attroff/\fBcurs_slk\fP(3X) slk_attron/\fBcurs_slk\fP(3X) slk_attrset/\fBcurs_slk\fP(3X) slk_clear/\fBcurs_slk\fP(3X) slk_color/\fBcurs_slk\fP(3X) slk_init/\fBcurs_slk\fP(3X) slk_label/\fBcurs_slk\fP(3X) slk_noutrefresh/\fBcurs_slk\fP(3X) slk_refresh/\fBcurs_slk\fP(3X) slk_restore/\fBcurs_slk\fP(3X) slk_set/\fBcurs_slk\fP(3X) slk_touch/\fBcurs_slk\fP(3X) slk_wset/\fBcurs_slk\fP(3X) standend/\fBcurs_attr\fP(3X) standout/\fBcurs_attr\fP(3X) start_color/\fBcurs_color\fP(3X) subpad/\fBcurs_pad\fP(3X) subwin/\fBcurs_window\fP(3X) syncok/\fBcurs_window\fP(3X) term_attrs/\fBcurs_termattrs\fP(3X) termattrs/\fBcurs_termattrs\fP(3X) termname/\fBcurs_termattrs\fP(3X) tgetent/\fBcurs_termcap\fP(3X) tgetflag/\fBcurs_termcap\fP(3X) tgetnum/\fBcurs_termcap\fP(3X) tgetstr/\fBcurs_termcap\fP(3X) tgoto/\fBcurs_termcap\fP(3X) tigetflag/\fBcurs_terminfo\fP(3X) tigetnum/\fBcurs_terminfo\fP(3X) tigetstr/\fBcurs_terminfo\fP(3X) timeout/\fBcurs_inopts\fP(3X) tiparm/\fBcurs_terminfo\fP(3X) tiparm_s/\fBcurs_terminfo\fP(3X)* tiscan_s/\fBcurs_terminfo\fP(3X)* touchline/\fBcurs_touch\fP(3X) touchwin/\fBcurs_touch\fP(3X) tparm/\fBcurs_terminfo\fP(3X) tputs/\fBcurs_termcap\fP(3X) tputs/\fBcurs_terminfo\fP(3X) trace/\fBcurs_trace\fP(3X)* typeahead/\fBcurs_inopts\fP(3X) unctrl/\fBcurs_util\fP(3X) unget_wch/\fBcurs_get_wch\fP(3X) ungetch/\fBcurs_getch\fP(3X) ungetmouse/\fBcurs_mouse\fP(3X)* untouchwin/\fBcurs_touch\fP(3X) use_default_colors/\fBdefault_colors\fP(3X)* use_env/\fBcurs_util\fP(3X) use_extended_names/\fBcurs_extend\fP(3X)* use_legacy_coding/\fBlegacy_coding\fP(3X)* use_screen/\fBcurs_threads\fP(3X)* use_tioctl/\fBcurs_util\fP(3X)* use_window/\fBcurs_threads\fP(3X)* vid_attr/\fBcurs_terminfo\fP(3X) vid_puts/\fBcurs_terminfo\fP(3X) vidattr/\fBcurs_terminfo\fP(3X) vidputs/\fBcurs_terminfo\fP(3X) vline/\fBcurs_border\fP(3X) vline_set/\fBcurs_border_set\fP(3X) vw_printw/\fBcurs_printw\fP(3X) vw_scanw/\fBcurs_scanw\fP(3X) vwprintw/\fBcurs_printw\fP(3X) vwscanw/\fBcurs_scanw\fP(3X) wadd_wch/\fBcurs_add_wch\fP(3X) wadd_wchnstr/\fBcurs_add_wchstr\fP(3X) wadd_wchstr/\fBcurs_add_wchstr\fP(3X) waddch/\fBcurs_addch\fP(3X) waddchnstr/\fBcurs_addchstr\fP(3X) waddchstr/\fBcurs_addchstr\fP(3X) waddnstr/\fBcurs_addstr\fP(3X) waddnwstr/\fBcurs_addwstr\fP(3X) waddstr/\fBcurs_addstr\fP(3X) waddwstr/\fBcurs_addwstr\fP(3X) wattr_get/\fBcurs_attr\fP(3X) wattr_off/\fBcurs_attr\fP(3X) wattr_on/\fBcurs_attr\fP(3X) wattr_set/\fBcurs_attr\fP(3X) wattroff/\fBcurs_attr\fP(3X) wattron/\fBcurs_attr\fP(3X) wattrset/\fBcurs_attr\fP(3X) wbkgd/\fBcurs_bkgd\fP(3X) wbkgdset/\fBcurs_bkgd\fP(3X) wbkgrnd/\fBcurs_bkgrnd\fP(3X) wbkgrndset/\fBcurs_bkgrnd\fP(3X) wborder/\fBcurs_border\fP(3X) wborder_set/\fBcurs_border_set\fP(3X) wchgat/\fBcurs_attr\fP(3X) wclear/\fBcurs_clear\fP(3X) wclrtobot/\fBcurs_clear\fP(3X) wclrtoeol/\fBcurs_clear\fP(3X) wcolor_set/\fBcurs_attr\fP(3X) wcursyncup/\fBcurs_window\fP(3X) wdelch/\fBcurs_delch\fP(3X) wdeleteln/\fBcurs_deleteln\fP(3X) wecho_wchar/\fBcurs_add_wch\fP(3X) wechochar/\fBcurs_addch\fP(3X) wenclose/\fBcurs_mouse\fP(3X)* werase/\fBcurs_clear\fP(3X) wget_wch/\fBcurs_get_wch\fP(3X) wget_wstr/\fBcurs_get_wstr\fP(3X) wgetbkgrnd/\fBcurs_bkgrnd\fP(3X) wgetch/\fBcurs_getch\fP(3X) wgetdelay/\fBcurs_opaque\fP(3X)* wgetn_wstr/\fBcurs_get_wstr\fP(3X) wgetnstr/\fBcurs_getstr\fP(3X) wgetparent/\fBcurs_opaque\fP(3X)* wgetscrreg/\fBcurs_opaque\fP(3X)* wgetstr/\fBcurs_getstr\fP(3X) whline/\fBcurs_border\fP(3X) whline_set/\fBcurs_border_set\fP(3X) win_wch/\fBcurs_in_wch\fP(3X) win_wchnstr/\fBcurs_in_wchstr\fP(3X) win_wchstr/\fBcurs_in_wchstr\fP(3X) winch/\fBcurs_inch\fP(3X) winchnstr/\fBcurs_inchstr\fP(3X) winchstr/\fBcurs_inchstr\fP(3X) winnstr/\fBcurs_instr\fP(3X) winnwstr/\fBcurs_inwstr\fP(3X) wins_nwstr/\fBcurs_ins_wstr\fP(3X) wins_wch/\fBcurs_ins_wch\fP(3X) wins_wstr/\fBcurs_ins_wstr\fP(3X) winsch/\fBcurs_insch\fP(3X) winsdelln/\fBcurs_deleteln\fP(3X) winsertln/\fBcurs_deleteln\fP(3X) winsnstr/\fBcurs_insstr\fP(3X) winsstr/\fBcurs_insstr\fP(3X) winstr/\fBcurs_instr\fP(3X) winwstr/\fBcurs_inwstr\fP(3X) wmouse_trafo/\fBcurs_mouse\fP(3X)* wmove/\fBcurs_move\fP(3X) wnoutrefresh/\fBcurs_refresh\fP(3X) wprintw/\fBcurs_printw\fP(3X) wredrawln/\fBcurs_refresh\fP(3X) wrefresh/\fBcurs_refresh\fP(3X) wresize/\fBwresize\fP(3X)* wscanw/\fBcurs_scanw\fP(3X) wscrl/\fBcurs_scroll\fP(3X) wsetscrreg/\fBcurs_outopts\fP(3X) wstandend/\fBcurs_attr\fP(3X) wstandout/\fBcurs_attr\fP(3X) wsyncdown/\fBcurs_window\fP(3X) wsyncup/\fBcurs_window\fP(3X) wtimeout/\fBcurs_inopts\fP(3X) wtouchln/\fBcurs_touch\fP(3X) wunctrl/\fBcurs_util\fP(3X) wvline/\fBcurs_border\fP(3X) wvline_set/\fBcurs_border_set\fP(3X) .TE .PP Extensia \fIscreen\-pointer extension\fP a \fI\%ncurses\fP adaugă funcții suplimentare corespunzătoare multora dintre cele de mai sus, fiecare cu un sufix „_sp”; a se vedea \fBcurs_sp_funcs\fP(3X). .PP Disponibilitatea unor extensii este configurabilă atunci când \fI\%ncurses\fP este compilat; consultați secțiunile «CONFIGURAȚII ALTERNATIVE» și «EXTENSII» de mai jos. .SH "VALOAREA RETURNATĂ" Dacă nu se specifică altfel, funcțiile care returnează un număr întreg returnează \fBOK\fP în caz de succes și \fBERR\fP în caz de eșec. Funcțiile care returnează indicatori returnează \fBNULL\fP în caz de eșec. De obicei, \fI\%ncurses\fP tratează un indicator nul transmis ca parametru al unei funcții ca un eșec. Funcțiile prefixate cu „mv” efectuează mai întâi mișcarea cursorului și eșuează dacă poziția (\fIy\fP, \fIx\fP) este în afara limitelor ferestrei. .SH MEDIU Următoarele simboluri din mediul procesului personalizează comportamentul aplicațiilor \fI\%ncurses\fP în timpul rulării. Biblioteca poate fi configurată să nu ia în considerare variabilele \fI\%TERMINFO\fP, \fI\%TERMINFO_DIRS\fP, \fI\%TERMPATH\fP și \fIHOME\fP, dacă utilizatorul este superutilizator (root) sau dacă aplicația utilizează \fI\%setuid\fP(2) sau \fI\%setgid\fP(2). .SS \fIBAUDRATE\fP Biblioteca de depanare verifică această variabilă atunci când aplicația a redirecționat ieșirea către un fișier. Valoarea sa integrală este utilizată pentru viteza de baud. Dacă această valoare este absentă sau nu este validă, \fI\%ncurses\fP utilizează 9600. Această caracteristică permite verificatorilor să construiască cazuri de testare repetabile care iau în considerare deciziile de optimizare care depind de viteza de baud. .SS "\fICC\fP (caracter de comandă)" Atunci când este definită, valoarea capacității \fB\%command_character\fP (\fB\%cmdch\fP) a intrărilor \fI\%term\%info\fP încărcate se modifică la valoarea acestei variabile. Foarte puține intrări \fI\%term\%info\fP oferă această caracteristică. .PP Deoarece acest nume este utilizat și în mediile de dezvoltare pentru a reprezenta numele compilatorului C, \fI\%ncurses\fP ignoră valoarea sa dacă nu are un singur caracter. .SS \fICOLUMNS\fP Această variabilă specifică lățimea ecranului în caractere. Aplicațiile care rulează într\-un mediu cu ferestre sunt de obicei capabile să obțină lățimea ferestrei în care se execută. Dacă \fI\%COLUMNS\fP nu este definită și dimensiunea ecranului terminalului nu este disponibilă de la controlorul terminalului, \fI\%ncurses\fP utilizează dimensiunea specificată de capacitatea \fB\%columns\fP (\fB\%cols\fP) din intrarea tipului de terminal în baza de date \fI\%term\%info\fP, dacă există. .PP Este important ca aplicația dumneavoastră să utilizeze dimensiunea corectă a ecranului. Detectarea automată a acesteia nu este întotdeauna posibilă, deoarece o aplicație poate rula pe o gazdă care nu respectă NAWS (Negociations About Window Size) sau cu un ID de utilizator diferit de cel al proprietarului fișierului dispozitivului terminal. Definirea \fI\%COLUMNS\fP și/sau \fI\%LINES\fP prevalează asupra utilizării de către bibliotecă a dimensiunii ecranului obținute de la sistemul de operare. .PP Variabilele \fI\%COLUMNS\fP și \fI\%LINES\fP pot fi specificate independent. Această proprietate este utilă pentru a evita caracteristicile eronate ale descrierilor tipurilor de terminale moștenite; descrierile \fI\%xterm\fP(1) care specifică 65 de linii au fost odată notorii. Pentru rezultate optime, evitați specificarea codurilor de capacitate \fBcols\fP și \fBlines\fP în descrierile \fI\%term\%info\fP ale emulatoarelor de terminale. .PP \fBuse_env\fP(3X) poate dezactiva utilizarea mediului procesului în determinarea dimensiunii ecranului. \fBuse_tioctl\fP(3X) poate actualiza \fI\%COLUMNS\fP și \fI\%LINES\fP pentru a corespunde dimensiunii ecranului obținute din apelurile sistemului sau din baza de date a terminalului. .SS \fIESCDELAY\fP Pentru ca \fIcurses\fP să distingă caracterul ESC care rezultă din apăsarea de către utilizator a tastei «Escape» de pe dispozitivul de intrare de cel care începe o secvență \fIescape\fP (așa cum este produs de obicei de tastele funcționale), acesta așteaptă după primirea caracterului de eludare pentru a vedea dacă sunt disponibile alte caractere în fluxul de intrare într\-un interval scurt. O variabilă globală \fB\%ESCDELAY\fP stochează acest interval în milisecunde. Valoarea implicită de 1000 (o secundă) este adecvată pentru majoritatea utilizărilor. Această variabilă de mediu o suprascrie. .PP Cel mai frecvent caz în care doriți să modificați această valoare este acela de a lucra cu o gazdă la distanță pe un canal de comunicare lent. Dacă gazda care rulează o aplicație \fIcurses\fP nu primește în timp util caracterele unei secvențe de scăpare, biblioteca le poate interpreta ca evenimente de apăsare a mai multor taste. .PP Evenimentele de mouse \fI\%xterm\fP(1) sunt o formă de secvență de eludare; prin urmare, dacă aplicația dvs. utilizează în mare măsură clicuri multiple, este posibil să doriți să prelungiți valoarea implicită, deoarece întârzierea se aplică evenimentului compozit de clicuri multiple, precum și clicurilor individuale. .PP Aplicațiile portabile nu ar trebui să se bazeze pe prezența \fB\%ESCDELAY\fP în niciuna dintre forme, dar definirea variabilei de mediu în locul variabilei globale nu creează probleme la compilarea unei aplicații. .PP Dacă \fB\%keypad\fP(3X) este dezactivată pentru fereastra \fIcurses\fP care primește intrarea, un program trebuie să dezambiguizeze singur secvențele de eludare. .SS \fIHOME\fP \fI\%ncurses\fP poate citi și scrie descrieri auxiliare ale terminalelor în fișierele \fI\%.termcap\fP și \fI\%.terminfo\fP din directorul personal al utilizatorului. .SS \fILINES\fP Această contraparte la \fI\%COLUMNS\fP specifică înălțimea ecranului în caractere. Capacitatea și codul \fI\%term\%info\fP corespunzător este \fB\%lines\fP. A se vedea descrierea variabilei \fI\%COLUMNS\fP de mai sus. .SS \fIMOUSE_BUTTONS_123\fP (Numai adaptarea pentru OS/2 EMX) OS/2 numerotează un mouse cu trei butoane în mod inconsecvent față de alte platforme, astfel încât 1 este butonul din stânga, 2 cel din dreapta și 3 cel din mijloc. Această variabilă personalizează numerotarea butoanelor mouse\-ului. Valoarea sa trebuie să fie trei cifre 1\-3 în orice ordine. În mod implicit, \fI\%ncurses\fP presupune o numerotare de „132”. .SS \fINCURSES_ASSUMED_COLORS\fP Dacă este definită, această variabilă înlocuiește presupunerea compilată a bibliotecii \fI\%ncurses\fP conform căreia culorile implicite ale terminalului sunt alb pe negru; consultați \fB\%default_colors\fP(3X). Definiți valorile culorilor de prim\-plan și de fundal cu această variabilă de mediu atribuindu\-i două valori întregi separate prin virgulă, indicând numerele culorilor de prim\-plan și, respectiv, de fundal. .PP De exemplu, pentru a\-i spune lui \fI\%ncurses\fP să nu presupună nimic cu privire la culori, utilizați o valoare de „\-1,\-1”. Pentru a face schema de culori implicită verde pe negru, utilizați „2,0”. \fI\%ncurses\fP acceptă valori integrale de la \-1 până la valoarea capacității \fI\%term\%info\fP \fB\%max_colors\fP (\fBcolors\fP). .SS \fINCURSES_CONSOLE2\fP .\" https://www.hanselman.com/blog/console2-a-better-windows-command-prompt (Numai pentru adaptarea din MinGW) Programul \fI\%Console2\fP gestionează în mod defectuos apelul Microsoft Console API \fI\%Create\%Console\%Screen\%Buffer\fP. Aplicațiile care îl utilizează se vor bloca. Cu toate acestea, este posibil să se simuleze acțiunea acestui apel prin atribuirea coordonatelor, salvarea explicită și restaurarea conținutului original al ecranului. Definirea variabilei de mediu \fI\%NCGDB\fP are același efect. .SS \fINCURSES_GPM_TERMS\fP (Numai în Linux) Atunci când \fI\%ncurses\fP este configurat pentru a utiliza interfața GPM, această variabilă poate enumera unul sau mai multe nume de terminale cu care este comparată variabila \fITERM\fP (a se vedea mai jos). O valoare goală dezactivează interfața GPM, folosind în schimb suportul integrat al \fI\%ncurses\fP pentru protocoalele de mouse \fIxterm\fP(1). Dacă variabila este absentă, \fI\%ncurses\fP încearcă să deschidă GPM dacă \fITERM\fP conține „linux”. .SS \fINCURSES_NO_HARD_TABS\fP \fI\%ncurses\fP poate utiliza caractere de tabulare în optimizarea mișcării cursorului. În unele cazuri, este posibil ca controlorul terminalului dvs. să nu le gestioneze corespunzător. Definiți această variabilă de mediu la orice valoare pentru a dezactiva caracteristica. De asemenea, puteți ajusta parametrii \fI\%stty\fP(1) pentru a evita problema. .SS \fINCURSES_NO_MAGIC_COOKIE\fP Multe terminale stochează atributele video ca o proprietate a unei celule de caractere, așa cum face \fIcurses\fP. Din punct de vedere istoric, unele înregistrau modificările atributelor video ca date care \fIocupă\fP logic celulele de caractere de pe afișaj, activând sau dezactivând atributele, în mod similar cu etichetele dintr\-un limbaj de marcare; acestea sunt denumite „magic cookies”, și trebuie să fie ulterior supra\-imprimate. Dacă intrarea \fI\%term\%info\fP pentru tipul dvs. de terminal nu descrie în mod adecvat modul de gestionare a cookie\-urilor magice, definiți această variabilă la orice valoare pentru a instrui \fI\%ncurses\fP să dezactiveze complet atributele. .SS \fINCURSES_NO_PADDING\fP Majoritatea descrierilor tipurilor de terminale din baza de date \fI\%term\%info\fP detaliază dispozitivele hardware. Multe persoane utilizează aplicații bazate pe \fIcurses\fP în programe emulatoare de terminale care rulează într\-un mediu cu ferestre. Aceste programe pot reproduce toate caracteristicile importante ale unui terminal hardware, dar adesea lipsesc limitările acestora. Principala problemă a acestor dezavantaje absente este gestionarea fluxului de date, adică limitarea vitezei de comunicare la ceea ce hardware\-ul poate gestiona. Cu excepția cazului în care un terminal hardware este interfațat cu un concentrator de terminale (care efectuează controlul fluxului), o aplicație trebuie să gestioneze singură controlul fluxului pentru a preveni depășirile și pierderea datelor. .PP O soluție care nu implică costuri hardware este ca o aplicație să facă o pauză după ce solicită unui terminal să execute o operație pe care o efectuează lent, cum ar fi ștergerea ecranului. Multe descrieri ale tipurilor de terminale, inclusiv cea pentru VT100, includ specificații de întârziere în capacități. Este posibil să doriți să utilizați aceste descrieri de terminale fără a suferi pierderi de performanță. Definiți \fI\%NCURSES_NO_PADDING\fP la orice valoare pentru a dezactiva toate umpluturile, cu excepția celor obligatorii. Umplerea obligatorie este utilizată de capacități de terminal precum \fB\%flash_screen\fP (\fBflash\fP). .SS \fINCURSES_NO_SETBUF\fP (Obsoletă ) Înainte de modificările interne dezvoltate în \fI\%ncurses\fP 5.9 (plasturii 20120825 până la 20130126), biblioteca folosea \fI\%setbuf\fP(3) pentru a activa ieșirea stocată complet în tampon la inițializarea terminalului. Acest lucru a fost făcut, precum în SVr4 \fIcurses\fP, pentru a crește performanța. În scopuri de testare, atât a \fI\%ncurses\fP, cât și a anumitor aplicații, această caracteristică a fost făcută opțională. Definirea acestei variabile a dezactivat stocarea în tampon a ieșirii, lăsând fluxul de ieșire în modul original (de obicei, stocarea în tampon de linie). .PP În prezent, \fI\%ncurses\fP realizează propria sa stocare în tampon și nu necesită această soluție; nu modifică stocarea în tampon a fluxului de ieșire standard. Această abordare face ca gestionarea semnalelor, precum cea a întreruperilor, să fie mai robustă. Un dezavantaj este că anumite programe neconvenționale amestecau apelurile \fI\%stdio\fP(3) cu apelurile \fI\%ncurses\fP și (de obicei) obțineau comportamentul așteptat. Acesta nu mai este cazul; \fI\\%ncurses\fP nu scrie în descriptorul de fișier de ieșire standard printr\-un flux cu tampon \fIstdio\fP. .PP Ca un caz special, apelurile API de nivel scăzut precum \fB\%putp\fP(3X) utilizează în continuare fluxul de ieșire standard. Apelurile \fIcurses\fP de nivel înalt precum \fB\%printw\fP(3X) nu o fac. .SS \fINCURSES_NO_UTF8_ACS\fP La inițializare, \fI\%ncurses\fP inspectează variabila de mediu \fITERM\fP pentru cazurile speciale în care se știe că anumite caractere VT100 (și capacitățile corespunzătoare ale setului de caractere alternative \fI\%term\%info\fP) nu sunt acceptate de tipurile de terminale care pretind compatibilitatea VT100. Mai exact, atunci când rulează într\-o configurație regională UTF\-8, dispozitivul de consolă virtuală Linux și programul GNU \fI\%screen\fP(1) le ignoră. Definiți această variabilă la o valoare diferită de zero pentru a instrui \fI\%ncurses\fP că suportul ACS al terminalului este deteriorat; biblioteca emite apoi puncte de cod Unicode care corespund caracterelor de desenare a formatelor. Definiți\-o la zero (sau un număr neîntreg) pentru a dezactiva verificarea specială a numelor tipurilor de terminale care se potrivesc cu «linux» sau «screen», determinând \fI\%ncurses\fP să presupună că funcția ACS funcționează dacă descrierea tipului de terminal o anunță. .PP Ca alternativă la utilizarea acestei variabile, \fI\%ncurses\fP verifică o capacitate numerică extinsă \fI\%term\%info\fP \fBU8\fP care poate fi compilată utilizând „\fBtic \-x\fP”. Urmăriți exemplele. .PP .RS 3 .EX # consola linux, dacă i s\-au aplicat corecții pentru a oferi # funcționarea VT100 shift\-in/shift\-out, cu fontul corespunzător. linux\-vt100|linux console with VT100 line\-graphics, U8#0, use=linux, \& # uxterm cu resursa vt100Graphics definită la „false” xterm\-utf8|xterm relying on UTF\-8 line\-graphics, U8#1, use=xterm, .EE .RE .PP Numele de două caractere „U8” a fost ales pentru a permite utilizarea sa prin interfața \fItermcap\fP a \fI\%ncurses\fP. .SS \fINCURSES_TRACE\fP La inițializare, \fI\%ncurses\fP (în configurația sa de depanare) verifică prezența acestei variabile. Dacă este definită cu o valoare integrală, biblioteca apelează \fB\%curses_trace\fP(3X) cu acea valoare ca argument. .SS \fITERM\fP Variabila \fITERM\fP denotă tipul terminalului. Fiecare este distinct, deși multe sunt similare. Este de obicei definită de emulatoarele de terminale pentru a ajuta aplicațiile să găsească o descriere acceptabilă a terminalului. Unele aleg o aproximare populară, cum ar fi „ansi”, „vt100” sau „xterm”, în loc de o potrivire exactă a capacităților lor. Nu de puține ori, o aplicație va avea probleme cu această abordare; de exemplu, o apăsare de tastă poate să nu funcționeze corect sau să nu producă niciun efect, ci doar caractere aparent de gunoi pe ecran. .PP Definirea \fITERM\fP nu are niciun efect asupra funcționării hardware; aceasta afectează modul în care aplicațiile comunică cu terminalul. De asemenea, ca regulă generală (\fIxterm\fP(1) fiind o excepție rară), emulatoarele de terminale care vă permit să specificați \fITERM\fP ca parametru sau valoare de configurare nu își modifică comportamentul pentru a corespunde acestei valori. .SS \fITERMCAP\fP Dacă \fI\%ncurses\fP este configurat cu suport \fItermcap\fP, acesta verifică o descriere a tipului de terminal în format \fItermcap\fP dacă nu este disponibilă una în format \fI\%term\%info\fP. Definirea acestei variabile determină \fI\%ncurses\fP să ignore locația obișnuită a bazei de date \fItermcap\fP, \fI\%/etc/termcap\fP; consultați \fI\%TERMPATH\fP mai jos. \fI\%TERMCAP\fP trebuie să conțină fie o descriere a terminalului (fără linii noi), fie un nume de fișier care să indice unde sunt stocate informațiile solicitate de variabila de mediu \fITERM\fP. .SS \fITERMINFO\fP \fI\%ncurses\fP poate fi configurat pentru a citi bazele de date de descriere a tipului de terminal în diverse locații, utilizând formate diferite. Această variabilă prevalează asupra locației implicite. .bP Descrierile în format \fI\%term\%info\fP sunt stocate în mod normal într\-un arbore de directoare care utilizează subdirectoare denumite după primele litere comune ale tipurilor de terminale denumite în acestea. Aceasta este schema utilizată în System\ V. .bP Dacă \fI\%ncurses\fP este configurat să utilizeze baze de date rezumate „hashed”, atunci \fI\%TERM\%INFO\fP poate numi locația sa, cum ar fi \fI\%/usr/share/terminfo.db\fP, în loc de \fI\%/usr/share/terminfo/\fP. .PP Baza de date rezumată utilizează mai puțin spațiu pe disc și este puțin mai rapidă decât arborele de directoare. Cu toate acestea, unele aplicații presupun existența arborelui de directoare și îl citesc direct în loc să utilizeze API\-ul \fI\%term\%info\fP. .bP Dacă \fI\%ncurses\fP este configurat cu suport \fItermcap\fP, această variabilă poate conține locația unui fișier \fI\%termcap\fP. .bP Dacă valoarea \fI\%TERM\%INFO\fP începe cu „hex:” sau „b64:”, \fI\%ncurses\fP utilizează restul valorii ca o descriere compilată \fI\%term\%info\fP. Puteți produce formatul base64 utilizând \fB\%infocmp\fP(1M). .RS 4 .IP .EX TERMINFO=$(infocmp \-0 \-Q2 \-q) export TERMINFO .EE .RE .IP Descrierea compilată este utilizată numai dacă corespunde tipului de terminal identificat prin \fITERM\fP. .PP Definirea \fI\%TERM\%INFO\fP este cea mai simplă, dar nu singura, modalitate de a direcționa \fI\%ncurses\fP către o bază de date a terminalului. Ruta de căutare este următoarea. .bP ultima bază de date a terminalului în care a scris aplicația \fI\%ncurses\fP, dacă există .bP locația specificată de variabila de mediu \fI\%TERM\%INFO\fP .bP \fI$HOME/.terminfo\fP .bP .\" empty locațiile enumerate în variabila de mediu \fI\%TERMINFO_DIRS\fP .ds td .if !'/usr/share/terminfo'no default value' .as td /usr/share/terminfo .if !'/usr/share/terminfo\*(td'' \{\ .bP location(s) configured and compiled into .I \%ncurses .RS 3 .if !'\*(td'' \{\ .bP .I \%/usr/share/terminfo .\} .if !'@TERMINFO'' .if !'\*(td'/usr/share/terminfo' \{\ .bP .I \%/usr/share/terminfo .\} .\} .RE .SS \fITERMINFO_DIRS\fP Această variabilă specifică o listă de locații, asemănătoare cu \fIPATH\fP, în care \fI\%ncurses\fP caută descrierile tipurilor de terminale descrise de \fI\%TERMINFO\fP mai sus. Elementele listei sunt separate prin două puncte în Unix și punct și virgulă în OS/2 EMX. \fI\%term\%info\fP System\ V nu are o funcție corespunzătoare; \fI\%TERMINFO_DIRS\fP este o extensie \fI\%ncurses\fP. .SS \fITERMPATH\fP Dacă \fI\%TERMCAP\fP nu conține o descriere a tipului de terminal sau un nume de fișier, atunci \fI\%ncurses\fP verifică conținutul \fI\%TERMPATH\fP, o listă de locații, asemănătoare cu \fIPATH\fP, în care caută descrieri ale tipului de terminal \fItermcap\fP. Elementele listei sunt separate prin două puncte în Unix și punct și virgulă în OS/2 EMX. \fI\%term\%info\fP System\ V nu are o funcție corespunzătoare; \fI\%TERMINFO_DIRS\fP este o extensie \fI\%ncurses\fP. .PP Dacă \fI\%TERMCAP\fP și \fI\%TERMPATH\fP nu sunt definite sau nu sunt valide, \fI\%ncurses\fP caută fișierele \fI\%/etc/termcap\fP, \fI\%/usr/share/misc/termcap\fP și \fI\%$HOME/.termcap\fP, în această ordine. .SH "CONFIGURAȚII ALTERNATIVE" Sunt posibile multe configurații \fI\%ncurses\fP diferite, determinate de opțiunile oferite scriptului \fI\%configure\fP la crearea bibliotecii. Rulați scriptul cu opțiunea \fB\-\-help\fP pentru a le parcurge pe toate. Câteva sunt deosebit de importante pentru dezvoltatorul de aplicații care utilizează \fI\%ncurses\fP. .TP 5 \fB\-\-disable\-overwrite\fP Includerea standard pentru \fI\%ncurses\fP este cea menționată în \fBSINOPSIS\fP: .RS 5 .PP .RS 4 .EX \fB#include \fP .EE .RE .PP Această opțiune este utilizată pentru a evita conflictele de nume de fișier atunci când \fI\%ncurses\fP nu este principala implementare a curses a calculatorului. Dacă \fI\%ncurses\fP este instalat dezactivând suprascrierea, acesta își pune anteturile într\-un subdirector, de exemplu, .PP .RS 4 .EX \fB#include \fP .EE .RE .PP De asemenea, omite o legătură simbolică care v\-ar permite să utilizați \fB\-lcurses\fP pentru a construi executabile. .RE .TP 5 \fB\-\-enable\-widec\fP Scriptul de configurare redenumește biblioteca și (dacă se utilizează opțiunea \fB\-\-disable\-overwrite\fP) pune fișierele de antet într\-un alt subdirector. Toate numele bibliotecilor au un „w” adăugat la ele, adică în loc de .RS 5 .PP .RS 4 .EX \fB\-lncurses\fP .EE .RE .PP legați cu .PP .RS 4 .EX \fB\-lncursesw\fP .EE .RE .PP De asemenea, trebuie să activați caracteristicile caracterului lat în fișierul antet atunci când compilați pentru biblioteca caracterului lat pentru a utiliza funcțiile extinse (caracter lat). Simbolul care activează aceste funcții s\-a schimbat de la Curses X/Open, ediția 4: .bP Inițial, caracteristica de caractere late necesita simbolul \fB_XOPEN_SOURCE_EXTENDED\fP, dar acesta era valabil numai pentru XPG4 (1996). .bP Ulterior, acest lucru a fost considerat conflictual cu \fB_XOPEN_SOURCE\fP definit la 500. .bP De la mijlocul anului 2018, niciuna dintre caracteristicile din această implementare nu necesită o caracteristică \fB_XOPEN_SOURCE\fP mai mare de 600. Cu toate acestea, Curses X/Open, ediția 7 (2009) recomandă definirea acesteia la 700. .bP Alternativ, puteți activa caracteristica prin definirea \fBNCURSES_WIDECHAR\fP cu avertismentul că un alt fișier antet decât \fBcurses.h\fP poate necesita o valoare specifică pentru \fB_XOPEN_SOURCE\fP (sau un simbol specific sistemului). .PP Fișierul de antet \fI\%curses.h\fP instalat pentru biblioteca de caractere late este conceput pentru a fi compatibil cu antetul bibliotecii „non\-wide”. Doar dimensiunea structurii \fI\%WINDOW\fP diferă; puține aplicații necesită mai mult decât indicatori la \fI\%WINDOW\fP\-uri. .PP Dacă antetele sunt instalate permițând suprascrierea, antetele bibliotecii de caractere late ar trebui să fie instalate ultimele, pentru a permite construirea de aplicații folosind ambele biblioteci din același set de antete. .RE .TP 5 \fB\-\-with\-pthread\fP Scriptul de configurare redenumește biblioteca. Toate numele bibliotecilor au un „t” adăugat la ele (înainte de orice „w” adăugat de \fB\-\-enable\-widec\fP). .IP Variabilele globale precum \fBLINES\fP sunt înlocuite cu macroinstrucțiuni pentru a permite accesul numai la citire. În același timp, sunt furnizate funcții de configurare (setter\-functions) pentru a defini aceste valori. Unele aplicații (foarte puține) pot necesita modificări pentru a funcționa cu această convenție. .TP 5 \fB\-\-with\-shared\fP .tQ \fB\-\-with\-normal\fP .tQ \fB\-\-with\-debug\fP .tQ \fB\-\-with\-profile\fP Numele bibliotecilor partajate și normale (statice) diferă prin sufixele lor, de exemplu, \fBlibncurses.so\fP și \fBlibncurses.a\fP. Bibliotecile de depanare și de profilare adaugă un „_g” și respectiv un „_p” la numele rădăcinii, adică \fBlibncurses_g.a\fP și \fBlibncurses_p.a\fP. .TP 5 \fB\-\-with\-termlib\fP Funcțiile de nivel scăzut, care nu depind de faptul că biblioteca acceptă sau nu caractere late, sunt furnizate în biblioteca tinfo. .IP Astfel, este posibilă partajarea bibliotecii tinfo între configurațiile late/normale, precum și reducerea dimensiunii bibliotecii atunci când sunt necesare doar funcții de nivel scăzut. .IP Aceste funcții sunt descrise în aceste pagini: .RS .bP \fB\%curs_extend\fP(3X) \- extensii diverse \fIcurses\fP .bP \fB\%curs_inopts\fP(3X) \- opțiuni de intrare \fIcurses\fP .bP \fB\%curs_kernel\fP(3X) \- rutine \fIcurses\fP de nivel redus .bP \fB\%curs_termattrs\fP(3X) \- rutine de interogare a mediului \fIcurses\fP .bP \fB\%curs_termcap\fP(3X) \- emularea \fIcurses\fP a \fItermcap\fP .bP \fB\%curs_terminfo\fP(3X) \- interfața \fIcurses\fP cu baza de date \fIterminfo\fP .bP \fB\%curs_util\fP(3X) \- diverse rutine utilitare \fIcurses\fP .RE .TP 5 \fB\-\-with\-trace\fP Funcția \fBtrace\fP se află în mod normal în biblioteca de depanare, dar uneori este util să configurați această funcție în biblioteca partajată. Scripturile de configurare ar trebui să verifice existența funcției în loc să presupună că aceasta se află întotdeauna în biblioteca de depanare. .SH FIȘIERE .TP \fI/usr/share/tabset\fP baza de date de inițializare oprire a tabulatorului .TP \fI\*d\fP baza de date compilată privind capacitatea terminalelor .SH NOTE .\" See X/Open Curses Issue 4, Version 2, pp. 227-234. .\" See X/Open Curses Issue 7, pp. 311-318. Curses X/Open permite ca majoritatea funcțiilor pe care le specifică să fie disponibile și ca macroinstrucțiuni. \fI\%ncurses\fP face acest lucru .bP pentru funcțiile care returnează valori prin intermediul parametrilor lor, .bP pentru a oferi suport pentru caracteristici învechite, .bP pentru reutilizarea funcțiilor (de exemplu, cele care mută cursorul înainte de o altă operație), și .bP în câteva cazuri speciale. .PP Dacă descriptorul de fișier al ieșirii standard al unui program \fI\%ncurses\fP este redirecționat către ceva care nu este un dispozitiv de terminal, biblioteca scrie actualizările ecranului în descriptorul de fișier al ieșirii de eroare standard. Aceasta a fost o caracteristică nedocumentată a SVr3 \fIcurses\fP. .PP Consultați subsecțiunea «Fișiere antet» de mai jos privind simbolurile expuse prin includerea lui \fI\%curses.h\fP. .SH EXTENSII \fI\%ncurses\fP permite unei aplicații să capteze evenimentele mouse\-ului pe anumite terminale, inclusiv \fI\%xterm\fP(1); consultați \fB\%curs_mouse\fP(3X). .PP \fI\%ncurses\fP oferă un mijloc de a răspunde evenimentelor de redimensionare a ferestrei, ca atunci când rulează într\-o aplicație emulator de terminal GUI, cum ar fi \fI\%xterm\fP; consultați \fB\%resizeterm\fP(3X) și \fB\%wresize\fP(3X). .PP \fI\%ncurses\fP permite unei aplicații să solicite terminalului prezența unei mari varietăți de taste speciale; consultați \fB\%has_key\fP(3X). .PP \fI\%ncurses\fP extinde setul fix de capacități ale tastelor funcționale specificate de Curses X/Open permițând programatorului de aplicații să definească evenimente suplimentare ale tastelor în timpul execuției; consultați \fB\%define_key\fP(3X), \fB\%key_defined\fP(3X), \fB\%keybound\fP(3X) și \fB\%keyok\fP(3X). .PP \fI\%ncurses\fP poate exploata capacitățile terminalelor care implementează secvențele ISO\ 6429/ECMA\-48 SGR\ 39 și SGR\ 49, care permit unei aplicații să readucă terminalul la culorile inițiale de prim\-plan și de fundal. Din punctul de vedere al utilizatorului, aplicația este capabilă să deseneze text colorat pe un fundal a cărui culoare este stabilită independent, oferind un control mai bun asupra contrastelor de culoare. A se vedea \fB\%default_colors\fP(3X). .PP O aplicație \fI\%ncurses\fP poate evita cunoașterea structurii interne \fI\%WINDOW\fP, folosind în schimb funcții de accesare precum \fB\%is_scrollok\fP(3X). .PP \fI\%ncurses\fP permite unei aplicații să direcționeze ieșirea aplicației către o imprimantă atașată la dispozitivul de terminal; consultați \fB\%curs_print\fP(3X). .PP \fI\%ncurses\fP oferă \fB\%slk_attr\fP(3X) ca o variantă contrară a \fB\%attr_get\fP(3X) pentru liniile de taste cu etichetă software și \fB\%extended_slk_color\fP(3X) ca o formă a \fB\%slk_color\fP(3X) care poate colecta informații despre culoare de la acestea atunci când sunt acceptate mai multe culori. .PP Unele extensii sunt disponibile numai dacă \fI\%ncurses\fP permite modificarea comportamentului lui \fB\%unctrl\fP(3X); consultați \fB\%use_legacy_coding\fP(3X). \fI\%ncurses\fP este compilat pentru a le accepta; secțiunea «CONFIGURAȚII ALTERNATIVE» descrie cum. .bP Poate fi disponibil un suport rudimentar pentru aplicațiile multi\-fir; consultați \fBcurs_threads\fP(3X). .bP Funcțiile care facilitează gestionarea ecranelor multiple pot fi expuse; a se vedea \fBcurs_sp_funcs\fP(3X). .bP Pentru a ajuta aplicațiile să își depaneze utilizarea memoriei, \fIncurses\fP oferă opțional funcții pentru a elibera mai agresiv memoria pe care o alocă dinamic; a se vedea \fBcurs_memleaks\fP(3X). .bP Biblioteca facilitează auditarea și depanarea comportamentului său; a se vedea \fBcurs_trace\fP(3X). .bP Opțiunea de compilare \fB\%\-DUSE_GETCAP\fP face ca biblioteca să revină la citirea \fI\%/etc/termcap\fP dacă codul de configurare a terminalului nu poate găsi o intrare \fI\%term\%info\fP corespunzătoare lui \fITERM\fP. Utilizarea acestei funcții nu este recomandată, deoarece include, în esență, un întreg compilator \fItermcap\fP în codul de pornire \fI\%ncurses\fP, cu un cost în ceea ce privește utilizarea memoriei și latența lansării aplicației. .PP \fI\%PDCurses\fP și \fIcurses\fP NetBSD includ unele extensii \fI\%ncurses\fP. Paginile de manual individuale indică unde acesta este cazul. .SH PORTABILITATE Curses X/Open definește două niveluri de conformitate, „base” și „enhanced”. Acesta din urmă include câteva caracteristici suplimentare, cum ar fi suportul pentru caractere late și culori. \fI\%ncurses\fP intenționează conformitatea la nivel de bază cu Curses X/Open, și acceptă toate caracteristicile nivelului său îmbunătățit, cu excepția utilitarului \fB\%untic\fP. .PP Diferențele dintre Curses X/Open și \fI\%ncurses\fP sunt documentate în secțiunile «PORTABILITATE» din paginile de manual aplicabile. .SS "Verificarea erorilor" În multe cazuri, Curses X/Open este vag cu privire la condițiile de eroare, omițând o parte din documentația SVr4. .PP Spre deosebire de alte implementări, \fI\%ncurses\fP verifică parametrii de tip indicator, cum ar fi cei pentru structurile \fI\%WINDOW\fP, pentru a se asigura că nu sunt nule. Acest lucru se face în primul rând pentru a proteja împotriva erorilor programatorului. Interfața standard nu prevede o modalitate prin care biblioteca să indice unei aplicații care dintre mai multe erori posibile a avut loc. Bazarea pe această extensie (sau pe alta) afectează în mod negativ portabilitatea aplicațiilor \fIcurses\fP. .SS "Diferențe de umplere" În implementările istorice ale \fIcurses\fP, întârzierile încorporate în capacitățile \fI\%term\%info\fP \fB\%carriage_return\fP (\fBcr\fP), \fB\%scroll_forward\fP (\fBind\fP), \fB\%cursor_left\fP (\fBcub1\fP), \fB\%form_feed\fP (\fBff\fP) și \fB\%tab\fP (\fBht\fP) activau biții de întârziere corespunzători în controlorul de terminal Unix. \fI\%ncurses\fP efectuează toată umplerea prin trimiterea de octeți NUL către dispozitiv. Această metodă este puțin mai costisitoare, dar restrânge semnificativ interfața cu nucleul Unix și crește corespunzător portabilitatea pachetului. .SS "Fișiere antet" Fișierul de antet \fI\%curses.h\fP include fișierele de antet \fI\%stdio.h\fP și \fI\%unctrl.h\fP. .PP Curses X/Open are mai multe de spus, .RS 4 .PP Includerea \fI\%curses.h\fP poate face vizibile toate simbolurile din antetele \fI\%stdio.h\fP, \fI\%term.h\fP, \fI\%termios.h\fP și \fI\%wchar.h\fP. .RE .PP dar nu încheie povestea. Urmează o relatare mai completă. .bP Începând cu 4BSD \fIcurses\fP (1980), toate implementările au furnizat un fișier \fI\%curses.h\fP. .IP Codul \fIcurses\fP BSD includea \fI\%curses.h\fP și \fI\%unctrl.h\fP dintr\-un fișier de antet intern \fI\%curses.ext\fP, unde „ext” abrevia „externs”. .IP Implementările \fI\%printw\fP și \fI\%scanw\fP au utilizat funcții interne nedocumentate ale bibliotecii de In/Ieș standard (\fI_doprnt\fP și \fI_doscan\fP), dar nimic în \fI\%curses.h\fP nu s\-a bazat pe \fI\%stdio.h\fP. .bP \fIcurses\fP SVr2 a adăugat \fI\%newterm\fP, care se bazează pe \fI\%stdio.h\fP deoarece prototipul funcției sale utilizează tipul \fIFILE\fP. .IP \fIcurses\fP SVr4 a adăugat \fI\%putwin\fP și \fI\%getwin\fP, care utilizează și \fI\%stdio.h\fP. .IP Curses X/Open specifică toate aceste trei funcții. .IP \fIcurses\fP SVr4 și Curses X/Open nu solicită dezvoltatorului să includă \fI\%stdio.h\fP înainte de \fI\%curses.h\fP. Ambele documentează utilizarea \fIcurses\fP ca necesitând doar \fI\%curses.h\fP. .IP Ca urmare, standardul \fI\%curses.h\fP include întotdeauna \fI\%stdio.h\fP. .bP Curses X/Open și \fIcurses\fP SVr4 nu sunt compatibile cu \fI\%unctrl.h\fP. .IP După cum se menționează în \fBcurs_util\fP(3X), \fI\%ncurses\fP include \fI\%unctrl.h\fP din \fI\%curses.h\fP (așa cum face SVr4). .bP Comentariile din Curses X/Open despre \fI\%term.h\fP și \fI\%termios.h\fP se pot referi la HP\-UX și AIX. .IP \fIcurses\fP HP\-UX include \fI\%term.h\fP din \fI\%curses.h\fP pentru a declara \fI\%setupterm\fP în \fI\%curses.h\fP, dar \fI\%ncurses\fP și \fIcurses\fP Solaris nu. .IP \fIcurses\fP AIX include \fI\%term.h\fP și \fI\%\fPtermios.h\fI.\fP Din nou, \fI\%ncurses\fP și \fIcurses\fP Solaris nu. .bP Curses X/Open spune că \fI\%curses.h\fP \fBpoate\fP include \fI\%term.h\fP, dar nu îi cere să facă acest lucru. .IP Unele programe utilizează funcții declarate atât în \fI\%curses.h\fP, cât și în \fI\%term.h\fP, și trebuie să includă ambele fișiere de antet în același modul. Versiunile foarte vechi ale \fIcurses\fP AIX impuneau includerea \fI\%curses.h\fP înaintea \fI\%term.h\fP. .IP Fișierele de antet furnizate de \fI\%ncurses\fP includ antetele bibliotecii standard necesare pentru declarațiile sale, astfel încât propriile fișiere de antet ale \fI\%ncurses\fP pot fi incluse în orice ordine. Dar pentru portabilitate, ar trebui să includeți \fI\%curses.h\fP înainte de \fI\%term.h\fP. .bP Curses X/Open spune „poate face vizibile” deoarece includerea unui fișier antet nu face neapărat vizibile toate simbolurile din acesta (luați în considerare #ifdef și altele similare). .IP .\" bold to contrast with preceding italic .\" bold for consistency in this paragraph De exemplu, \fI\%ncurses\fP's \fI\%curses.h\fP \fBmay\fP include \fI\%wchar.h\fP dacă simbolul corespunzător este definit și dacă \fI\%ncurses\fP este configurat pentru suportul caracterelor late. Dacă \fI\%wchar.h\fP este inclus, simbolurile sale \fBpot\fP fi făcute vizibile în funcție de valoarea macroinstrucțiunii de testare a caracteristicilor \fB_XOPEN_SOURCE\fP. .bP Curses X/Open impune includerea de către o aplicație a unui antet de bibliotecă C standard într\-un caz special: \fI\%stdarg.h\fP înainte de \fI\%curses.h\fP pentru a prototipa funcțiile \fI\%vw_printw\fP și \fI\%vw_scanw\fP (precum și învechitele \fI\%vwprintw\fP și \fI\%vwscanw\fP). Fiecare dintre acestea ia o listă de argumente variadice, un parametru \fI\%va_list\fP, precum cel al \fI\%printf\fP(3). .IP .\" V7, 32V, System III, 3BSD \fIcurses\fP SVr3 a introdus două funcții învechite, iar Curses X/Open pe celelalte. Între timp, \fIcurses\fP SVr4 a prevăzut posibilitatea ca o aplicație să includă fie \fI\%varargs.h\fP, fie \fI\%stdarg.h\fP. Acestea reprezentau abordări contrastante pentru gestionarea listelor de argumente variadice. Interfața mai veche, \fI\%varargs.h\fP, folosea un indicator către \fIchar\fP pentru parametrul \fI\%va_list\fP al funcțiilor variadice. Ulterior, lista și\-a dobândit propriul tip de date standard, \fI\%va_list\fP, definit în \fI\%stdarg.h\fP, permițând compilatorului să verifice tipurile parametrilor reali ai unui apel de funcție în raport cu cele formale declarate în prototipul său. .IP Nicio implementare conformă a Curses X/Open nu solicită unei aplicații să includă \fI\%stdarg.h\fP înaintea \fI\%curses.h\fP, deoarece fie au permis pentru un tip special, fie, precum \fI\%ncurses\fP, includ ele însele \fI\%stdarg.h\fP pentru a oferi o interfață portabilă. .SH AUTORI Zeyd M. Ben\-Halim, Eric S. Raymond, Thomas E. Dickey. Bazat pe \fI\%pcurses\fP de Pavel Curtis. .SH "CONSULTAȚI ȘI" \fB\%curs_variables\fP(3X), \fB\%terminfo\fP(5), \fB\%user_caps\fP(5) .PP .SH TRADUCERE Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu . .PP Această traducere este documentație gratuită; citiți .UR https://www.gnu.org/licenses/gpl-3.0.html Licența publică generală GNU Versiunea 3 .UE sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE. .PP Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la .MT translation-team-ro@lists.sourceforge.net .ME .