Стандарты для escape-кодов ANS... Заметка
RSS Джулия Эванс

Стандарты для escape-кодов ANSI

Коды ANSI-последовательностей используются для повышения удобства работы с терминалом, но они не полностью стандартизированы, что приводит к проблемам надёжности. Автор узнал о кодах ANSI-последовательностей во время изучения работы терминала и захотел понять стандарты, которые их регулируют. Коды последовательностей используются эмуляторами терминала для связи с программами и бывают двух типов: входные коды для нажатий клавиш и движений мыши, а также выходные коды для таких задач, как изменение цвета текста и перемещение курсора. Стандарт ECMA-48, опубликованный в 1976 году, определяет общие форматы кодов последовательностей и некоторые конкретные коды, но он не является исчерпывающим. Последовательности управления Xterm — это другой набор кодов последовательностей, широко внедрённый эмуляторами терминалов, хотя они и не являются формальным стандартом. База данных terminfo, управляемая ncurses, хранит коды последовательностей для различных терминалов, и некоторые программы используют её для определения того, какие коды следует использовать. Однако некоторые программы предпочитают не использовать terminfo и вместо этого жёстко кодируют «единый общий набор» кодов последовательностей, работающих в большинстве эмуляторов терминалов. Нет чёткого соглашения относительно того, что представляет собой этот общий набор, но, вероятно, он включает коды из VT100, ECMA-48 и xterm. Несмотря на трудности, стандартизация кодов ANSI-последовательностей может привести к более богатому опыту работы с терминалом, и автор надеется, что более чёткий ландшафт стандартов мог бы способствовать инновациям в эмуляторах терминалов и приложениях.