#include <curses.h>#define LOCAL_ESCAPE_KEY 27int main() {Β int key;Β initscr();Β crmode();Β keypad(stdscr, TRUE);2.Β ΠΡΠΊΠ»ΡΡΠΈΡΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², ΡΡΠΎΠ±Ρ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΡΡΡΠΎΡΠ° ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΡΡΡΠΎΡΠΎΠΌ. ΠΠΊΡΠ°Π½ ΠΎΡΠΈΡΠ°Π΅ΡΡΡ, ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΠΊΡΡ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΆΠ΄Π΅Ρ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡΠΈ ΠΈ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π½Π°ΠΆΠ°ΡΠ° ΠΊΠ»Π°Π²ΠΈΡΠ° <Q> ΠΈΠ»ΠΈ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°. Π‘ΠΈΠΌΠ²ΠΎΠ» Π½Π°ΠΆΠ°ΡΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΡΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΠΊΡΠ°Π½. ΠΡΠ»ΠΈ Π½Π°ΠΆΠ°ΡΡΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ Π΄Π»Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°, Π²ΠΌΠ΅ΡΡΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΡΠ° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
Β noecho();Β clear();Β mvprintw(5, 5, "Key pad demonstration. Press 'q' to quit");Β move(7, 5);Β refresh();Β key = getch();Β while (key != ERR && key i= 'q') {Β Β move(7, 5);Β Β clrtoeol();Β if ((key >= 'A' && key <= 'Z') || (key >= 'a' && key <= 'z')) {Β Β printw("Key was%c", (char)key);Β Β } else {Β Β switch(key) {Β Β case LOCAL_ESCAPE_KEY:Β Β Β printw("%s",Β "Escape key");Β Β Β break;Β Β case KEY_END:Β Β Β printw("%s", "END key");Β Β Β break;Β Β case KEY_BEG:Β Β Β printw("%s", "BEGINNING key");Β Β Β break;Β Β case KEY_RIGHT:Β Β Β printw("%s", "RIGHT key");Β Β Β break;Β Β case KEY_LEFT:Β Β Β printw("%s", "LEFT key");Β Β Β break;Β Β case KEY_UP:Β Β Β printw("%s", "UP key");Β Β Β break;Β Β case KEY_DOWN:Β Β Β printw("%s", "DOWN key");Β Β Β break;Β Β default:Β Β Β printw("Unmatched β %d", key);Β Β Β break;Β Β } /* switch */Β } /* else */Β refresh();Β Β key = getch();Β } /* while */Β endwin();Β exit(EXIT_SUCCESS);}ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
ΠΠΊΠ»ΡΡΠΈΠ² ΡΠ΅ΠΆΠΈΠΌ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, Π²Ρ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠΈ Π½Π° Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ΅, Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΠΈΠ΅ escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΌΠ΅Π΅ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΡΠΈ <Esc> Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, ΡΠ΅ΠΌ Π΄ΡΡΠ³ΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ.
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ²Π΅ΡΠ°
Π ΠΏΡΠΎΡΠ»ΠΎΠΌ ΠΎΡΠ΅Π½Ρ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Ρ Π²Π²ΠΎΠ΄Π°/Π²ΡΠ²ΠΎΠ΄Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π»ΠΈ ΡΠ²Π΅ΡΠ°, ΠΏΠΎΡΡΠΎΠΌΡ Ρ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ ΡΠ°ΠΌΡΡ ΡΡΠ°ΡΡΡ Π²Π΅ΡΡΠΈΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ curses Π½Π΅ Π±ΡΠ»ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΠ²Π΅ΡΠΎΠ². Π¦Π²Π΅ΡΠ° ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ncurses ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡ curses. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π½Π° "Π½Π΅ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΠΊΡΠ°Π½", ΠΏΠ΅ΡΠ²ΠΎΠΎΡΠ½ΠΎΠ²Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ curses, ΠΏΠΎΠ²Π»ΠΈΡΠ» API, ΠΈ curses ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ²Π΅ΡΠ° ΠΎΡΠ΅Π½Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, ΠΎΡΡΠ°ΠΆΠ°ΡΡΠΈΠΌ ΡΠ»Π°Π±ΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΡΡΠ°ΡΡΡ ΡΠ²Π΅ΡΠ½ΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΠΎΠ².
ΠΠ°ΠΆΠ΄Π°Ρ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½Π°Ρ ΡΡΠ΅ΠΉΠΊΠ° Π½Π° ΡΠΊΡΠ°Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΏΠΈΡΠ°Π½Π° ΠΎΠ΄Π½ΠΈΠΌ ΡΠ²Π΅ΡΠΎΠΌ ΠΈΠ· Π½Π°Π±ΠΎΡΠ° ΡΠ°Π·Π½ΡΡ ΡΠ²Π΅ΡΠΎΠ² Π½Π° ΡΠΎΠ½Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ° ΠΈΠ· Π½Π°Π±ΠΎΡΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ²Π΅ΡΠΎΠ² ΡΠΎΠ½Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ²Π΅ΡΡΠΈ Π·Π΅Π»Π΅Π½ΡΠΉ ΡΠ΅ΠΊΡΡ Π½Π° ΠΊΡΠ°ΡΠ½ΠΎΠΌ ΡΠΎΠ½Π΅.
Π¦Π²Π΅ΡΠΎΠ²Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ curses Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±ΡΡΠ½Π°, Π² ΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅, ΡΡΠΎ ΡΠ²Π΅Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π° Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠ²Π΅ΡΠ° ΡΠΎΠ½Π°. ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π°Π΄Π°ΡΡ ΡΠ²Π΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π½Π΅Π³ΠΎ ΠΏΠ»Π°Π½Π° ΠΈ ΡΠΎΠ½Π° ΠΊΠ°ΠΊ ΠΏΠ°ΡΡ, ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ, ΡΡΠΎ Π½Π΅ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΠΏΠ°ΡΠΎΠΉ.
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΠ²Π΅ΡΠ° Π² curses, Π½ΡΠΆΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ²Π΅ΡΠ°, ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ²Π΅ΡΠΎΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ curses. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ:
has_colorsstart_color<b>#include <curses.h></b><b>bool has_colors(void);</b><b>int start_color(void);</b>Π€ΡΠ½ΠΊΡΠΈΡ
has_colorstruestart_colorOKstart_colorCOLOR_PAIRSCOLORSΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΡΠ²Π΅ΡΠ° ΠΊΠ°ΠΊ Π°ΡΡΠΈΠ±ΡΡΡ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²Π΅ΡΠΎΠ²ΡΠ΅ ΠΏΠ°ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ. ΠΠ΅Π»Π°Π΅ΡΡΡ ΡΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ
init_pairCOLOR_PAIR<b>#include <curses.h></b><b>int init_pair(short pair_number, short foreground, short background);</b><b>int COLOR_PAIR(int pair_number);</b><b>int pair_content(short pair_number, short *foreground, short *background);</b>Π ΡΠ°ΠΉΠ»Π΅ curses.h ΠΎΠ±ΡΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΡΠ²Π΅ΡΠ°, Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΠ΅ΡΡ Ρ ΠΏΡΠ΅ΡΠΈΠΊΡΠ°
COLOR_pair_content