Ncurses

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук
ncurses
Linux-menuconfig.png
Меню програми menuconfig, написаної з використанням ncurses
Тип Widget toolkit
Розробник GNU Project
Перший випуск 23 жовтня 1993; 8766 днів тому
Стабільний випуск 6.0 (8 серпня 2015; 807 днів тому )
Версії 6.0[1]
Репозиторій ftp.gnu.org/gnu/ncurses/
Операційна система POSIX
Написано на C і C++
Ліцензія X11 License[2]
www.gnu.org/software/ncurses/ncurses.html

CMNS: ncurses на Вікісховищі

Ncurses (new curses) — бібліотека, яка реалізує API, що дозволяє програмісту створювати текстовий інтерфейс користувача для керуванням вводом-виводом на термінал в режимі консольного застосування. Це набір інструментів для розробки інтерфейсів, подібних до графічних програмних застосунків в режимі термінала. Вона оптимізована для роботи при зміні розмірів екрану, для зменшення затримки, яка виникає при використанні віддалених командних оболонок Unix.

Історія[ред.ред. код]

Літера N в назві ncurses походить від англійського слова new (новий). Це тому що бібліотека ncurses є безкоштовною бібліотекою, яка є послідовником (копією) бібліотеки System V Release 4.0 (SVr4) curses, яка в свою чергу була вдосконаленою бібліотекою на базі класичної 4.4 BSD curses, яка припинила своє існування.[3] Стандарт 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();
}

Посилання[ред.ред. код]

Примітки[ред.ред. код]

  1. Dickey T. ncurses-6.0 — 2015.
  2. NCURSES — Licensing. Процитовано July 9, 2013. 
  3. Eric S. Raymond (September 1995). ncurses: Portable Screen-Handling for Linux. Linux Journal.