ncurses (new curses) — бібліотека, яка реалізує API, що дозволяє програмісту створювати текстовий інтерфейс користувача для керуванням вводом-виводом на термінал в режимі консольного застосування. Це набір інструментів для розробки інтерфейсів, подібних до графічних програмних застосунків в режимі термінала. Вона оптимізована для роботи при зміні розмірів екрану, для зменшення затримки, яка виникає при використанні віддалених командних оболонок Unix.
Історія
Літера N в назві ncurses походить від англійського слова new (новий). Це тому що бібліотека ncurses є безкоштовною бібліотекою, яка є послідовником (копією) бібліотеки System V Release 4.0 (SVr4) curses, яка в свою чергу була вдосконаленою бібліотекою на базі класичної 4.4 BSD curses, яка припинила своє існування.[2] Стандарт XSI Curses використовувався X/Open безпосередньо і розроблювався для System V.
Використання бібліотеки ncurses
Для того, щоб зібрати свою C/C++ програму з використанням бібліотеки ncurses/curses
вам необхідно підключити файл заголовку <curses.h>. Для ncurses, ви можете користуватися або <curses.h> або <ncurses.h>.
На деяких системах, можна зібрати лише з підключенням заголовку <ncurses.h>.
Для лінкування програми необхідно задати опцію компілятора -lcurses або -lncurses, у вигляді
Ініціалізація
Перш ніж використовувати будь-які інші процедури, необхідно здійснити виклик процедури initscr().
Якщо ваша програма буде працювати на декількох терміналах, замість неї слід викликати newterm.
Перед тим як відбудеться завершення програми потрібно визвати процедуру endwin() для відновлення параметрів терміналу.
Приклад мінімальної програми
В програмі використовується версія бібліотеки Ncurses, яка має підтримку юнікоду. Для роботи з нею треба встановити флаг компілятора -lncursesw
#include <ncursesw/curses.h>
#include <locale.h>
#define COLOR_BLUE_YELLOW 1
int main(int argc, char *argv[])
{
setlocale(LC_ALL, ""); // Включення підтримки юнікод
// Ініціалізація ncurses (зчитування конфігурації термінала)
WINDOW *stdscr = initscr();
// Ініціалізація кольорового режиму і створення пари кольорів для фону і тексту
start_color();
init_pair(COLOR_BLUE_YELLOW, COLOR_YELLOW, COLOR_BLUE);
// Початок відображення в заданому кольоровому режимі
attron(COLOR_PAIR(COLOR_BLUE_YELLOW));
//COLOR_YELLOW фактично є коричневим. Для того щоб отримати жовтий, використовують COLOR_YELLOW
//в поєднанні з атрибутом A_BOLD.
attron(A_BOLD);
printw("Текст має вивестись жовтим кольором на синьому фоні!\n");
attroff(A_BOLD);
// Вивести текст без налаштування кольору
attroff(COLOR_PAIR(1));
printw("Натисніть будь-яку клавішу для виходу\n");
// Оновлення екрану
refresh();
// Очікування натиснення клавіші перед завершенням програми
getch();
// Відновлення початкового налаштування терміналу
endwin();
}
Посилання
Примітки