~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 7827E356326299A0D04E886DE09AF4D4__1717252860 ✰
Заголовок документа оригинал.:
✰ ANSI escape code - Wikipedia ✰
Заголовок документа перевод.:
✰ Escape-код ANSI — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/Control_Sequence_Introducer ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/78/d4/7827e356326299a0d04e886de09af4d4.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/78/d4/7827e356326299a0d04e886de09af4d4__translat.html ✰
Дата и время сохранения документа:
✰ 15.06.2024 23:41:28 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 1 June 2024, at 17:41 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Escape-код ANSI — Википедия Jump to content

Escape-код ANSI

Из Википедии, бесплатной энциклопедии

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

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

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

Хотя аппаратные текстовые терминалы становятся все более редкими в 21 веке, актуальность стандарта ANSI сохраняется, поскольку подавляющее большинство эмуляторов терминала и командных консолей интерпретируют по крайней мере часть стандарта ANSI.

История [ править ]

Почти все производители видеотерминалов добавили escape-последовательности, специфичные для конкретного поставщика, для выполнения таких операций, как размещение курсора в произвольных позициях на экране. Одним из примеров является терминал 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 . Название «Escape-последовательность 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» с различной степенью совместимости со многими другими брендами. Их популярность постепенно привела к тому, что все больше и больше программного обеспечения (особенно систем досок объявлений и других онлайн-сервисов ) предполагало, что escape-последовательности работают, что привело к появлению почти всех новых терминалов и программ-эмуляторов, поддерживающих их.

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

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

Связанные стандарты включают ITU T.61 , стандарт Teletex , и ISO/IEC 8613 , стандарт архитектуры открытого документа (в основном 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 . [ нужна цитата ]

DOS и Windows [ править ]

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

DOS версии 2.0 включала дополнительную поддержку драйвера устройства с именем ANSI.SYS . Низкая производительность и тот факт, что он не был установлен по умолчанию, означали, что программное обеспечение редко им пользовалось. Некоторые другие системы пытались удовлетворить потребность в этих последовательностях, многие клоны DOS обрабатывали их без драйвера, а в OS/2 был Команда ANSI , которая включила последовательности.

Консоль Windows не поддерживала escape-последовательности ANSI, и Microsoft не предоставила никакого способа их включения. Некоторые замены или дополнения для окна консоли, такие как TCC от JP Software (ранее 4NT), ANSI.COM Майкла Дж. Меффорда, Джейсона Худа. АНСИКОН [7] от Maximus5 а ConEmu интерпретировал escape-последовательности ANSI, напечатанные программами. Пакет Python с именем colorama [8] внутренне интерпретирует escape-последовательности ANSI в печатаемом тексте, переводя их в вызовы win32 для изменения состояния терминала, чтобы упростить перенос кода Python с использованием ANSI в Windows. Cygwin выполняет аналогичный перевод для всего вывода, записываемого на консоль, с использованием файловых дескрипторов Cygwin, фильтрация осуществляется функциями вывода cygwin1.dll , чтобы разрешить перенос кода POSIX C в Windows.

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

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

Описание [ править ]

Коды управления C0 [ править ]

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

Популярные коды управления C0 (неполный список)
^ С0 Сокр. Имя Эффект
^ Г 0x07 БЕЛ Белл Издает слышимый шум.
^ Ч 0x08 БС Backspace Перемещает курсор влево (но может «перевернуться назад», если курсор находится в начале строки).
0x09 ХТ Вкладка Перемещает курсор вправо к следующему числу, кратному 8.
^Дж 0x0A НЧ Перевод строки Переход к следующей строке, прокрутка дисплея вверх, если он находится в нижней части экрана. Обычно не перемещается по горизонтали, хотя программам не следует на это полагаться.
0x0C ФФ Подача формы Переместите принтер вверх следующей страницы. Обычно не перемещается по горизонтали, хотя программам не следует на это полагаться. Влияние на видеотерминалы варьируется.
0x0D ЧР Возврат каретки Перемещает курсор в нулевой столбец.
^[ 0x1B ЭКУ Побег Запускает все escape-последовательности

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

Fe Escape-последовательности [ править ]

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

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

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

Последовательности CSI (Control Sequence Introducer) [ править ]

Для команд 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. Пропущенные числа рассматриваются как 0 ( 1;;3 действует так, как будто среднее число 0, и вообще никаких параметров в ESC[m действует как 0Сброс кода). Некоторые последовательности (например, CUU) лечат 0 как 1 чтобы сделать недостающие параметры полезными. [5] : Ф.4.2

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

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

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

CSI 6n ДСР Отчет о состоянии устройства Сообщает положение курсора (CPR) путем передачи ESC[n;mR, где n — строка, а m — столбец.
Некоторые популярные частные эпизоды
Код Сокр. Имя Эффект
CSI с SCP, SCOSC Сохранить текущую позицию курсора Сохраняет положение/состояние курсора в режиме консоли SCO. [15] В режиме вертикального разделения экрана вместо этого используется для установки (как CSI n ; n s) или сбросьте левое и правое поля. [16]
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 л Отключите режим вставки в скобках.

Параметры SGR (Выбор графического представления) [ править ]

Последовательность управления CSI n m, с именем «Выбрать графическое представление» (SGR), устанавливает атрибуты отображения. В одной последовательности можно задать несколько атрибутов, разделенных точкой с запятой. [21] Каждый атрибут отображения остается в силе до тех пор, пока следующее появление SGR не сбросит его. [5] Если коды не указаны, CSI m рассматривается как CSI 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
Консоль
[б]
Окна
PowerShell&
1.0–6.0
[с]
Код Visual Studio [д] Windows 10
Консоль
[Это]
Terminal.app Шпатлевка мИРЦ xterm Убунту [ф] Терминал Затмения
30 40 Черный 0, 0, 0 12, 12, 12 0, 0, 0 1, 1, 1 0, 0, 0
31 41 Красный 170, 0, 0 128, 0, 0 205, 49, 49 197, 15, 31 153, 0, 0 187, 0, 0 127, 0, 0 205, 0, 0 222, 56, 43 205, 0, 0
32 42 Зеленый 0, 170, 0 0, 128, 0 13, 188, 121 19, 161, 14 0, 166, 0 0, 187, 0 0, 147, 0 0, 205, 0 57, 181, 74 0, 205, 0
33 43 Желтый 170, 85, 0 [г] 128, 128, 0 238, 237, 240 229, 229, 16 193, 156, 0 153, 153, 0 187, 187, 0 252, 127, 0 205, 205, 0 255, 199, 6 205, 205, 0
34 44 Синий 0, 0, 170 0, 0, 128 36, 114, 200 0, 55, 218 0, 0, 178 0, 0, 187 0, 0, 127 0, 0, 238 [32] 0, 111, 184 0, 0, 238
35 45 Пурпурный 170, 0, 170 128, 0, 128 1, 36, 86 188, 63, 188 136, 23, 152 178, 0, 178 187, 0, 187 156, 0, 156 205, 0, 205 118, 38, 113 205, 0, 205
36 46 Голубой 0, 170, 170 0, 128, 128 17, 168, 205 58, 150, 221 0, 166, 178 0, 187, 187 0, 147, 147 0, 205, 205 44, 181, 233 0, 205, 205
37 47 Белый 170, 170, 170 192, 192, 192 229, 229, 229 204, 204, 204 191, 191, 191 187, 187, 187 210, 210, 210 229, 229, 229 204, 204, 204 229, 229, 229
90 100 Ярко-черный (серый) 85, 85, 85 128, 128, 128 102, 102, 102 118, 118, 118 102, 102, 102 85, 85, 85 127, 127, 127 127, 127, 127 128, 128, 128 0, 0, 0
91 101 Ярко-красный 255, 85, 85 255, 0, 0 241, 76, 76 231, 72, 86 230, 0, 0 255, 85, 85 255, 0, 0
92 102 Ярко зеленый 85, 255, 85 0, 255, 0 35, 209, 139 22, 198, 12 0, 217, 0 85, 255, 85 0, 252, 0 0, 255, 0
93 103 Ярко-желтый 255, 255, 85 255, 255, 0 245, 245, 67 249, 241, 165 230, 230, 0 255, 255, 85 255, 255, 0
94 104 Ярко-голубой 85, 85, 255 0, 0, 255 59, 142, 234 59, 120, 255 0, 0, 255 85, 85, 255 0, 0, 252 92, 92, 255 [33] 0, 0, 255 92, 92, 255
95 105 Ярко-пурпурный 255, 85, 255 255, 0, 255 214, 112, 214 180, 0, 158 230, 0, 230 255, 85, 255 255, 0, 255
96 106 Ярко-голубой 85, 255, 255 0, 255, 255 41, 184, 219 97, 214, 214 0, 230, 230 85, 255, 255 0, 255, 255
97 107 Ярко-белый 255, 255, 255 229, 229, 229 242, 242, 242 230, 230, 230 255, 255, 255
8-битный [ править ]

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

ЭСК[38;5;   ⟨n⟩  m Выберите цвет переднего плана, где n — число из таблицы ниже. 
  ЭСК[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 Информационная технология ITU – Архитектура открытого документа (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  10 11 12 13 14 15
216 цветов
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195
196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231
Цвета оттенков серого
232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255

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

24-битный [ править ]

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

ЭСК[38;2;   ⟨р⟩  ;   ⟨грамм⟩  ;   ⟨b⟩  m Выбор цвета переднего плана RGB 
  ЭСК[48;2;   ⟨р⟩  ;   ⟨грамм⟩  ;   ⟨b⟩  m Выбор цвета фона RGB 
 

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

  • Параметры после «2» (r, g и b) являются необязательными и их можно оставить пустыми.
  • Точки с запятой заменяются двоеточиями, как указано выше.
  • Существует ведущий «идентификатор цветового пространства». [13] Определение идентификатора цветового пространства не включено в этот документ, поэтому он может быть пустым, чтобы представлять неуказанное значение по умолчанию.
  • В дополнение к значению «2» после 48 для указания формата «красный-зеленый-синий» (и значению «5» выше для индексированного цвета от 0 до 255) существуют альтернативы «0» для определяемых реализацией и «1». для прозрачных — ни один из них не имеет дополнительных параметров; «3» определяет цвета с использованием схемы «Голубой-пурпурный-желтый», а «4» — для схемы «Голубой-пурпурный-желтый-черный», причем последний использует позицию, помеченную как «неиспользуемая» для черного компонента: [34]
ESC[38:2:  ⟨Color-Space-ID⟩  :  ⟨r⟩  :  ⟨g⟩  :  ⟨b⟩  :  ⟨unused⟩  :  Допуск CS  :  ⟨Цветовое пространство, связанное с допуском: 0 для «CIELUV»;   1 для «CIELAB»⟩  m Выбор цвета переднего плана RGB 
  ESC[48:2:  ⟨Color-Space-ID⟩  :  ⟨r⟩  :  ⟨g⟩  :  ⟨b⟩  :  ⟨unused⟩  :  ⟨CS допуск⟩  :  ⟨Цветовое пространство, связанное с допуском: 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, консоль) установлены $COLORFGBGсообщить о цветовой схеме терминала (в основном светлый или темный фон). Такое поведение возникло в S-Lang [41] и используется vim. Gnome-terminal отказывается добавлять это поведение, поскольку синтаксис значения не согласован, значение не может быть изменено при изменении палитры во время выполнения, и уже существуют более «правильные» последовательности xterm OSC 4/10/11. [43]

Последовательности OSC (команды операционной системы) [ править ]

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

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

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

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

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

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

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

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

nF Escape-последовательности [ править ]

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

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

Какой-то тип 0Ft (объявление) Escape-последовательности ANSI [13] [12] : 15.2 
Сокр. Имя Эффект
ЭСК СП Ф
  • АКС6
  • S7C1T
  • Объявление структуры кода 6
  • Отправьте 7-битный управляющий символ C1 на хост
Заставляет функциональные клавиши отправлять букву ESC + вместо 8-битных кодов C1.
ЭКУ СП Г
  • АКС7
  • S8C1T
  • Объявление структуры кода 7
  • Отправить 8-битный управляющий символ C1 на хост
Заставляет функциональные клавиши отправлять 8-битные коды C1.

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

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

Примеры [ править ]

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

CSI 32 m— Это делает текст зеленым. Зеленый цвет может быть темным, тускло-зеленым, поэтому вы можете включить жирный шрифт с помощью последовательности CSI 1 m что сделало бы его ярко-зеленым, или комбинированным как CSI 32 ; 1 m. В некоторых реализациях используется состояние «Жирный», чтобы сделать символ ярким.

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-подобных терминалах для подсветки синтаксиса . Например, на совместимых терминалах следующая команда списка обозначает цвета файлов и каталогов по типам.

лс --цвет 

Пользователи могут использовать 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 ; sleep 0.1; printf \\e[?5l ; read -s -n1 -t1 && break; done; }

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

printf   \  033c
 

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

В C [ править ]

Вывод примера программы на терминале Gnome
#include   <stdio.h> 

 int   main  (  void  ) 
 { 
     int   i  ,   j  ,   n  ; 

      для   (  я   знак равно   0  ;   я   <   11  ;   я  ++  )   { 
         для   (  j   знак равно   0  ;   j   <   10  ;   j  ++  )   { 
             n   =   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> '[' (<модификатор>) <char> -> последовательность кодов клавиш, <модификатор> — десятичное число, по умолчанию равное 1 (xterm)
 <esc> '[' (<код ключа>) (';'<модификатор>) '~' -> последовательность кода ключа, <код ключа> и <модификатор> являются десятичными числами и по умолчанию равны 1 (vt)
 

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

Значение модификатора по умолчанию равно 1, и после вычитания 1 это растровое изображение модификатора. нажимаемые клавиши: Meta+ Ctrl+ Alt+ ⇧ Shift. Так, например, <esc>[4;2~ является ⇧ Shift+ End, <esc>[20~ это функциональная клавиша F9, <esc>[5C является Ctrl+ .

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

Клавиша нажата Число Комментарий
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>[E - <esc>[O - <esc>[Y -
 <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>[A к <esc>[Dтакие же, как выходные последовательности ANSI. <modifier> обычно опускается, если не нажаты клавиши-модификаторы, но большинство реализаций всегда выдают <modifier> для F1F4. (черновой раздел)

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

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

См. также [ править ]

Примечания [ править ]

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

Ссылки [ править ]

  1. ^ Перейти обратно: а б «Стандарт ECMA-48: Функции управления для устройств ввода-вывода символов» (PDF) (второе изд.). Экма Интернешнл . Август 1979 года. Краткая история.
  2. ^ Уильямс, Пол (2006). «Видеотерминалы Digital» . VT100.net . Проверено 17 августа 2011 г.
  3. ^ Компания Хиткит (1979). «Каталог Heathkit 1979» . Компания Хиткит. Архивировано из оригинала 13 января 2012 года . Проверено 4 ноября 2011 г.
  4. ^ «Изъято из списка FIPS по номеру» (PDF) . Национальный институт стандартов и технологий . 15 декабря 2016 года . Проверено 2 января 2022 г.
  5. ^ Перейти обратно: а б с д Это ж г час я дж к л м н О «Стандарт ECMA-48: Функции управления для наборов кодированных символов» (PDF) (Пятое изд.). Экма Интернешнл . Июнь 1991 года.
  6. ^ «Определения команд принтера Amiga» . Коммодор . Проверено 10 июля 2013 г.
  7. ^ Худ, Джейсон (2005). «Обработка escape-последовательностей ANSI для консольных программ Windows» . Домашняя страница Джейсона Худа . Проверено 9 мая 2013 г.
  8. ^ «колорама · PyPI» . Индекс пакетов Python . Проверено 27 февраля 2022 г.
  9. ^ сумасшедший. «Последовательности виртуального терминала консоли — консоль Windows» . docs.microsoft.com . Проверено 30 мая 2018 г.
  10. ^ «Справка PowerShell: О специальных символах» . 12 января 2023 г.
  11. ^ «Дорожная карта консоли Windows и экосистемы терминалов» . Майкрософт. 2018 . Проверено 13 марта 2021 г. это включает в себя отказ от классического пользовательского интерфейса хоста консоли из его положения по умолчанию в пользу Windows Terminal, ConPTY и последовательностей виртуального терминала.
  12. ^ Перейти обратно: а б с д Это ж г час я «Стандарт ECMA-35: структура кода символов и методы расширения» (PDF) (шестое изд.). Экма Интернешнл . 1994.
  13. ^ Перейти обратно: а б с д Это ж г час я дж к л м н Мой, Эдвард; Гильдеа, Стивен; Дики, Томас (2019). «Управляющие последовательности XTerm (ctlseqs)» . Невидимый остров .
  14. ^ Франк да Круз; Кристин Джаноне (1997). Использование Си-Кермита . Цифровая пресса. п. 278. ИСБН  978-1-55558-164-0 .
  15. ^ «SCOSC — сохранить текущую позицию курсора» . Информация о программаторе видеотерминала VT510 . ДЕК .
  16. ^ «DECSLRM — установка левого и правого полей» . Информация о программаторе видеотерминала VT510 . ДЕК .
  17. ^ «SCORC — восстановить сохраненную позицию курсора» . Информация о программаторе видеотерминала VT510 . ДЕК .
  18. ^ Мой, Эдвард; Гильдеа, Стивен; Дикки, Томас. «Управляющие последовательности XTerm» . Функции, использующие CSI, упорядоченные по последнему символу(ам) . Проверено 4 февраля 2022 г.
  19. ^ Конрад Ирвин (апрель 2013 г.). «режим вставки в скобках» . cirw.in.
  20. ^ Мой, Эдвард; Гильдеа, Стивен; Дикки, Томас. «Управляющие последовательности XTerm» . Режим вставки в квадратных скобках . Проверено 4 февраля 2022 г.
  21. ^ «console_codes(4) — страница руководства Linux» . man7.org . Проверено 23 марта 2018 г.
  22. ^ Перейти обратно: а б «экран(АПП)» . Руководство по SCO OpenServer версии 5.0.7 . 11 февраля 2003 г.
  23. ^ «Ошибка 791596 — Мысли о обмороке (SGR 2)» . bugzilla.gnome.org .
  24. ^ Перейти обратно: а б с «Кудрявые и цветные подчеркивания (#6382) · Проблемы · Джордж Нахман / iterm2» . ГитЛаб . 11 декабря 2017 г.
  25. ^ Перейти обратно: а б с «Расширения протокола xterm» . документация по котенку . Проверено 1 июля 2020 г.
  26. ^ «Кудрявые и цветные подчеркивания» . Система отслеживания ошибок KDE . 27 августа 2022 г.
  27. ^ "консоль-термио-реализатор" . jdebp.uk .
  28. ^ «console_codes(4)» . Руководство программиста Linux . 5.10. Linux . справочных страниц Проект
  29. ^ Перейти обратно: а б «mintty/mintty: текстовые атрибуты и рендеринг» . Гитхаб .
  30. ^ «Ярлык по умолчанию в Windows переназначает цвета ANSI 35,36 · Проблема № 4266 · PowerShell/PowerShell» . Гитхаб . Проверено 21 декабря 2022 г.
  31. ^ «Настоящая палитра CGA и цветопередача IBM 5153» . ВилР. 11 июня 2022 г. Проверено 18 мая 2024 г.
  32. ^ Изменено с 0, 0, 205 в июле 2004 г. «Патч № 192 – 12.07.2004 – XFree86 4.4.99.9» .
  33. ^ Изменено с 0, 0, 255 в июле 2004 г. «Патч № 192 – 12.07.2004 – XFree86 4.4.99.9» .
  34. ^ Перейти обратно: а б с «Информационные технологии T.416 — Архитектура открытого документа (ODA) и формат обмена: Архитектура символьного контента» .
  35. ^ "color-spaces.pl (копия 256colors2.pl из xterm от 11 июля 1999 г.)" . КДЕ. 6 декабря 2006 г. [ постоянная мертвая ссылка ]
  36. ^ «README.moreColors» . КДЕ. 22 апреля 2010 г.
  37. ^ «Отчет об ошибках и исправлениях libvte: поддержка 16 миллионов цветов» . ГНОМ Багзилла. 4 апреля 2014 года . Проверено 5 июня 2016 г.
  38. ^ «Как включить поддержку 24-битного истинного цвета в терминале Gnome?» .
  39. ^ «История». curs_color(3X) — манипулирует цветами терминала с помощью проклятий .
  40. ^ «Midnight Commander: lib/tty/color-slang.c» . Фосси .
  41. ^ Перейти обратно: а б Дики, Томас Э. (2017). «NCURSES — комментарии к S-Lang» . invisible-island.net .
  42. ^ «Функции/256 цветных терминалов — Fedora Project Wiki» . Проект Федора . Архивировано из оригинала 4 октября 2012 года.
  43. ^ «Ошибка 733423. Установите переменную среды COLORFGBG для автоматического определения цвета» . bugzilla.gnome.org .
  44. ^ Перейти обратно: а б Коблингер, Эгмонт. «Гиперссылки (также известные как HTML-подобные привязки) в эмуляторах терминала» . GitHub Gists .
  45. ^ «mintty/mintty: управляющие последовательности» . Гитхаб .
  46. ^ Коблингер, Эгмонт. «Внедрение OSC 8 в эмуляторах терминала» . Гитхаб .
  47. ^ «console_codes — escape-последовательности и управляющие последовательности консоли Linux» . Руководство программиста Linux .
  48. ^ Перейти обратно: а б ISO-IR: Международный реестр наборов кодированных символов ISO/IEC для использования с escape-последовательностями (PDF) . ITSCJ/ IPSJ . Проверено 12 мая 2023 г.
  49. ^ Перейти обратно: а б Цифровой . «DECSC — Сохранить курсор» . Информация о программаторе видеотерминала VT510 .
  50. ^ Перейти обратно: а б Escape-последовательности ANSI — VT100/VT52 , заархивировано из оригинала 27 февраля 2009 г. , получено 21 августа 2020 г.
  51. ^ Цифровой . «DECSWL — линия одинарной ширины и одинарной высоты» . Информация о программаторе видеотерминала VT510 .
  52. ^ Цифровой . «DECDWL — линия двойной ширины и одинарной высоты» . Информация о программаторе видеотерминала VT510 .
  53. ^ «Глава 9. Системные советы» . debian.org .
  54. ^ «VT100.net: Руководство пользователя цифрового VT100» . Проверено 19 января 2015 г.
  55. ^ «bash — Как получить уведомление о выполнении моих команд — Спросите другое» . Проверено 19 января 2015 г.
  56. ^ Дикки, Томас. «Часто задаваемые вопросы по XTerm: сравнение версий путем подсчета элементов управления» . Невидимый остров . Проверено 25 января 2020 г.
  57. ^ Дики, Томас (2016). «Таблица функциональных клавиш для XTerm и других эмуляторов терминала» . Невидимый остров . Проверено 25 января 2020 г.
  58. ^ «CSI u — Документация — iTerm2 — Замена терминала macOS» . iTerm2 . Проверено 15 августа 2023 г.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 7827E356326299A0D04E886DE09AF4D4__1717252860
URL1:https://en.wikipedia.org/wiki/Control_Sequence_Introducer
Заголовок, (Title) документа по адресу, URL1:
ANSI escape code - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)