Могу ли я легко реализовать небольшое подмножество Curses на чистом C++ (или любом подобном языке)?

(Я не смог найти ничего, связанного с этим, так как не знаю, по каким ключевым словам искать).

Мне нужна простая функция, которая печатает 3 строки, затем стирает 3 строки и заменяет новыми. Если бы это была одна строка, я мог бы просто напечатать \r или \b и перезаписать ее.

Как я могу сделать это без библиотеки Curses? Для этого должны быть какие-то escape-коды или что-то в этом роде.

Я нашел несколько escape-кодов для печати цветного текста, поэтому я предполагаю, что есть что-то похожее на перезапись предыдущих строк.

Я хочу, чтобы это работало как минимум на OSX и Ubuntu.

Изменить: я нашел это - http://www.perlmonks.org/?displaytype=displaycode;node_id=575125

Есть ли список ВСЕХ таких доступных команд?


person user1527166    schedule 09.12.2012    source источник


Ответы (1)


(Краткий ответ: Да. См. «Код перехода ANSI" в Википедии для получения полного списка кодов ANSI. Ваш терминал может быть или не быть ANSI, но поддержка последовательностей ANSI кажется довольно распространенной - по крайней мере, хорошей отправной точкой). Команды зависят от используемого вами терминала или, конечно, в наши дни от эмулятора терминала. Когда-то были физические коробки с такими названиями, как «VT-100» или «Ontel». Каждый реализовал любой набор команд управляющей последовательности, который они выбрали.

В последнее время, конечно, мы используем только эмуляторы. Почти каждый тип интерфейса командной строки работает в текстовом окне, которое эмулирует то или иное.

Curses — это библиотека, которая позволяет среднему программисту писать код для работы с терминалом, не зная, как писать код для каждого из множества различных терминалов. Вроде как драйверы принтеров позволяют печатать, не зная деталей какого-либо конкретного принтера.

Сначала вам нужно выяснить, какой тип терминала вы используете. Затем вы можете найти конкретные команды. Один из возможных ответов: здесь. "ANSI" — это обычный код, типичный для MSDOS.

Или используйте проклятия и будьте счастливы за это :-)

person joeking    schedule 09.12.2012