Вопросы последовательности команд DEC ANSI; перемещение курсора

Поэтому я пишу эмуляцию терминала (я знаю, я должен просто скомпилировать шпатлевку и т. Д.), И я нахожусь на стадии плетения через vttest, чтобы убедиться, что это правильно. Я основываю его на VT102 на данный момент, но буду добавлять более поздние функции терминала, такие как цвет, когда основы работают правильно.

Набор команд в основном ANSI. У DEC был свой собственный набор команд, но он поддерживал команды ANSI примерно с 1973. Эти стандарты ANSI, по-видимому, сейчас недоступны, но эквиваленты ECMA, я им (ECMA-48 кажется наиболее актуальным), но не отвечает на этот вопрос, насколько я можно видеть. Большинство командных последовательностей ANSI начинаются с ESC. Многие команды начинаются с идентификатора последовательности команд, показанного здесь как CSI, и представлены в данных как 0x1c 0x5b (ESC [ ), или 0xdb, если возможно 8-битное сообщение. Затем последовала последовательность, идентифицирующая команду. Некоторые команды влияют на позицию курсора, некоторые – на экране, некоторые – на хост и т. Д.

Некоторые команды терминала включают числовой аргумент. Пример CSI 10 ; 5 H CSI 10 ; 5 H означает, что позиция курсора указана в строке 10, столбце 5. Когда числовой аргумент отсутствует, используется значение по умолчанию: CSI 10 ; H CSI 10 ; H означает, что позиция позиции курсора 10, столбец 1, потому что 1 является значением по умолчанию, когда аргумент не задан.

У меня есть руководство vt102 от vt100.net (большой ресурс) и около десятка страниц, содержащих частичную информацию об этих командных последовательностях. По-видимому, полная спецификация DEC-терминала Gospel никогда не выходила из DEC.

Ясно, что CSI C перемещает курсор вправо и что значение по умолчанию равно 1.

Неясно, в чем смысл CSI 0 C

Почему там нуль, казалось бы, команда ничего не делает? Если это означает «использовать значение по умолчанию», тогда оно могло быть отправлено как 1 вместо этого, но более короткая строка не будет иметь аргументов и будет полагаться на значение по умолчанию, которое будет интерпретироваться как 1 в любом случае. Эти фактические физические терминалы VT часто использовались при 300 бодах и ниже, поэтому один персонаж имел значение!

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

2 Solutions collect form web for “Вопросы последовательности команд DEC ANSI; перемещение курсора”

Я связался с Томасом Дики (invisible-island.net), который поддерживает xterm и vttest – он объяснил, что CSI 0 C совпадает с CSI 1 C или CSI C в xterm.

Для тех, кто ищет дополнительную информацию о программировании терминала, я настоятельно рекомендую проверить источник xterm, который он размещает, – в частности, ctlseqs.txt внутри xterm, который очень похож на ту, которую я искал.

Почему совместимость жесткого кода для определенного типа терминала, когда у вас уже есть база данных, сопоставляющая функциональность с конкретными кодовыми последовательностями для множества разных терминалов? (база данных terminfo обычно находится в / usr / share и входит в большинство рассылок ncurses). Любой ресурс на проклятиях должен объяснить, как эти функции помечены.

Обратите внимание, что файлы terminfo обычно скомпилированы (с использованием tic), поэтому вам может понадобиться выкопать бит, чтобы найти исходные файлы terminfo.

См. Также http://tldp.org/HOWTO/Text-Terminal-HOWTO.html#toc16 (есть ссылка в их одном хранилище файлов terminfo.src)

  • Гармонический текст в меню tmux
  • Исключение переменных gawk для команд оболочки
  • Выделите escape-символы Vim, например \ n
  • как правильно планировать задачу, которая планирует задачу с помощью «at» (atd)? или как правильно указывать / бежать в bash
  • Горячие клавиши Ch, Cm в bash
  • Как определить текущий цвет вывода консоли?
  • Как использовать 'в псевдониме?
  • Как использовать сеанс ssh без форматирования цвета
  • Найдите комбинацию клавиш терминала OS X / escape-последовательность для Ctrl-
  • Шаблон соответствия \\\ ", используя grep
  • В SGR номер 38 и 48, откуда берутся 2 и 5 номеров?
  • Linux и Unix - лучшая ОС в мире.