ncurses
ncurses (new curses) — бібліотека, яка реалізує API, що дозволяє програмісту створювати текстовий інтерфейс користувача для керуванням вводом-виводом на термінал в режимі консольного застосування. Це набір інструментів для розробки інтерфейсів, подібних до графічних програмних застосунків в режимі термінала. Вона оптимізована для роботи при зміні розмірів екрану, для зменшення затримки, яка виникає при використанні віддалених командних оболонок Unix.
Тип | Widget toolkit |
---|---|
Розробник | GNU Project |
Перший випуск | 1993 |
Стабільний випуск | 6.3 (8 листопада, 2021 ) |
Операційна система | POSIX |
Мова програмування | C |
Ліцензія | X11 License[1] |
Репозиторій | invisible-mirror.net/archives/ncurses/ |
Вебсайт | invisible-island.net/ncurses/ |
Історія
ред.Літера 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>.
#include <curses.h>
Для лінкування програми необхідно задати опцію компілятора -lcurses або -lncurses, у вигляді
gcc -lncurses prog.c
Ініціалізація
ред.Перш ніж використовувати будь-які інші процедури, необхідно здійснити виклик процедури initscr().
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();
}
Посилання
ред.- Офіційна домашня сторінка [Архівовано 11 квітня 2011 у Wayback Machine.]
- Ncurses Programming Guide [Архівовано 10 лютого 2015 у Wayback Machine.] від X. Li
- NCURSES — Frequently Asked Questions (FAQ) [Архівовано 21 серпня 2018 у Wayback Machine.] від Thomas Dickey
Примітки
ред.- ↑ NCURSES — Licensing. Архів оригіналу за 2 серпня 2013. Процитовано 9 липня 2013.
- ↑ Eric S. Raymond (September 1995). ncurses: Portable Screen-Handling for Linux. Linux Journal. Архів оригіналу за 26 лютого 2012. Процитовано 29 січня 2015.