Как я могу отправить escape-последовательности терминала в режиме необработанного ввода? - PullRequest
0 голосов
/ 28 марта 2009

У меня есть программа, которая использует терминал в режиме raw, и я хочу переместить курсор. Где я могу найти escape-последовательность для этого и как отправить ее на терминал изнутри моей программы на c?

Вот что у меня сейчас есть:

char code[4];
code[0] = 27;
code[1] = 91;
code[2] = '*';
code[3] = 'D';
write(1, code, 4);

Ответы [ 3 ]

3 голосов
/ 28 марта 2009

Если вы хотите контролировать весь экран, посмотрите на библиотеку ncurses . Это простая библиотека для полноэкранных консольных программ, которая содержит среди прочего

  • Полноэкранное позиционирование текста
  • Использование полной клавиатуры, включая функциональные клавиши, вставка / удаление и т. Д.
  • Использование атрибутов для раскрашивания, выделения текста и т. Д.
1 голос
/ 28 марта 2009

Я бы посоветовал вам внимательно изучить библиотеки curses или ncurses и планировать использовать одну или другую, а не бросать свою собственную. Вам следует стремиться использовать систему описаний терминалов terminfo , а не более старую систему termcap . См. Также книги О'Рейли " Termcap и Terminfo " и мой любимый заголовок (в основном потому, что я, кажется, трачу много времени на проклятия при программировании) " Progamming With Curses ". (Однако эта книга древняя - 1986 год - и есть другие более поздние книги на ту же тему, которые, вероятно, были бы лучшим выбором; хотя я все еще люблю название.)

1 голос
/ 28 марта 2009

Вы хотите использовать termcap , чтобы получить эту информацию, поскольку она варьируется, в зависимости от того, в каком терминале находится пользователь.

...