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

StackOverflow https://stackoverflow.com/questions/693257

  •  22-08-2019
  •  | 
  •  

Вопрос

У меня есть программа, которая использует терминал в необработанном режиме, и я хочу перемещать курсор.Где я могу найти 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 года — и есть другие, более поздние книги на ту же тему, которые, вероятно, будут лучшим выбором;Хотя название мне все равно нравится.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top