Как я могу отправлять escape-последовательности терминала в режиме необработанного ввода?
Вопрос
У меня есть программа, которая использует терминал в необработанном режиме, и я хочу перемещать курсор.Где я могу найти escape-последовательность для этого и как я могу отправить ее на терминал из моей программы на языке C?
Вот что у меня есть на данный момент:
char code[4];
code[0] = 27;
code[1] = 91;
code[2] = '*';
code[3] = 'D';
write(1, code, 4);
Решение
Если вы хотите управлять полноэкранным режимом, вам следует посмотреть ncurses библиотека.Это простая библиотека для полноэкранных консольных программ, которая, помимо прочего, содержит
- Полноэкранное позиционирование текста
- Использование полной клавиатуры, включая функциональные клавиши, вставку/удаление и т. д.
- Использование атрибутов для раскрашивания, выделения текста и т. д.
Другие советы
Вы хотите использовать термкап чтобы получить эту информацию, поскольку она варьируется в зависимости от того, на каком терминале находится пользователь.
Я бы посоветовал вам внимательно посмотреть на проклятия или ncurses библиотеки и планируйте использовать одну или другую, а не создавать свои собственные.Вы должны стремиться использовать термининформация система описаний терминалов, а не старая термкап система.См. также книги О'Рейли»Termcap и Terminfo" и моя любимая игра (главным образом потому, что я, кажется, провожу много времени, ругаясь при программировании) "Программирование с помощью проклятий".(Однако эта книга старая — 1986 года — и есть другие, более поздние книги на ту же тему, которые, вероятно, будут лучшим выбором;Хотя название мне все равно нравится.)