Escape-код ANSI

Метод, используемый для отображения параметров на видеотекстовых терминалах

ANSI X3.64 (ИСО/МЭК 6429)
Вывод системного монитора htop , приложения ncurses (которое использует SGR и другие управляющие последовательности ANSI/ISO).
Стандарт
КлассификацияУправляющий код и набор управляющих последовательностей на основе ISO/IEC 2022
Другие связанные кодировки
Другие стандарты функций управления:

Escape-последовательности ANSI являются стандартом для внутриполосной сигнализации для управления местоположением курсора, цветом, стилем шрифта и другими параметрами на видеотекстовых терминалах и эмуляторах терминалов . Определенные последовательности байтов , большинство из которых начинаются с escape -символа ASCII и символа скобки , встроены в текст. Терминал интерпретирует эти последовательности как команды, а не текст для дословного отображения.

Последовательности ANSI были введены в 1970-х годах для замены последовательностей, специфичных для поставщиков, и стали широко распространены на рынке компьютерного оборудования к началу 1980-х годов. Хотя аппаратные текстовые терминалы стали все более редкими в 21 веке, актуальность стандарта ANSI сохраняется, поскольку подавляющее большинство эмуляторов терминалов и командных консолей интерпретируют по крайней мере часть стандарта ANSI.

История

Почти все производители видеотерминалов добавляли специфичные для поставщика управляющие последовательности для выполнения таких операций, как размещение курсора в произвольных позициях на экране. Одним из примеров является терминал VT52 , который позволял размещать курсор в точке x, y на экране, отправляя ESCсимвол, Yсимвол и затем два символа, представляющих числовые значения, равные точке x, y плюс 32 (таким образом, начиная с символа пробела ASCII и избегая управляющих символов). Hazeltine 1500 имел похожую функцию, вызываемую с помощью ~, DC1а затем позиций X и Y, разделенных запятой. Хотя оба терминала имели одинаковую функциональность в этом отношении, для их вызова приходилось использовать разные управляющие последовательности.

Поскольку эти последовательности были разными для разных терминалов, пришлось создать сложные библиотеки, такие как termcap («возможности терминала») и утилиты, такие как tput , чтобы программы могли использовать один и тот же API для работы с любым терминалом. Кроме того, многие из этих терминалов требовали отправки чисел (таких как строка и столбец) в качестве двоичных значений символов; для некоторых языков программирования и для систем, которые не использовали ASCII внутри, часто было сложно преобразовать число в правильный символ.

Стандарт ANSI пытался решить эти проблемы, создав набор команд, который будут использовать все терминалы, и требуя, чтобы вся числовая информация передавалась как числа ASCII. Первым стандартом в серии был ECMA-48, принятый в 1976 году. [1] Он был продолжением серии стандартов кодирования символов, первым из которых был ECMA-6 от 1965 года, 7-битный стандарт, из которого произошел ISO 646. Название «последовательность управления ANSI» датируется 1979 годом, когда ANSI принял ANSI X3.64. Комитет ANSI X3L2 сотрудничал с комитетом ECMA TC 1 для разработки почти идентичных стандартов. Эти два стандарта были объединены в международный стандарт ISO 6429. [1] В 1994 году ANSI отозвал свой стандарт в пользу международного стандарта.

Терминал DEC VT100
Видеотерминал DEC VT100.

Первым популярным видеотерминалом, поддерживающим эти последовательности, был Digital VT100 , представленный в 1978 году. [2] Эта модель была очень успешной на рынке, что вызвало появление множества клонов VT100, среди самых ранних и популярных из которых был гораздо более доступный Zenith Z-19 в 1979 году. [3] Другие включали Qume QVT-108, Televideo TVI-970, Wyse WY-99GT, а также дополнительные режимы «VT100» или «VT103» ​​или «ANSI» с различной степенью совместимости на многих других брендах. Их популярность постепенно привела к появлению все большего количества программного обеспечения (особенно систем досок объявлений и других онлайн-сервисов ), предполагающего, что управляющие последовательности работают, что привело к тому, что почти все новые терминалы и программы-эмуляторы поддерживали их.

В 1981 году ANSI X3.64 был принят для использования в правительстве США публикацией FIPS 86. Позднее правительство США прекратило дублирование отраслевых стандартов, поэтому публикация FIPS 86 была отозвана. [4]

ECMA-48 обновлялся несколько раз и в настоящее время находится в пятом издании, выпущенном в 1991 году. Он также принят ISO и IEC в качестве стандарта ISO/IEC 6429. [ 5] Одна из версий принята в качестве японского промышленного стандарта под названием JIS X 0211 .

Связанные стандарты включают ITU T.61 , стандарт Teletex , и ISO/IEC 8613 , стандарт Open Document Architecture (в основном ISO/IEC 8613-6 или ITU T.416). Эти две системы разделяют много кодов escape с системой ANSI, с расширениями, которые не обязательно имеют смысл для компьютерных терминалов. Обе системы быстро вышли из употребления, но ECMA-48 отмечает используемые в них расширения как зарезервированные.

Поддержка платформы

Эмулятор терминала Xterm
Эмулятор терминала Xterm.

В начале 1980-х годов большое количество программного обеспечения напрямую использовало эти последовательности для обновления экранных дисплеев. Это включало все на VMS (что предполагало терминалы DEC), большую часть программного обеспечения, разработанного для переносимости на домашние компьютеры CP/M , и даже много программного обеспечения Unix, поскольку его было проще использовать, чем библиотеки termcap, например, примеры сценариев оболочки ниже в этой статье.

Терминальные эмуляторы для связи с удаленными машинами почти всегда реализуют escape-коды ANSI. Это включает в себя все, что написано для связи с системами досок объявлений на домашних и персональных компьютерах. В Unix терминальные эмуляторы, такие как xterm, также могут взаимодействовать с программным обеспечением, работающим на той же машине, и, таким образом, программное обеспечение, работающее в X11 под терминальным эмулятором, может предполагать возможность записи этих последовательностей.

По мере того, как компьютеры становились мощнее, их стали поддерживать даже встроенные дисплеи, что позволило переносить программное обеспечение между системами CP/M. Были попытки расширить escape-последовательности для поддержки принтеров [6] и как раннего формата хранения документов, похожего на PDF, Open Document Architecture . [ необходима цитата ]

ДОС и Windows

IBM PC, представленный в 1983 году, не поддерживал эти или какие-либо другие escape-последовательности для обновления экрана. Только несколько управляющих символов ( BEL , CR , LF , BS ) интерпретировались базовым BIOS. Любые эффекты отображения приходилось делать с помощью вызовов BIOS, которые были печально известны своей медлительностью, или путем прямого манипулирования оборудованием IBM PC. Это делало любое интересное программное обеспечение непереносимым и приводило к необходимости дублировать детали оборудования дисплея в PC Clones .

DOS версии 2.0 включала дополнительный драйвер устройства под названием ANSI.SYS . Низкая производительность и тот факт, что он не устанавливался по умолчанию, означали, что программное обеспечение редко (если вообще когда-либо) использовало его.

Консоль Windows не поддерживала escape-последовательности ANSI, и Microsoft не предоставила никакого метода для их включения. Некоторые замены, такие как TCC (ранее 4NT) от JP Software, ANSI.COM от Michael J. Mefford, ANSICON [7] от Jason Hood и ConEmu от Maximus5, включали escape-последовательности ANSI. Программное обеспечение, такое как пакет Python colorama [8] или Cygwin, изменяло текст в процессе его отправки на консоль, извлекая escape-последовательности ANSI и эмулируя их вызовами Windows.

В 2016 году Microsoft выпустила обновление Windows 10 версии 1511 , в котором неожиданно реализована поддержка escape-последовательностей ANSI, спустя более чем три десятилетия после дебюта Windows. [9] Это было сделано вместе с подсистемой Windows для Linux , по-видимому, чтобы позволить терминальному программному обеспечению на основе Unix использовать консоль Windows. Windows PowerShell 5.1 включила это по умолчанию, а PowerShell 6 позволила встроить необходимый символ ESC в строку с помощью `e. [10]

Windows Terminal , представленный в 2019 году, поддерживает последовательности по умолчанию, и Microsoft намерена заменить Windows Console на Windows Terminal. [11]

Коды управления C0

Почти все пользователи предполагают некоторые функции некоторых однобайтовых символов. Первоначально определенный как часть ASCII, набор управляющих кодов C0 по умолчанию теперь определен в ISO 6429 (ECMA-48), что делает его частью того же стандарта, что и набор C1, вызываемый escape-последовательностями ANSI (хотя ISO 2022 позволяет использовать набор ISO 6429 C0 без набора ISO 6429 C1, и наоборот , при условии, что 0x1B всегда является ESC). Это используется для сокращения объема передаваемых данных или для выполнения некоторых функций, которые недоступны из escape-последовательностей:

Популярные коды управления C0 (список неполный)
^С0Сокращ.ИмяЭффект
0x07БЕЛБеллИздает слышимый шум.
0x08БСВозврат на одну позициюПеремещает курсор влево (но может «переноситься назад», если курсор находится в начале строки).
0x09ХТВкладкаПеремещает курсор вправо на следующую позицию табуляции.
^J0x0AЛФПеревод строкиПереход на следующую строку, прокручивает дисплей вверх, если находится внизу экрана. Обычно не перемещается горизонтально, хотя программы не должны полагаться на это.
0x0CФФФорма подачиПереместить принтер в начало следующей страницы. Обычно не перемещается горизонтально, хотя программы не должны полагаться на это. Эффект на видеотерминалах разный.
0x0DCRВозврат кареткиПеремещает курсор в нулевой столбец.
^[0x1БЕСКПобегЗапускает все последовательности выхода из положения

Escape-последовательности различаются по длине. Общий формат для escape-последовательности, соответствующей ANSI, определен в ANSI X3.41 (эквивалент ECMA-35 или ISO/IEC 2022). [12] : 13.1  Escape-последовательности состоят только из байтов в диапазоне 0x20—0x7F (все неуправляющие символы ASCII) и могут быть проанализированы без просмотра вперед. Поведение, когда управляющий символ, байт с установленным старшим битом или байт, который не является частью какой-либо допустимой последовательности, встречается до конца, не определено.

Последовательности выхода Fe

Если за ESC следует байт в диапазоне от 0x40 до 0x5F, то escape-последовательность имеет тип Fe. Ее интерпретация делегируется применимому стандарту управляющего кода C1 . [12] : 13.2.1  Соответственно, все escape-последовательности, соответствующие управляющим кодам C1 из ANSI X3.64 / ECMA-48, следуют этому формату. [5] : 5.3.a 

Стандарт гласит, что в 8-битных средах функции управления, соответствующие управляющим Feпоследовательностям типа (из набора управляющих кодов C1 ), могут быть представлены в виде отдельных байтов в диапазоне 0x80–0x9F. [5] : 5.3.b  Это возможно в кодировках символов, соответствующих положениям для 8-битного кода, созданного в ISO 2022, например, серии ISO 8859. Однако в кодировках символов, используемых на современных устройствах, таких как UTF-8 или CP-1252 , эти коды часто используются для других целей, поэтому обычно используется только 2-байтовая последовательность. В случае UTF-8 представление управляющего кода C1 через блок C1 Controls и Latin-1 Supplement приводит к другому двухбайтовому коду (например, 0xC2,0x8E для U+008E ), но таким образом не экономится место.

Некоторые управляющие последовательности ANSI типа Fe (элемент набора C1) (неполный список)
КодС1Сокращ.ИмяЭффект
ESC Н0x8EСС2Одна смена дваВыберите один символ из одного из альтернативных наборов символов . SS2 выбирает набор символов G2, а SS3 выбирает набор символов G3. [13] В 7-битной среде за этим следует один или несколько байтов GL (0x20–0x7F), указывающих символ из этого набора. [12] : 9.4  В 8-битной среде вместо этого могут быть байты GR (0xA0–0xFF). [12] : 8.4 
ESC О0x8FСС3Одна смена три
ESC-P0x90ДКССтрока управления устройствомПрекращено ST. [5] : 5.6  Использование этой последовательности Xterm включает определение пользовательских ключей и запрос или установку данных Termcap/Terminfo. [13]
ESC [0x9БCSIВводчик контрольной последовательностиНачинает большинство полезных последовательностей, завершается байтом в диапазоне от 0x40 до 0x7E. [5] : 5.4 
ESC \0x9CСТТерминатор строкиЗавершает строки в других элементах управления. [5] : 8.3.143 
ESC]0x9DОСККоманда операционной системыЗапускает управляющую строку для использования операционной системой, завершается ST. [5] : 8.3.89 
ESC-X0x98СОСНачало строкиПринимает аргумент строки текста, завершаемый ST. [5] : 5.6  Использование этих последовательностей управления строками определяется приложением [5] : 8.3.2, 8.3.128  или дисциплиной конфиденциальности. [5] : 8.3.94  Эти функции редко реализуются, а аргументы игнорируются xterm. [13] Некоторые клиенты Kermit позволяют серверу автоматически выполнять команды Kermit на клиенте, встраивая их в последовательности APC; это потенциальный риск безопасности, если сервер не является доверенным. [14]
ESC^0x9Eпремьер-министрСообщение о конфиденциальности
ESC_0x9FБТРКоманда прикладной программы

Команды ведущего устройства последовательности управления

Для команд Control Sequence Introducer, или CSI, за ESC [(записанной как \e[или \033[на нескольких языках программирования) следует любое количество (включая отсутствие) «байтов параметров» в диапазоне 0x30–0x3F (ASCII 0–9:;<=>?), затем любое количество «промежуточных байтов» в диапазоне 0x20–0x2F (ASCII пробел и !"#$%&'()*+,-./), затем, наконец, один «заключительный байт» в диапазоне 0x40–0x7E (ASCII @A–Z[\]^_`a–z{|}~). [5] : 5.4 

Все общие последовательности просто используют параметры как ряд чисел, разделенных точкой с запятой, например 1;2;3. [5] : 5.4.2  Отсутствующие числа обрабатываются как 0( 1;;3действует как среднее число 0, а отсутствие параметров вообще ESC[mдействует как 0код сброса). Некоторые последовательности (например, CUU) обрабатывают 0как 1, чтобы сделать отсутствующие параметры полезными. [5] : F.4.2 

Подмножество договоренностей было объявлено «частным», чтобы производители терминалов могли вставлять свои собственные последовательности, не конфликтуя со стандартом. Последовательности, содержащие байты параметров <=>?или конечные байты 0x70–0x7E ( p–z{|}~), являются частными.

Поведение терминала не определено в случае, если последовательность CSI содержит любой символ вне диапазона 0x20–0x7E. Эти недопустимые символы являются либо управляющими символами C0 (диапазон 0–0x1F), DEL (0x7F), либо байтами с установленным старшим битом. Возможные ответы: игнорировать байт, обрабатывать его немедленно и, кроме того, продолжать ли последовательность CSI, немедленно прервать ее или игнорировать ее остальную часть. [ необходима цитата ]

Некоторые управляющие последовательности ANSI (список неполный)
КодСокращ.ИмяЭффект
CSI n AКУУКурсор вверхПеремещает курсор на n (по умолчанию 1) ячеек в указанном направлении. Если курсор уже находится на краю экрана, это не имеет никакого эффекта.
CSI n BКУДКурсор вниз
CSI n CКУФКурсор вперед
CSI n DКУБКурсор Назад
CSI n ECNLКурсор на следующую строкуПеремещает курсор в начало строки на n (по умолчанию 1) строк вниз. (не ANSI.SYS )
CSI n FCPLКурсор Предыдущая строкаПеремещает курсор в начало строки на n (по умолчанию 1) строк вверх. (не ANSI.SYS )
CSI n GЦДХКурсор горизонтальный абсолютныйПеремещает курсор в столбец n (по умолчанию 1). (не ANSI.SYS )
CSI  n  ;  м  HЧАШКАПозиция курсораПеремещает курсор в строку n , столбец m . Значения отсчитываются от 1 и по умолчанию 1(верхний левый угол), если пропущено. Последовательность, такая как CSI ;5Hявляется синонимом для , CSI 1;5Hа также CSI 17;Hто же самое, что CSI 17HиCSI 17;1H
CSI n JЭДСтереть на дисплееОчищает часть экрана. Если n равно 0(или отсутствует), очищает от курсора до конца экрана. Если n равно 1, очищает от курсора до начала экрана. Если n равно 2, очищает весь экран (и перемещает курсор в верхний левый угол в DOS ANSI.SYS ). Если n равно 3, очищает весь экран и удаляет все строки, сохраненные в буфере прокрутки (эта функция была добавлена ​​для xterm и поддерживается другими терминальными приложениями).
CSI n KЭЛСтереть в строкеСтирает часть строки. Если n равно 0(или отсутствует), очистить от курсора до конца строки. Если n равно 1, очистить от курсора до начала строки. Если n равно 2, очистить всю строку. Положение курсора не меняется.
CSI n SСУПрокрутить вверхПрокрутить всю страницу вверх на n (по умолчанию 1) строк. Новые строки добавляются внизу. (не ANSI.SYS )
CSI n TСДПрокрутить внизПрокрутить всю страницу вниз на n (по умолчанию 1) строк. Новые строки добавляются вверху. (не ANSI.SYS )
CSI н  ; м жХВПГоризонтальное Вертикальное ПоложениеТо же, что и CUP, но считается функцией эффектора формата (как CR или LF ), а не функцией редактора (как CUD или CNL). Это может привести к различной обработке в определенных режимах терминала. [5] : Приложение A 
CSI н мСГРВыберите графическое представлениеУстанавливает цвета и стиль символов, следующих за этим кодом
CSI 5iПорт AUX включенВключить дополнительный последовательный порт обычно для локального последовательного принтера
Место преступления 4iПорт AUX выключенОтключите дополнительный последовательный порт, как правило, для локального последовательного принтера.

CSI 6нДСРОтчет о состоянии устройстваСообщает положение курсора (CPR) путем передачи ESC[n;mR, где n — строка, а m — столбец.
Некоторые популярные частные последовательности
КодСокращ.ИмяЭффект
CSI сSCP, SCOSCСохранить текущую позицию курсораСохраняет позицию/состояние курсора в режиме консоли SCO. [15] В режиме вертикального разделения экрана вместо этого используется для установки (как ) или сброса левого и правого полей. [16]CSI n ; n s
CSI уРКП, СКОРКВосстановить сохраненную позицию курсораВосстанавливает позицию/состояние курсора в режиме консоли SCO. [17]
CSI ? 25 ч.ДЕКТСЕМПоказывает курсор из VT220 .
CSI ? 25 лДЕКТСЕМСкрывает курсор.
CSI ? 1004 чВключить фокус отчета. Сообщает, когда эмулятор терминала входит или выходит из фокуса как ESC [Iи ESC [O, соответственно.
CSI ? 1004 лОтключить фокусировку отчетов.
CSI ? 1049 ч.Включить альтернативный буфер экрана из xterm
CSI ? 1049 лОтключить альтернативный буфер экрана из xterm
CSI ? 2004 чВключите режим вставки в скобках. [18] В режиме вставки в скобках текст, вставленный в терминал, будет заключен в скобки ESC [200~и ESC [201~; программы, работающие в терминале, не должны обрабатывать символы, заключенные в скобки этих последовательностей, как команды ( например, Vim не обрабатывает их как команды). [19] Из xterm [20]
CSI ? 2004 лОтключите режим вставки в скобках.

Выберите параметры графической визуализации

Управляющая последовательность , называемая Select Graphic Rendition (SGR), устанавливает атрибуты отображения. Несколько атрибутов могут быть установлены в одной и той же последовательности, разделенные точкой с запятой. [21] Каждый атрибут отображения остается в силе до тех пор, пока следующее появление SGR не сбросит его. [5] Если коды не указаны, рассматривается как (сброс / нормальный).CSI n mCSI mCSI 0 m

нИмяПримечание
0Сброс или нормальныйВсе атрибуты отключаются
1Жирный или повышенной интенсивностиКак и в случае с обмороком, изменение цвета является изобретением ПК (SCO/ CGA ). [22] [ необходим лучший источник ]
2Слабый, сниженной интенсивности или тусклыйМожет быть реализован как легкий шрифт, например, жирный. [23]
3КурсивНе поддерживается широко. Иногда рассматривается как инверсия или мигание. [22]
4ПодчеркнутьРасширения стилей существуют для Kitty, VTE, mintty, iTerm2 и Konsole. [24] [25] [26]
5Медленное морганиеУстанавливает частоту мигания менее 150 раз в минуту
6Быстрое морганиеMS-DOS ANSI.SYS, 150+ в минуту; не поддерживается широко
7Обратное видео или инвертированиеПоменять местами цвета переднего плана и фона; непоследовательная эмуляция [27] [ сомнительнообсудить ]
8Скрыть или спрятатьШирокой поддержки не получил.
9Зачеркнутый или зачеркнутый​Символы читаемы, но помечены как подлежащие удалению. Не поддерживается в Terminal.app.
10Основной (по умолчанию) шрифт
11–19Альтернативный шрифтВыбрать альтернативный шрифт n − 10
20Фрактур (готика)Редко поддерживается
21Подчеркнуто дважды; или: не жирный шрифтДвойное подчеркивание согласно ECMA-48, [5] : 8.3.117  , но вместо этого отключает интенсивность жирного шрифта на нескольких терминалах, включая консоль ядра Linux до версии 4.17. [28]
22Нормальная интенсивностьНи яркий, ни тусклый; цвет меняется там, где интенсивность реализована соответствующим образом.
23Ни курсив, ни старопечатный шрифт
24Не подчеркнутоНи одинарный, ни двойной подчёркивания
25Не мигаетВыключить мигание
26Пропорциональный интервалITU T.61 и T.416, не известны для использования на терминалах
27Не отменено
28РаскрыватьНе скрыто
29Не зачеркнуто
30–37Установить цвет переднего плана
38Установить цвет переднего планаСледующие аргументы: 5;n или 2;r;g;b
39Цвет переднего плана по умолчаниюРеализация определена (согласно стандарту)
40–47Установить цвет фона
48Установить цвет фонаСледующие аргументы: 5;n или 2;r;g;b
49Цвет фона по умолчаниюРеализация определена (согласно стандарту)
50Отключить пропорциональный интервалТ.61 и Т.416
51В рамкеРеализовано как « селектор вариаций эмодзи » в mintty. [29]
52Окруженный
53ПеречеркнутыйНе поддерживается в Terminal.app
54Ни в рамке, ни в кружке
55Не перечеркнутый
58Установить цвет подчеркиванияНе входит в стандарт; реализовано в Kitty, VTE, mintty и iTerm2. [24] [25] Следующие аргументы — 5;n или 2;r;g;b.
59Цвет подчеркивания по умолчаниюНе входит в стандартную комплектацию; реализовано в Kitty, VTE, mintty и iTerm2. [24] [25]
60Подчеркивание идеограммы или правая боковая чертаРедко поддерживается
61Идеограмма с двойным подчеркиванием или двойной линией с правой стороны
62Идеограмма сверху или слева
63Идеограмма с двойной чертой сверху или двойной чертой слева
64Идеограмма для обозначения ударения
65Нет атрибутов идеограммыСбросить эффекты всех 6064
73Надстрочный индексРеализовано только в mintty [29]
74Подстрочный индекс
75Ни надстрочный, ни подстрочный индекс
90–97Установить яркий цвет переднего планаНе входит в стандарт; изначально реализовано aixterm [13]
100–107Установить яркий цвет фона

Цвета

3-битный и 4-битный

В исходной спецификации было всего 8 цветов, и им просто давали названия. Параметры SGR 30–37 выбирали цвет переднего плана, а 40–47 — фон. Довольно много терминалов реализовали «жирный» (код SGR 1) как более яркий цвет, а не другой шрифт, таким образом предоставляя 8 дополнительных цветов переднего плана. Обычно вы не могли получить их в качестве цветов фона, хотя иногда инверсное видео (код SGR 7) позволяло это. Примеры: чтобы получить черные буквы на белом фоне ESC[30;47m, используйте , чтобы получить красный, используйте ESC[31m, чтобы получить ярко-красный, используйте ESC[1;31m. Чтобы сбросить цвета до значений по умолчанию, используйте ESC[39;49m(не поддерживается на некоторых терминалах) или сбросить все атрибуты с помощью ESC[0m. Более поздние терминалы добавили возможность напрямую указывать «яркие» цвета с помощью 90–97 и 100–107.

На приведенной ниже диаграмме показано несколько примеров того, как стандартные и современные эмуляторы терминала VGA преобразуют 4-битные цветовые коды в 24-битные цветовые коды.

ФГБГИмяVGA [а]
Консоль Windows XP
[б]
Windows
PowerShell&
1.0–6.0
[c]
Код Visual Studio [d]
Консоль Windows 10
[e]
Терминал.приложениеШпатлевкаmIRCxtermУбунту [ф]Терминал Eclipse
3040Черный0, 0, 012, 12, 120, 0, 01, 1, 10, 0, 0
3141Красный170, 0, 0128, 0, 0205, 49, 49197, 15, 31153, 0, 0187, 0, 0127, 0, 0205, 0, 0222, 56, 43205, 0, 0
3242Зеленый0, 170, 00, 128, 013, 188, 12119, 161, 140, 166, 00, 187, 00, 147, 00, 205, 057, 181, 740, 205, 0
3343Желтый170, 85, 0 [г]128, 128, 0238, 237, 240229, 229, 16193, 156, 0153, 153, 0187, 187, 0252, 127, 0205, 205, 0255, 199, 6205, 205, 0
3444Синий0, 0, 1700, 0, 12836, 114, 2000, 55, 2180, 0, 1780, 0, 1870, 0, 1270, 0, 238 [32]0, 111, 1840, 0, 238
3545пурпурный170, 0, 170128, 0, 1281, 36, 86188, 63, 188136, 23, 152178, 0, 178187, 0, 187156, 0, 156205, 0, 205118, 38, 113205, 0, 205
3646Голубой0, 170, 1700, 128, 12817, 168, 20558, 150, 2210, 166, 1780, 187, 1870, 147, 1470, 205, 20544, 181, 2330, 205, 205
3747Белый170, 170, 170192, 192, 192229, 229, 229204, 204, 204191, 191, 191187, 187, 187210, 210, 210229, 229, 229204, 204, 204229, 229, 229
90100Яркий черный (серый)85, 85, 85128, 128, 128102, 102, 102118, 118, 118102, 102, 10285, 85, 85127, 127, 127127, 127, 127128, 128, 1280, 0, 0
91101Ярко-красный255, 85, 85255, 0, 0241, 76, 76231, 72, 86230, 0, 0255, 85, 85255, 0, 0
92102Ярко-зеленый85, 255, 850, 255, 035, 209, 13922, 198, 120, 217, 085, 255, 850, 252, 00, 255, 0
93103Ярко-желтый255, 255, 85255, 255, 0245, 245, 67249, 241, 165230, 230, 0255, 255, 85255, 255, 0
94104Ярко-синий85, 85, 2550, 0, 25559, 142, 23459, 120, 2550, 0, 25585, 85, 2550, 0, 25292, 92, 255 [33]0, 0, 25592, 92, 255
95105Яркий пурпурный255, 85, 255255, 0, 255214, 112, 214180, 0, 158230, 0, 230255, 85, 255255, 0, 255
96106Яркий голубой85, 255, 2550, 255, 25541, 184, 21997, 214, 2140, 230, 23085, 255, 2550, 255, 255
97107Яркий Белый255, 255, 255229, 229, 229242, 242, 242230, 230, 230255, 255, 255

8-битный

Поскольку таблицы поиска на 256 цветов стали обычным явлением на графических картах, были добавлены управляющие последовательности для выбора из предопределенного набора из 256 цветов: [ необходима ссылка ]

ESC[38;5; ⟨n⟩ m Выберите цвет переднего плана, где n — число из таблицы ниже.ESC[48;5; ⟨n⟩ m Выберите цвет фона 0- 7: стандартные цвета (как в ESC [ 30–37 м) 8- 15: цвета высокой интенсивности (как в ESC [ 90–97 м) 16-231: куб 6 × 6 × 6 (216 цветов): 16 + 36 × r + 6 × g + b (0 ≤ r, g, b ≤ 5)232-255: оттенки серого от темного до светлого за 24 шага

В документе МСЭ T.416 « Информационные технологии — Открытая архитектура документов (ODA) и формат обмена: Архитектуры символьного контента» [34] в качестве разделительных символов используются «:»:

ESC[38:5: ⟨n⟩ m Выберите цвет переднего плана, где n — число из таблицы ниже.ESC[48:5: ⟨n⟩ m Выберите цвет фона

256-цветный режим — передний план: ESC[38;5;#m фон: ESC[48;5;#m
Стандартные цветаЯркие цвета
 0  1  2  3  4  5  6  7  8  9 101112131415
216 цветов
161718192021222324252627282930313233343536373839404142434445464748495051
525354555657585960616263646566676869707172737475767778798081828384858687
888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231
Цвета в оттенках серого
232233234235236237238239240241242243244245246247248249250251252253254255

Также существовала похожая, но несовместимая 88-цветная кодировка с использованием той же escape-последовательности, которая была замечена в rxvtи xterm-88color. О схеме мало что известно, кроме цветовых кодов. Она использует цветовой куб 4×4×4.

24-битный

Поскольку графические карты "true color" с 16-24 битами цвета стали обычным явлением, приложения начали поддерживать 24-битные цвета. Эмуляторы терминалов, поддерживающие установку 24-битных цветов переднего плана и фона с помощью escape-последовательностей, включают Xterm, [13] Konsole от KDE , [35] [36] и iTerm, а также все терминалы на основе libvte, [37] включая GNOME Terminal . [38]

ESC[38;2; ⟨r⟩ ; ⟨g⟩ ; ⟨b⟩ m Выбор цвета переднего плана RGBESC[48;2; ⟨r⟩ ; ⟨g⟩ ; ⟨b⟩ m Выбор цвета фона RGB

Синтаксис, скорее всего, основан на открытой архитектуре документов (ODA) T.416 МСЭ и формате обмена: архитектуры символьного контента, [34] который был принят как ISO/IEC 8613-6, но в конечном итоге оказался коммерчески неудачным. [ необходима цитата ] Версия ODA более сложная и, следовательно, несовместимая:

  • Параметры после «2» (r, g и b) являются необязательными и могут быть оставлены пустыми.
  • Точки с запятой заменяются двоеточиями, как указано выше.
  • Есть ведущий «ID цветового пространства». [13] Определение идентификатора цветового пространства не включено в эту спецификацию, поэтому оно может быть пустым, чтобы представлять неуказанное значение по умолчанию. Для цветовых спецификаций CMYK mintty интерпретирует параметр идентификатора цветового пространства как указание максимального значения, из которого выводятся значения каналов (например, 100 или 255). [29]
  • В дополнение к значению «2» после 48 для указания формата «красный-зеленый-синий» (и «5» выше для индексированного цвета 0-255), существуют альтернативы «0» для определяемого реализацией и «1» для прозрачного — ни один из которых не имеет дополнительных параметров; «3» указывает цвета, использующие схему «голубой-пурпурный-желтый», а «4» — схему «голубой-пурпурный-желтый-черный», причем последний использует позицию, отмеченную как «неиспользуемая» для компонента «черный»: [34]
ESC[38:2: ⟨Color-Space-ID⟩ : ⟨r⟩ : ⟨g⟩ : ⟨b⟩ : ⟨unused⟩ : CS допуск : ⟨Color-Space, связанный с допуском: 0 для "CIELUV"; 1 для "CIELAB"⟩ m Выбор цвета переднего плана RGBESC[48:2: ⟨Color-Space-ID⟩ : ⟨r⟩ : ⟨g⟩ : ⟨b⟩ : ⟨unused⟩ : ⟨CS-допуск⟩ : ⟨Color-Space, связанный с допуском: 0 для "CIELUV"; 1 для "CIELAB"⟩ m Выберите цвет фона RGB

Вариант ITU-RGB поддерживается xterm, при этом параметры идентификатора цветового пространства и допуска игнорируются. Более простая схема с использованием точек с запятой изначально находится в Konsole. [13] : Могу ли я задать цвет по его номеру? 

Переменные среды Unix, относящиеся к поддержке цвета

Вместо того, чтобы использовать поддержку цвета в termcap и terminfo, представленную в SVr3.2 (1987), [39] библиотека S-Lang (версия 0.99-32, июнь 1996) использовала отдельную переменную среды $COLORTERMдля указания того, может ли эмулятор терминала вообще использовать цвета, а позже добавила значения для указания того, поддерживает ли он 24-битный цвет. [40] [41] Эта система, хотя и плохо документированная, стала достаточно распространенной, чтобы Fedora и RHEL могли рассмотреть возможность ее использования в качестве более простого и универсального механизма обнаружения по сравнению с запросом обновленных библиотек. [42]

Некоторые эмуляторы терминала (urxvt, konsole) настроены $COLORFGBGна сообщение цветовой схемы терминала (в основном светлый или темный фон). Это поведение возникло в S-Lang [41] и используется vim. Gnome-terminal отказывается добавлять это поведение, поскольку синтаксис для значения не согласован, значение не может быть изменено при изменении палитры во время выполнения, и более «правильные» последовательности xterm OSC 4/10/11 уже существуют. [43]

Последовательности команд операционной системы

Большинство последовательностей команд операционной системы были определены Xterm, но многие из них также поддерживаются другими эмуляторами терминала. По историческим причинам Xterm может заканчивать команду как BEL(0x07), так и стандартными ST(0x9C или 0x1B 0x5C). [13] Например, Xterm позволяет задать заголовок окна с помощью ESC ]0;this is the window title BEL.

Расширение, не относящееся к xterm, — это гиперссылка, ESC ]8;;link STс 2017 года используемая VTE, [44] [ обсудить ] iTerm2, [44] и mintty, [45] среди прочих. [46]

Консоль Linux использует ESC ] P n rr gg bbдля изменения палитры, которая, если жестко закодирована в приложении, может повесить другие терминалы. [47] Однако добавление STбудет проигнорировано Linux и сформирует правильную, игнорируемую последовательность для других терминалов. [ необходима цитата ]

Fs Escape-последовательности

Если ESCза следует байт в диапазоне 0x60—0x7E , то escape-последовательность имеет тип . Этот тип используется для функций управления, индивидуально зарегистрированных в реестре ISO-IR . [48] Таблица этих функций приведена в ISO/IEC 2022 .Fs

Fp Escape-последовательности

Если ESCза следует байт в диапазоне 0x30—0x3F , то escape-последовательность имеет тип , который выделен для шестнадцати функций управления частного использования. [12] : 6.5.3 Fp

Некоторые управляющие последовательности типа Fp (для личного пользования), распознаваемые VT100
Сокращ.ИмяЭффект
ЭСК 7DECSCDEC Сохранить курсорСохраняет позицию курсора, состояние сдвига кодировки и атрибуты форматирования. [49] [13]
ЭСК 8ДЕКРЦКурсор восстановления DECВосстанавливает позицию курсора, состояние сдвига кодировки и атрибуты форматирования из предыдущего DECSC, если таковые имеются, в противном случае сбрасывает все эти параметры до значений по умолчанию. [49] [13]

nF Последовательности выхода

Если ESCза следует байт в диапазоне 0x20—0x2F , то escape-последовательность имеет тип . За указанным байтом следует любое количество дополнительных байтов в этом диапазоне, а затем байт в диапазоне 0x30-0x7E . Эти escape-последовательности далее подразделяются по младшим двум битам первого байта, например, «type » для последовательностей, где первый байт равен 0x22 ; и по тому, находится ли последний байт в диапазоне 0x30—0x3F, указывая на частное использование (например, «type ») или нет (например, «type »). [12] : 13.2.1 nF2F2Fp2Ft

Большинство nFtпоследовательностей предназначены для изменения текущего набора символов и перечислены в ISO/IEC 2022. Некоторые другие:

Некоторые управляющие последовательности ANSI типа 0Ft (объявление) [13] [12] : 15.2 
Сокращ.ИмяЭффект
ESC SP F
  • ACS6
  • S7C1T
  • Анонсировать структуру кода 6
  • Отправить 7-битный управляющий символ C1 на хост
Заставляет функциональные клавиши отправлять ESC + букву вместо 8-битных кодов C1.
ESC SP G
  • ACS7
  • С8С1Т
  • Анонсировать структуру кода 7
  • Отправить 8-битный управляющий символ C1 на хост
Заставляет функциональные клавиши отправлять 8-битные коды C1.

Если первый байт — «#», то общедоступные последовательности зарезервированы для дополнительных зарегистрированных индивидуальных функций управления ISO-IR. [12] : 6.5.2  В настоящее время такие последовательности не зарегистрированы. [48] Типовые 3Fpпоследовательности (включая те, которые начинаются с «#») доступны для функций управления частного использования. [12] : 6.5.3 

Некоторые управляющие последовательности типа 3Fp (для личного пользования), распознаваемые VT100
Сокращ.ИмяЭффект
ЭСК № 3DECDHLБуквы DEC двойной высоты, верхняя половинаЗаставляет текущую строку использовать символы в два раза выше. Этот код для верхней половины. [50]
ЭСК № 4DECDHLБуквы DEC двойной высоты, нижняя половинаЗаставляет текущую строку использовать символы в два раза выше. Этот код для нижней половины. [50]
ЕСК № 5ДЕКСВЛЛиния DEC одинарной шириныЗаставляет текущую строку использовать символы одинарной ширины, согласно поведению по умолчанию. [51] [13]
ЭСК № 6ДЕКДВЛЛиния двойной ширины DECЗаставляет текущую строку использовать символы двойной ширины, отбрасывая любые символы во второй половине строки. [52] [13]

Примеры

CSI 2 J— Это очищает экран и на некоторых устройствах помещает курсор в позицию y,x 1,1 (верхний левый угол).

CSI 32 m— Это делает текст зеленым. Зеленый может быть темным, тусклым зеленым, поэтому вы можете включить Bold с последовательностью CSI 1 m, которая сделает его ярко-зеленым, или объединить как CSI 32 ; 1 m. Некоторые реализации используют состояние Bold, чтобы сделать символ ярким.

CSI 0 ; 6 8 ; "DIR" ; 13 p— Это переназначает клавишу F10 для отправки в буфер клавиатуры строки "DIR" и ENTER, что в командной строке DOS отобразит содержимое текущего каталога. (Только MS-DOS ANSI.SYS) Иногда это использовалось для бомб ANSI . Это код для частного использования (на что указывает буква p), использующий нестандартное расширение для включения строкового параметра. После буквы стандарта последовательность будет считаться заканчивающейся на букве D.

CSI s— Это сохраняет позицию курсора. Использование последовательности CSI uвосстановит ее в позицию. Допустим, текущая позиция курсора — 7(y) и 10(x). Последовательность CSI sсохранит эти два числа. Теперь вы можете перейти в другую позицию курсора, например, 20(y) и 3(x), используя последовательность CSI 20 ; 3 Hили CSI 20 ; 3 f. Теперь, если вы используете последовательность CSI u, позиция курсора вернется к 7(y) и 10(x). Некоторые терминалы требуют последовательности DEC ESC 7/ ESC 8вместо этого, которая поддерживается более широко.

В скриптах оболочки

Escape-коды ANSI часто используются в UNIX и UNIX-подобных терминалах для подсветки синтаксиса . Например, на совместимых терминалах следующая команда list выделяет цветом имена файлов и каталогов по типу.

ls --цвет

Пользователи могут использовать escape-коды в своих скриптах, включая их как часть стандартного вывода или стандартной ошибки . Например, следующая команда GNU sed украшает вывод команды make , отображая строки, содержащие слова, начинающиеся с «WARN», в обратном видео , а слова, начинающиеся с «ERR», ярко-желтым цветом на темно-красном фоне ( регистр букв игнорируется). Представления кодов подсвечиваются. [53]

сделать 2>&1 | sed -e 's/.*\bWARN.*/ \x1b[7m & \x1b[0m /i' -e 's/.*\bERR.*/ \x1b[93;41m & \x1b[0m /i'

Следующая функция Bash мигает на терминале (поочередно отправляя коды обратного и обычного видеорежима) до тех пор, пока пользователь не нажмет клавишу. [54]

flasher () { while true; do printf \\e[?5h \\e[?5l; sleep 0.1; printf ; read -s -n1 -t1 && break; done; }

Это можно использовать для оповещения программиста о завершении длинной команды, например, с помощью make ; flasher. [55]

printf \\ 033c 

Это приведет к сбросу консоли, аналогично команде resetв современных системах Linux; однако она должна работать даже в старых системах Linux и в других (не Linux) вариантах UNIX.

В С

Следующая программа создает таблицу чисел от 0 до 109, каждое из которых отображается в формате, указанном escape-последовательностью Select Graphic Rendition, используя это число в качестве кода графического представления.

Вывод примера программы на Gnome Terminal
#include <stdio.h> int main ( пустота ) { int i , j , n ;    для ( я = 0 ; я < 11 ; я ++ ) {         для ( j = 0 ; j < 10 ; j ++ ) {         п = 10 * я + j ;       если ( n > 108 ) перерыв ;     printf ( " \033 [%dm %3d \033 [m" , n , n );   } printf ( " \n " ); } вернуть 0 ; }

Последовательности входных сигналов терминала

Нажатие специальных клавиш на клавиатуре, а также вывод множества последовательностей xterm CSI, DCS или OSC часто приводит к созданию последовательности CSI, DCS или OSC, отправляемой с терминала на компьютер, как если бы ее ввел пользователь.

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

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

(черновик раздела)

<символ> -> символ<esc> <nochar> -> esc<esc> <esc> -> esc<esc> <char> -> Alt-нажатие клавиши или последовательность кода клавиши<esc> '[' <nochar> -> Alt-[<esc> '[' (<модификатор>) <символ> -> последовательность кода клавиши, <модификатор> — десятичное число, по умолчанию 1 (xterm)<esc> '[' (<keycode>) (';'<modifier>) '~' -> последовательность кодов клавиш, <keycode> и <modifier> являются десятичными числами и по умолчанию равны 1 (vt)

Если конечный символ — «~», то первая цифра должна присутствовать и является номером кода клавиши, вторая цифра — необязательное значение модификатора. Если конечный символ — буква, то буква является значением кода клавиши, а необязательное число — значением модификатора.

Значение модификатора по умолчанию равно 1, и после вычитания 1 получается битовая карта нажатых клавиш-модификаторов: Meta+ Ctrl+ Alt+ ⇧ Shift. Так, например, <esc>[4;2~is + , is function key , is + .⇧ ShiftEnd<esc>[20~F9<esc>[5CCtrl

Другими словами, модификатор представляет собой сумму следующих чисел:

Клавиша нажатаЧислоКомментарий
1всегда добавляется, остальные необязательны
Сдвиг1
(Слева) Альт2
Контроль4
Мета8
последовательности vt:<esc>[1~ - Домой <esc>[16~ - <esc>[31~ - F17<esc>[2~ - Вставить <esc>[17~ - F6 <esc>[32~ - F18<esc>[3~ - Удалить <esc>[18~ - F7 <esc>[33~ - F19<esc>[4~ - Конец <esc>[19~ - F8 <esc>[34~ - F20<esc>[5~ - PgUp <esc>[20~ - F9 <esc>[35~ -<esc>[6~ - PgDn <esc>[21~ - F10 <esc>[7~ - Главная <esc>[22~ - <esc>[8~ - Конец <esc>[23~ - F11 <esc>[9~ - <esc>[24~ - F12 <esc>[10~ - F0 <esc>[25~ - F13 <esc>[11~ — F1 <esc>[26~ — F14 <esc>[12~ - F2 <esc>[27~ - <esc>[13~ — F3 <esc>[28~ — F15 <esc>[14~ - F4 <esc>[29~ - F16 <esc>[15~ - F5 <esc>[30~ -последовательности xterm:<esc>[A - Вверх <esc>[K - <esc>[U -<esc>[B - Вниз <esc>[L - <esc>[V -<esc>[C - Право <esc>[M - <esc>[W -<esc>[D - Левый <esc>[N - <esc>[X -<esc>[Э - <esc>[О - <esc>[Й -<esc>[F - Конец <esc>[1P - F1 <esc>[Z -<esc>[G - Клавиатура 5 <esc>[1Q - F2 <esc>[H - Домой <esc>[1R - F3 <esc>[I - <esc>[1S - F4 <esc>[J - <esc>[T -

<esc>[Ato <esc>[Dсовпадают с выходными последовательностями ANSI. <modifier>Обычно опускается, если не нажаты клавиши-модификаторы, но большинство реализаций всегда выдают for <modifier>– . (черновик)F1F4

Xterm имеет подробную страницу документации по различным схемам последовательностей ввода функциональных клавиш и мыши из терминалов VT компании DEC и различных других терминалов, которые он эмулирует. [13] Томас Дики добавил к нему много поддержки с течением времени; [56] он также ведет список клавиш по умолчанию, используемых другими эмуляторами терминалов для сравнения. [57]

  • На консоли Linux определенные функциональные клавиши генерируют последовательности вида . Последовательность CSI должна заканчиваться на .CSI [ char[
  • Старые версии Terminator генерируют при нажатии – с модификаторами. Неправильное поведение было скопировано из GNOME Terminal . [ необходима цитата ]SS3 1; modifiers charF1F4
  • xterm отвечает, если запрашивается позиция курсора и если клавиша нажата с модификаторами, которые конфликтуют в случае . Этого можно избежать, используя частный модификатор ? как , что будет отражено в ответе как .CSI row ; column RCSI 1 ; modifiers RF3row == 1CSI ? 6 nCSI ? row ; column R
  • многие терминалы добавляются ESCк любому символу, набранному с нажатой клавишей alt. Это создает неоднозначность для заглавных букв и символов @[\]^_, которые образуют коды C1. [ необходимо разъяснение ]
  • Konsole генерирует при нажатии – с модификаторами. [ требуется разъяснение ]SS3 modifiers charF1F4
  • iTerm2 поддерживает передачу дополнительных ключей через расширенный режим CSI u. [58]

Смотрите также

Примечания

  1. ^ Типичные цвета, которые используются при загрузке ПК и выходе их в текстовый режим, который использовал 16-элементную цветовую таблицу. Цвета отличаются в графических режимах EGA/VGA.
  2. ^ Наблюдается в Windows XP — Windows 8.1.
  3. ^ Сочетание клавиш PowerShell по умолчанию .lnk , не менявшееся более десятилетия, переназначает желтый и пурпурный цвета, чтобы придать PowerShell отличительные цвета переднего плана/фона по сравнению с командной строкой. [30] PowerShell 7 не затронут.
  4. ^ Консоль отладки, тема "Dark+"
  5. ^ Тема Кэмпбелла, используется с Windows 10 версии 1709.
  6. ^ Для виртуальных терминалов из /etc/vtrgb.
  7. ^ На терминалах на базе совместимого с CGA оборудования, например ANSI.SYS, работающего в DOS, этот цвет переднего плана нормальной интенсивности отображается как оранжевый. CGA RGBI контролирует содержащееся оборудование для изменения темно-желтого цвета на оранжевый/коричневый цвет путем уменьшения зеленого компонента [31]

Ссылки

  1. ^ ab "Стандарт ECMA-48: Функции управления для устройств ввода-вывода с отображением символов" (PDF) (Второе издание). Ecma International . Август 1979. Краткая история.
  2. ^ Уильямс, Пол (2006). "Digital's Video Terminals". VT100.net . Получено 17 августа 2011 г.
  3. ^ Heathkit Company (1979). "Heathkit Catalog 1979". Heathkit Company. Архивировано из оригинала 13 января 2012 года . Получено 4 ноября 2011 года .
  4. ^ "Отмененный FIPS, перечисленный по номеру" (PDF) . Национальный институт стандартов и технологий . 15 декабря 2016 г. . Получено 2 января 2022 г. .
  5. ^ abcdefghijklmnop "Стандарт ECMA-48: Функции управления для кодированных наборов символов" (PDF) (Пятое издание). Ecma International . Июнь 1991 г.
  6. ^ "Определения команд принтера Amiga". Commodore . Получено 10 июля 2013 г.
  7. ^ Худ, Джейсон (2005). "Обработка управляющих последовательностей ANSI для консольных программ Windows". Домашняя страница Джейсона Худа . Получено 9 мая 2013 г.
  8. ^ "colorama · PyPI". Python Package Index . Получено 27 февраля 2022 г.
  9. ^ bitcrazed. "Последовательности виртуального терминала консоли - Консоль Windows". docs.microsoft.com . Получено 30 мая 2018 г. .
  10. ^ «Справка PowerShell: О специальных символах». 12 января 2023 г.
  11. ^ «Дорожная карта экосистемы консоли и терминала Windows». Microsoft. 2018. Получено 13 марта 2021 г. Это включает в себя отказ от классического пользовательского интерфейса хоста консоли с его позиции по умолчанию в пользу Windows Terminal, ConPTY и последовательностей виртуальных терминалов.
  12. ^ abcdefghi "Стандарт ECMA-35: Структура кодов символов и методы расширения" (PDF) (Шестое изд.). Ecma International . 1994.
  13. ^ abcdefghijklmn Мой, Эдвард; Джилдеа, Стивен; Дики, Томас (2019). "XTerm Control Sequences (ctlseqs)". Невидимый остров .
  14. ^ Франк да Круз; Кристин Джианоне (1997). Использование C-Kermit. Digital Press. стр. 278. ISBN 978-1-55558-164-0.
  15. ^ "SCOSC — Сохранить текущую позицию курсора". Информация о программисте видеотерминала VT510 . DEC .
  16. ^ "DECSLRM — Установить левое и правое поля". Информация о программисте видеотерминала VT510 . DEC .
  17. ^ "SCORC — Восстановление сохраненной позиции курсора". Информация о программисте видеотерминала VT510 . DEC .
  18. ^ Moy, Edward; Gildea, Stephen; Dickey, Thomas. "XTerm Control Sequences". Функции, использующие CSI, упорядоченные по последнему символу(ам) . Получено 4 февраля 2022 г.
  19. Конрад Ирвин (апрель 2013 г.). «режим вставки в скобках». cirw.in .
  20. ^ Moy, Edward; Gildea, Stephen; Dickey, Thomas. "XTerm Control Sequences". Режим вставки в скобках . Получено 4 февраля 2022 г.
  21. ^ "console_codes(4) - Страница руководства Linux". man7.org . Получено 23 марта 2018 г. .
  22. ^ ab "screen(HW)". Руководство SCO OpenServer Release 5.0.7 . 11 февраля 2003 г.
  23. ^ «Ошибка 791596 – Мысли об обмороке (SGR 2)». bugzilla.gnome.org .
  24. ^ abc "Кудрявые и цветные подчеркивания (#6382) · Проблемы · Джордж Нахман / iterm2". GitLab . 11 декабря 2017 г.
  25. ^ abc "Расширения протокола xterm". kitty documentation . Получено 1 июля 2020 г.
  26. ^ «Кудрявые и цветные подчеркивания». KDE bugtracker . 27 августа 2022 г.
  27. ^ "console-termio-realizer". jdebp.uk .
  28. ^ "console_codes(4)". Руководство программиста Linux . 5.10. Проект man-pages Linux .
  29. ^ abc "mintty/mintty: Атрибуты текста и рендеринг". GitHub .
  30. ^ "сочетание клавиш по умолчанию в Windows переназначает цвета ANSI 35,36 · Проблема № 4266 · PowerShell/PowerShell". GitHub . Получено 21 декабря 2022 г. .
  31. ^ "Настоящая палитра CGA и цветовой вывод IBM 5153". VileR. 11 июня 2022 г. Получено 18 мая 2024 г.
  32. Изменено с 0, 0, 205 в июле 2004 г. «Патч № 192 – 2004/7/12 – XFree86 4.4.99.9».
  33. Изменено с 0, 0, 255 в июле 2004 г. «Патч № 192 – 2004/7/12 – XFree86 4.4.99.9».
  34. ^ abc "T.416 Информационные технологии - Открытая архитектура документов (ODA) и формат обмена: Архитектуры символьного контента".
  35. ^ "color-spaces.pl (копия 256colors2.pl из xterm от 11.07.1999)". KDE. 6 декабря 2006 г.[ постоянная мертвая ссылка ‍ ]
  36. ^ "README.moreColors" . КДЕ. 22 апреля 2010 г.
  37. ^ "Отчет об ошибках и исправления libvte: Поддержка 16 миллионов цветов". GNOME Bugzilla. 4 апреля 2014 г. Получено 5 июня 2016 г.
  38. ^ «Как включить поддержку 24-битного истинного цвета в терминале Gnome?».
  39. ^ "История". curs_color(3X) - управление цветами терминала с помощью curses.
  40. ^ "Midnight Commander: lib/tty/color-slang.c". Фосси .
  41. ^ ab Dickey, Thomas E. (2017). "NCURSES — комментарии к S-Lang". invisible-island.net .
  42. ^ "Features/256 Color Terminals - Fedora Project Wiki". Fedora Project . Архивировано из оригинала 4 октября 2012 г.
  43. ^ «Ошибка 733423 – Установите переменную среды COLORFGBG для автоматического определения цвета». bugzilla.gnome.org .
  44. ^ ab Koblinger, Egmont. "Гиперссылки (они же HTML-подобные якоря) в эмуляторах терминала". GitHub Gists .
  45. ^ "mintty/mintty: Управляющие последовательности". GitHub .
  46. ^ Коблингер, Эгмонт. «Внедрение OSC 8 в эмуляторах терминала». GitHub .
  47. ^ "console_codes — Последовательности управления и выхода из консоли Linux". Руководство программиста Linux .
  48. ^ ab ISO-IR: Международный регистр кодированных наборов символов ISO/IEC для использования с управляющими последовательностями (PDF) . ITSCJ/ IPSJ . Получено 12 мая 2023 г. .
  49. ^ ab Digital . "DECSC—Сохранить курсор". Информация о программисте видеотерминала VT510 .
  50. ^ ab ANSI Escape sequences - VT100 / VT52, архивировано из оригинала 27 февраля 2009 г. , извлечено 21 августа 2020 г.
  51. ^ Цифровой . "DECSWL — одинарная ширина, одинарная высота линии". Информация о программисте видеотерминала VT510 .
  52. ^ Цифровой . "DECDWL — строка двойной ширины и одинарной высоты". Информация о программисте видеотерминала VT510 .
  53. ^ "Глава 9. Советы по системе". debian.org .
  54. ^ "VT100.net: Руководство пользователя цифрового VT100" . Получено 19 января 2015 г.
  55. ^ "bash – Как получить уведомление о завершении моих команд – Ask Different" . Получено 19 января 2015 г. .
  56. ^ Дики, Томас. "XTerm FAQ: Сравнение версий с помощью подсчета элементов управления". Invisible Island . Получено 25 января 2020 г.
  57. ^ Дики, Томас (2016). "Таблица функциональных клавиш для XTerm и других эмуляторов терминала". Invisible Island . Получено 25 января 2020 г.
  58. ^ "CSI u - Документация - iTerm2 - Замена терминала macOS". iTerm2 . Получено 15 августа 2023 г. .
  • Стандарт ECMA-48, Функции управления для кодированных наборов символов. ( 5-е издание, июнь 1991 г. ), Европейская ассоциация производителей компьютеров, Женева 1991 г. (также опубликован ISO и IEC как стандарт ISO/IEC 6429)
  • Документы vt100.net DEC
  • "ANSI.SYS -- escape-последовательности эмуляции терминала ANSI". Архивировано из оригинала 6 февраля 2006 г. Получено 22 февраля 2007 г.
  • Xterm / Escape-последовательности
  • AIXterm / Escape-последовательности
  • Коллекция escape-последовательностей для терминалов, которые в некоторой степени соответствуют ECMA-48 и аналогичным стандартам.
  • "ANSI Escape Sequences". Архивировано из оригинала 25 мая 2011 г.
  • Рекомендация МСЭ-Т T.416 (03/93) Информационные технологии – Открытая архитектура документов (ODA) и формат обмена: Архитектуры символьного контента
Взято с "https://en.wikipedia.org/w/index.php?title=ANSI_escape_code&oldid=1265645932#IL"