Работа с терминалом; пример простого проекта

Терминал

Управление выводом со стороны приложения, ESC-последовательности

База информации о терминалах Terminfo

Неожиданный бонус Tektronix_4010:

Curses

NCurses — свободная (на сегодняшний день, главная) реализация Curses

Примитивный Makefile

Tab hell. Again.

Д/З

Предполагается, что на спецкурс вы записались

  1. Сделать в репозитории подкаталог, совпадающий с именем данной страницы (01_TerminalProject, и поместить в него решение следующей задачи.

  2. С помощью интернета и здравого смысла написать на ncurses программу Show.c, которая постранично просматривает файл (слишком длинные строки усекаются или переносятся — как вам удобнее).

    • Имя файла передавать параметром командной строки.
    • Файл должен показываться в окне, а в первой строке экрана должно содержаться его имя.
    • Весь файл допустимо хранить в памяти, например, одним куском или в виде списка строк.

    • При нажатии пробела файл прокручивается дальше (если есть такая возможность), при нажатии ESC программа завершается.

      • Имеет смысл очищать окно при помощи werase(), а потом всё заново на нём выводить.

    • Многобайтовую кодировку можно не поддерживать
    • Исполняемый файл должен называться Show

  3. Сделать Makefile и добиться работоспособности make (обратите внимание на использование табуляций и/или RECIPEPREFIX

  4. Не забыть опубликовать решение в репозитории!
  5. (!) Дополнительно, для тех, кому стало интересно:

    • При нажатии стрелки вправо выводить строки файла, начиная со следующей колонки (так можно посмотреть урезанные длинные строки; начала строк при этом не видны). Стрелку влево обработать так же.
    • Реализовать обработку PgUp, PgDown и стрелок вверх/вниз — прокрутка на один экран вперёд/назад, на одну строку вперёд-назад, остальные клавиши игнорировать

    • … (далее везде)

Минимальный вариант…

…А потом я сделал поддержку wide characters и цвет)

LecturesCMC/LinuxApplicationDevelopment2023/01_TerminalProject (последним исправлял пользователь FrBrGeorge 2023-09-25 16:23:38)