Пользовательский интерфейс ASCII в C ++ с терминалом Unix PuTTY с использованием escape-последовательностей - PullRequest
3 голосов
/ 26 апреля 2011

Я пытаюсь создать простой пользовательский интерфейс ASCII для простой программы интернет-чата. Я планирую, чтобы это выглядело так:

(имя): сообщение
(имя): сообщение
---------------------------------------------
(вы): сообщение | (курсор)

Я собирался использовать управляющие символы ASCII (ANSI?) Для достижения этой цели.

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

Мой первоначальный план был:
1. сохранить текущую позицию курсора (\ e7)
2. переместите курсор вверх на 1 строку (к штриховой линии) и в начало этой строки (\ e [1F])
3. переместите штриховую линию вниз (\ n)
4. снова переместите курсор на одну строку вверх (на пустую строку) (\ e [1A)
5. распечатать сообщение с сервера
6. восстановить предыдущую позицию курсора (\ e8) ​​

все вместе: "\ e7 \ e [1F \ n \ e [1A" << message << "\ e8"; </p>

В чем проблема, так это то, что символ новой строки, кажется, только перемещает курсор на следующую строку, а не вставляет пустую строку. Как я могу выполнить это поведение?

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

примечание: алгоритм обработки ввода пользователя на собственном экране уже обработан правильно.

Ответы [ 3 ]

0 голосов
/ 26 апреля 2011

Серьезно подумайте об использовании библиотеки curses (см. Wikipedia для получения дополнительной информации).

0 голосов
/ 26 апреля 2011

Если вы используете bash, вы можете сделать это с помощью специальных команд, используя экранирование символов.Смотри http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x361.html

0 голосов
/ 26 апреля 2011

Посмотрите на что-то вроде pdcurses .Это кроссплатформенная.Это сделает все эти манипуляции намного проще.Вы также можете проверить проклятия в * nix и древней библиотеке conio в Windows, если не возражаете против того, чтобы ваш код не был переносимым.

...