Linux вывести символ по его коду

Обновлено: 04.07.2024

В человеческом мире информация представляется последовательностями символов. Каждый символ имеет каноническое изображение, которое позволяет однозначно идентифицировать данный символ. Шрифты задают разные варианты начертания символов.

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

Самой известной таблицей кодировки является код ASCII (Американский стандартный код для обмена информацией), который был разработан для передачи текстов по телеграфу задолго до появления компьютеров. Этот код является 7 битовым, т. е. для кодирования символов английского языка, служебных и управляющих символов используются только 128 7-битовых комбинаций. При этом первые 32 комбинации (кода) служат для кодирования управляющих сигналов (начало текста, конец строки, перевод каретки, звонок, конец текста и т. д.).

Когда IBM-совместимые персональные компьютеры стали использовать в других странах, потребовалось обеспечить обработку информации на языках, отличных от английского. Для того, чтобы полноценно поддерживать другие языки, фирма IBM ввела в употребление несколько кодовых таблиц, ориентированных на конкретные страны. Так для скандинавских стран была предложена таблица 865 (Nordic), для арабских стран - таблица 864 (Arabic), для Израиля - таблица 862 (Israel) и так далее. В этих таблицах часть кодов из второй половины кодовой таблицы использовалась для представления символов национальных алфавитов (за счет исключения некоторых символов псевдографики). Для представления символов кириллицы была введена кодировка IBM-866.

Одна из самых известных кодовых таблиц для кириллицы получила название альтернативной (по отношению к кодировке IBM-866, наверное). Она была разработана фирмой Microsoft для MS-DOS. При ее разработке постарались сделать так, чтобы результирующая таблица была насколько это возможно совместима с кодировкой IBM. Поэтому альтернативная кодировка - это кодировка IBM, в которой все специфические европейские символы в верхней половине были заменены на кириллицу, оставляя псевдографические символы нетронутыми. Следовательно, это не портило вид программ, использующих для работы текстовые окна, что было очень существенным фактором для работы в среде MS-DOS, основой которой был именно текстовый режим.

• 8859-0 - новый европейский стандарт (так называемый Latin 0);

• 8859-1 - Европа, Латинская Америка (также известный как Latin 1);

• 8859-2 - Восточная Европа;

Фирма Microsoft еще больше запутала ситуацию с кодировками для русского языка, когда при разработке Windows ввела кодировку CP-1251.

Но в мире есть языки, такие как китайский или японский, для которых 256 символов в принципе недостаточно. Кроме того, всегда существует проблема вывода или сохранения в одном файле одновременно текстов на разных языках (например, при цитировании). Поэтому была разработана универсальная кодовая таблица UNICODE, содержащая символы, применяемые в языках всех народов мира, а также различные служебные и вспомогательные символы (знаки препинания, математические и технические символы, стрелки, диакритические знаки и т. д.). Очевидно, что одного байта недостаточно для кодирования такого большого множества символов. Поэтому в UNICODE используются 16-битовые (2-байтовые) коды, что позволяет представить 65 536 символов. К настоящему времени задействовано около 49 000 кодов (последнее значительное изменение - введение символа валюты EURO в сентябре 1998 г.). Для совместимости с предыдущими кодировками первые 128 кодов совпадают со стандартом ASCII. На рис. 9.1 схематично представлено размещение символов разных языков в кодовом пространстве UNICODE.


Рис. 9.1. Структура UNICODE.

В стандарте UNICODE кроме определенного двоичного кода (эти коды принято обозначать буквой U, после которой следуют знак + и собственно код в шестнадцатеричном представлении) каждому символу присвоено определенное имя. В следующей таблице приведено несколько примеров кодов и имен символов из стандарта UNICODE.

Таблица 9.2. Примеры именования кодов UNICODE

Символ UNICODE Название символа (Character Name) A U+0041 LATIN CAPITAL LETTER A a U+0061 LATIN SMALL LETTER A Ю U+042E CYRILLIC CAPITAL LETTER YU + U+002B PLUS SIGN 1 U+0031 DIGIT ONE ? U+03A9 GREEK CAPITAL LETTER OMEGA ? U+2569 BOX DRAWINGS DOUBLE UP AND HORIZONTAL

Преобразование символов из кодировки ASCII в Unicode

Преобразование символов из кодировки ASCII в Unicode Измерения выполнялись для восьми программ, каждая из которых преобразовывала файл размером 12,8 Мбайт в файл размером 25,6 Мбайт. Соответствующие результаты представлены в табл. В.2.1. Программа atou (программа 2.4) сопоставима с

Установка кодировки символов

Установка кодировки символов Для значительных переработок исходных документов важно знать, что можно устанавливать кодировку символов в результирующих документах при помощи атрибута encoding элемента <xsl:output>. Однако нет гарантии, что ваш процессор XSLT будет

Изменение размера шрифта и кодировки

Изменение размера шрифта и кодировки Для начала изучим две очень полезные команды, которые находятся в меню Вид и называются Размер шрифта и Кодировка.С первой проще. Проведя несложные манипуляции мышью (рис. 7.1), вы можете выбрать размер экранных шрифтов в зависимости от

Изучаем мир тви-символов

Изучаем мир тви-символов С. Кара-Мурза в своей книге «Демонтаж народа» описывает мир символов. Он говорит, что «мир символов упорядочивает историю, связывает в нашей коллективной жизни прошлое, настоящее и будущее». Действительно, символы значат для нас чрезвычайно

Поддержка кодировки UNICODE

Поддержка кодировки UNICODE Microsoft ODBC 3.5 определяет два типа драйверов - ANSI и UNICODE. Gemini ODBC-драйвер является по этой классификации драйвером UNICODE. Это дает возможность приложениям, использующим версию UNICODE интерфейса ODBC, обрабатывать данные различных национальных наборов

Вставка символов

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

Настройки символов

Настройки символов Для изменения настроек символов мы будем пользоваться палитрой Character (Символы) (рис. 13.1) и панелью управления (рис. 13.2) в режиме работы с текстом (возможно, ее придется переключить в режим отображения настроек символов с помощью кнопок в левой части

Стили символов

Стили символов Созданием, управлением и использованием стилей символов занимается палитра Character Styles (Стили символов) (рис. 17.1). В начале работы она пуста, в ней присутствует только строка [None] (Нет стиля). Рис. 17.1. Палитра Character Styles (Стили символов) и ее менюНачать работу с уже

3.8. Классы символов

4.2. Кодировки в пост-ASCII мире

4.2. Кодировки в пост-ASCII мире «Век ASCII» прошел, хотя не все еще осознали этот факт. Многие допущения, которые программисты делали в прошлом, уже несправедливы. Нам необходимо новое мышление.Есть две идеи, которые, на мой взгляд, являются основополагающими, почти аксиомами.

10.3.3. Набор символов и объединение таблицы

10.3.3. Набор символов и объединение таблицы Каждая таблица имеет набор символов таблицы и объединение. Инструкции CREATE TABLE и ALTER TABLE имеют факультативные предложения для определения набора символов таблицы и объединения:CREATE TABLE tbl_name(column_list)[[DEFAULT] CHARACTER SET charset_name][COLLATE

Определение класса символов и преобразование символов

Определение класса символов и преобразование символов Функция Краткое описание isalnum проверка на букву или цифру isalpha проверка на букву isascii проверка на символ из набора кодировки ASCII iscntrl проверка на управляющий символ isdigit проверка на десятичную

Кодировки в XSLT-преобразованиях

Кодировки в XSLT-преобразованиях Несмотря на то, что в логических деревьях, которыми манипулирует XSLT, текстовые узлы представляются в кодировке Unicode, очень часто в обрабатываемых документах бывает необходимо использовать также другие кодировки. К примеру, большинство

23.1.4. Регистр символов

23.1.4. Регистр символов Чаще всего причиной ошибки является неверное использование регистра при работе с переменными. Например, при присваивании переменной применяется верхний регистр, а при ссылке на нее — нижний. Тогда не следует удивляться тому, что присваивания

При вводе с терминала управляющие символы (таблица ниже) служат командами драйверу терминала и в большинстве своем, генерируются при помощи сочетания клавиш Ctrl (отсюда ее название control — управление) с одной из алфавитно-цифровых клавиш. В отдельных случаях, управляющие символы генерируются специально предназначенными для этого клавишами, например, ↵ Enter, Tab или ← Backspace

Нотация Ввод символа Вывод символа Клавиши Код символа Код символа
^C intr Ctrl+C 0x03 ЕТХ
^\ quit Ctrl+\ или Ctrl+4 0x1С FS
^Z susp Ctrl+Z 0х1А SUB
^D eof Ctrl+D 0x04 EOT
^? erase ← Backspace или Ctrl+? или Ctrl+8 0x7F DEL
^H или \b backspace Ctrl+H 0x08 BS
^W werase Ctrl+W 0x17 ETB
^U kill Ctrl+U 0x15 NAK
^| или \t tab Tab или Ctrl+I 0x09 HT
^M или \r eol cr ↵ Enter или Ctrl+М 0x0D CR
^J или \n eol nl Ctrl+J 0x0A LF
^S stop Ctrl+S 0x13 DC3
^Q start Ctrl+Q 0x11 DC1
^R rprnt Ctrl+R 0x12 DC2
^V lnext Ctrl+V 0x16 SYN
^N so Ctrl+N 0x0E SO
^O si Ctrl+O 0x0F SI
^[ или \e esc esc Esc или Ctrl+[ или Ctrl+3 0x1B ESC

Так, например, нажатие клавиши ↵ Enter или эквивалентное сочетание Ctrl+J, записывающееся как ^J, генерирует управляющий символ LF (таким же действием обладает символ CR, ^M), который сигнализирует драйверу терминала о завершении ввода строки (eol, end of line) и необходимости «отдать команду на выполнение».

Управляющие символы ^J и ^М

$ date ↵

Вс. февр. 1 22:39:00 MSK 2015

$ hostname ^M

$ whoami ^J

Нажатие клавиши ← Backspace или сочетания клавиш Ctrl+? приводит к генерации управляющего символа DEL, что заставляет драйвер выполнить управляющее действие erase (^?) — удалить последний набранный символ. Аналогично, warese (^W) и kill (^U) удаляют последнее набранное слово и всю набранную строку соответственно.

Управляющие символы ^С и ^\

$ dd if=/dev/dvd of=dvd.iso

^C6227352+0 записей получено

6227351+0 записей отправлено

скопировано 3188403712 байт (3,2 GВ), 2,72618 с, 1,2 GB/c

$ dd if=/dev/cdrom of=cd.iso

^\выход (сделан дамп памяти)

Символы stop (^S) и start (^Q) управляют потоком вывода (и, как следствие, скроллингом терминала), что можно использовать для временной приостановки вывода команд с многострочным выводом. Однако случайное нажатие ^S может привести начинающего пользователя в замешательство— будет казаться, что терминал «завис», т. е. отсутствует реакция со стороны операционной системы на какие-либо нажимаемые клавиши и посылаемые символы, тогда как на самом деле отсутствует (приостановлен) лишь ее вывод— до нажатия ^Q, ^C или ^\.

Управляющий символ eof (^D) используется для оповещения драйвера о завершении ввода, при работе с интерактивными (ведущими с пользователем двусторонний попеременный диалог) программами.

Управляющий символ ^D

Cc: ↵

Subject: Не забыть про Ctrl+D ↵

^D

$ at 21:30

warning: commands will be executed using /bin/sh

at> mplayer

/sounds/alarm.mp3 ↵

at> ^D <E0T>

job 4 at Sat Jan 31 21:30:00 2015

> get /ubuntu/pool/main/n/manpages/manpages_3.74.orig.tar.xz ↵

291196 байтов перемещено за 7 секунд (22б.2Кб/с)

Нужно заметить, что при работе с диалоговыми программами ^C или ^\ завершит выполняющуюся программу (at), не дав ей выполнить свое основное действие, или вообще будет проигнорирован (ftp, mail). Именно символ завершения ввода (eof, end of file) сообщит драйверу о нежелании больше вести диалог с программой (которой в свою очередь сообщит программе об отсутствии для нее вводимых данных).

Управляющий символ ^V

$ tee cc.bin

Ctrl+C: ^C

$ od -ca cc.bin

$ tee cc.bin

Ctrl+C: ^V^C ↵

^D

$ od -ca cc.bin

0000000 C t r l + C : 003 \n

C t r l + C : etx nl

$ hd cc.bin

00000000 43 74 72 6c 2b 43 3a 03 0a |Ctrl+C: |

Реакция драйвера терминала на получаемые управляющие символы и предпринимаемые им управляющие действия (а точнее, наоборот— управляющие символы, закрепленные за управляющими действиями) стандартно предопределена, но почти все эти соответствия могут быть просмотрены и изменены командой stty.

Утилита stty

$ stty -а

speed 38400 baud; rows 38; columns 136; line = 0;

swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z;

rprnt = ^R; werase = ^W; lnext = ^V; flush = ^0; min = 1; time = 0;

-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts

-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany

opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0

isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

Управляющие символы ^С, ^\ и ^Z штатного или аварийного завершения и приостановки выполняющейся программы активируются флагом isig, разрешающим или запрещающим (-isig) посылку сигналов (signal).
Флаг icrnl включает трансляцию вводимого символа CR в символ LF, что позволяет запускать команды клавишей ↵ Enter (неожиданно, правда?), потому как основной символ для этого действия авсе же— LF (так уж сложилось в UNIX со времен телетайпа ASR-33).
К счастью, большинство из этих параметров и флагов применимы только при работе с настоящими аппаратными терминалами и интерфейсами. Поэтому пояснение их назначения можно опустить хотя бы просто пртому, что оно требует дополнительных знаний специфики соответствующей аппаратуры, что не имеет ни особой актуальности.

Нужно также отметить, что некоторые диалоговые программы «игнорируют» некоторые настройки терминала, например флаг «канонического» режима. Точнее, они всегда работают в «неканоническом» режиме и сами обрабатывают управляющие символы, зачастую переопределяя некоторые из них или добавляя обработку дополнительных, например, для командного интерпретатора bash(1) это ^R (reverse-search-history), ^S (forward-search-history), ^D (delete-char) ^L (clear-screen), ^A (beginning-of-line), ^E (end-of-line), ^F(forward-char) , ^B (backward-char), ^P (previous-history), ^N (next-history) и др.

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

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

Способ 1: из терминала

Если вы уже находитесь в среде CLI Linux, работающей из оболочки Bash, то вы можете использовать встроенное Руководство программиста Linux, не пропуская ритм. В командной строке Bash введите команду man ascii и нажмите клавишу ввода. Вас встретит техническое определение того, что такое ASCII, а затем таблица из 128 символов, которые составляют надлежащий стандарт ASCII.

Скорее всего, вы привыкли искать страницы справочника по командам с помощью команды CLI man, но вы, возможно, не так привыкли к встроенному Руководству для программиста Linux. Многие страницы руководства, на которые иначе не могли бы ссылаться имена команд, могут быть доступны таким же образом.

картинка-а

Прокрутите вниз с помощью колеса прокрутки мыши, нажав клавишу Page Down или клавишу со стрелкой вниз на клавиатуре. Вы можете изучить очень подробную страницу, которая содержит несколько полных таблиц ASCII. Просто проведите мышью, чтобы выделить текст, а затем, удерживая клавиши CTRL и SHIFT, нажмите C, чтобы скопировать; любая скопированная информация может быть вставлена ​​в другое окно.

картинка-б

Способ 2: с помощью инструмента графических страниц справочника

Удерживая нажатой клавишу Windows или Super, нажмите R, чтобы открыть диалоговое окно запуска. Введите xman в поле и затем нажмите ввод или нажмите OK, чтобы продолжить.

картинка с

Появится окно справки Xman, объясняющее, как это инструмент ручного просмотра системы X Window. Игнорируйте этот текст, вместо этого нажмите «Опции» и выберите функцию «Поиск».

картинка-е

картинка-е

Теперь вы увидите ту же страницу Руководства для программиста Linux, которая была бы, если бы вы использовали функцию CLI. Прокрутите колесико мыши, чтобы просмотреть таблицы ASCII, или нажмите клавишу «F» или пробел, чтобы перемещаться вниз по странице за раз.

картинка г

Способ 3: с помощью сценария оболочки

Если вы обнаружите, что становитесь зависимыми от этой таблицы для задач программирования, вы можете автоматизировать процесс поиска таблиц с помощью сценария оболочки Bash. В интерфейсе командной строки Linux используйте команду cd, чтобы найти себя в логическом месте. Например, вы можете использовать cd

картинка-ч

Способ 4: с помощью текстового файла

/ Documents, чтобы попасть в вашу обычную папку документов. Когда-то наберите man ascii | grep -A 20 Таблицы> Asciitables и нажмите Enter.

Теперь вы можете редактировать этот файл с любым программным обеспечением, которое вам нравится. Вы можете ввести cat asciitables и затем нажать Enter, чтобы вывести его на терминал. Если вы перейдете к

/ Documents в графическом файловом менеджере и дважды щелкните там значок asciitables, вы можете открыть его в графическом текстовом редакторе.

картинка-я

Способ 5: с помощью команды showkey

картинка-J

Это может быть отличным способом найти информацию о персонаже, пока вы пишете исходный код.

ОПИСАНИЕ
Консоль Linux имеет большой набор средств управления
терминалами VT102 и ECMA-48/ISO 6429/ANSI X3.64, а также
некоторым количеством частных последовательностей для
изменения цветовой палитры, распределений символьного
набора и т.п. В таблицах, приведенных ниже (во второй
колонке), указывается мнемонический код ECMA-48 или DEC
(если последнее приписано к DEC) данной функции.
Последовательности без мнемонического кода не принадлежат
ни к ECMA-48, ни к VT102.

Первым процессом, который выполняется после работы
обычного процесса по выводу информации и отправки к
драйверу потока символов консоли (для их реального
вывода), является перевод кодов, используемых при обычной
работе, в коды, применяемые для печати.

Если консоль работает в режиме UTF-8, то входящие байты
сначала организуются в 16-битовом уникоде. В ином случае
каждый байт преобразуется согласно текущей таблице
распределения, которая переводит данные в уникод. (Смотри
раздел НАБОРЫ СИМВОЛОВ ниже).

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

Если текущим значением уникода является управляющий символ
или если в данный момент обрабатывается
ESC-последовательность, значение будет обрабатываться
особым образом. Вместо того, чтобы значение преобразовало
себя в шрифт и отобразилось как глиф, оно будет выполнять
определенные действия (например, передвигать курсор) или
выполнять какие-нибудь другие функции управления.
Смотрите ниже раздел УПРАВЛЕНИЕ КОНСОЛЬЮ LINUX.

Некорректно строго задавать программам управление
терминалом. Linux поддерживает работу с базой
возможностей терминала. terminfo(5). Предпочитая не
вводить управляющие ESC-последовательности вручную, Вы,
наверняка, захотите использовать для этой работы
библиотеку информации об экране terminfo-aware или другие
утилиты, такие, как: ncurses(3), tput(1) или reset(1).

УПРАВЛЕНИЕ КОНСОЛЬЮ LINUX
Этот раздел описывает все управляющие символы и
ESC-последовательности, которые выполняют специальные
команды (т.е., все, что отличается от простого вывода
символа в текущую позицию курсора) консоли Linux.

BEL (0x07, ^G) издает звуковой сигнал;

BS (0x08, ^H) удаляет предыдущий символ (смещается влево
на одну колонку, но не далее, чем за начало
строки);

HT (0x09, ^I) перемещается на следующую позицию табуляции
или в конец строки, если до этого не было
установлено позиций табуляции;

LF (0x0A, ^J), VT (0x0B, ^K) и FF (0x0C, ^L) задают
перевод строки;

CR (0x0D, ^M) задает перевод каретки;

SO (0x0E, ^N) приводит в действие набор символов G1, и
если LF/NL (режим новой строки) включен, то задает
перевод каретки;

SI (0x0F, ^O) приводит в действие набор символов G0;

CAN (0x18, ^X) и SUB (0x1A, ^Z) прерывают
ESC-последовательность;

ESC (0x1B, ^[) начинает ESC-последовательность;

DEL (0x7F) игнорируется;

CSI (0x9B) эквивалентно ESC [.

ECMA-48 Установка параметров графики
Последовательность ECMA-48 SGR управляющих символов ESC [

m устанавливает атрибуты экрана. Несколько
атрибутов могут быть заданы в одной последовательности.

парам. результат
0 сбросить все атрибуты в их значения по умолчанию
1 установить жирный шрифт
2 установить более яркий (имитированное цветом на цветном дисплее)
4 установить подчеркивание (имитированное цветом на цветном дисплее);
цвета, используемые для имитации затемнения или подчеркивания, устанавливаются
при помощи ESC ] .
5 включить мерцание
7 включить режим инвертированного видео
10 сбросить выбранное распределение, флаги управления экраном
и переключить метафлаг
11 выбрать null-распределение, установить флаг управления экраном,
сбросить переключатель метафлага.
12 выбрать null-распределение, установить флаг управления экраном,
включить переключатель метафлага. Переключение метафлага
задает переключение старшего бита в байте
до его трансформации согласно таблице распределения.
21 включить режим нормальной интенсивности (несовместимо с ECMA-48)
22 выключить режим нормальной интенсивности
24 выключить подчеркивание
25 выключить мерцание
27 выключить инвертированное видео
30 установить черный цвет символов
31 установить красный цвет символов
32 установить зеленый цвет символов
33 установить коричневый цвет символов
34 установить синий цвет символов
35 установить сиреневый цвет символов
36 установить голубой цвет символов
37 установить белый цвет символов
38 включить подчеркивание, установить цвет символов по умолчанию
39 выключить подчеркивание, установить цвет символов по умолчанию
40 установить черный цвет фона
41 установить красный цвет фона
42 установить зеленый цвет фона
43 установить коричневый цвет фона
44 установить синий цвет фона
45 установить сиреневый цвет фона
46 установить голубой цвет фона
47 установить белый цвет фона
49 установить цвет фона по умолчанию

ECMA-48 Переключение режимов
ESC [ 3 h
DECCRM (по умолчанию выключено): Показывать
управляющие символы.

ESC [ 4 h
DECIM (по умолчанию выключено): Установить режим
вставки/замены.

ESC [ 20 h
LF/NL (по умолчанию выключено): Автоматически
выводить код CR после кодов: LF, VT или FF.

ESC [ ? 1 h
DECCKM (по умолчанию выключено): Если включено, то
клавиши курсора выдают сигнал, начинающийся с ESC
O, а не с ESC [.

ESC [ ? 3 h
DECCOLM (по умолчанию выключено = 80 столбцов):
режим переключения количества столбцов на 80 или
132. В исходных версиях драйвера задано, что одной
этой команды недостаточно; некоторые
пользовательские утилиты, использующие
нестандартные режимы, такие, как resizecons(8),
должны менять регистры настройки консольной
видеокарты.

ESC [ ? 5 h
DECSCNM (по умолчанию выключено): Включить
инвертированный видеорежим.

ESC [ ? 6 h
DECOM (по умолчанию выключено): Если включено, то
координаты курсора рассматриваются относительно
верхнего левого угла в области прокрутки.

ESC [ ? 8 h
DECARM (по умолчанию включено): Включить режим
автоповтора символов при нажатии клавиши
клавиатуры.

ESC [ ? 9 h
X10 Отчет о состоянии мыши (по умолчанию
выключено): Установить режим отчета о состоянии
мыши, равным единице или нулю (сброс), см. ниже.

ESC [ ? 25 h
DECCM (по умолчанию включено): Сделать курсор
видимым.

ESC [ ? 1000 h
X11 Отчет о состоянии мыши (по умолчанию
выключено): Установить режим отчета о состоянии
мыши, равным 2-м или нулю (сброс), см. ниже.

НАБОРЫ СИМВОЛОВ
Ядро располагает информацией о 4-х типах перевода байтов в
символы консоли экрана. Эти четыре таблицы являются
трансформирующими: a) Latin1 -> PC, b) графика VT100 ->
PC, c) PC -> PC, d) определяется пользователем. В системе
вообще существует два набора символов, называемых G0 и G1,
и один из них является текущим набором системы (изначально
это G0). Ввод ^N заставляет набор G1 стать текущим, ^O
делает текущим набор G0. Переменные G0 и G1 указывают на
таблицы символов и могут меняться пользователем.
Изначально они указывают на таблицы a) и b)
соответственно. Последовательности ESC ( B и ESC ( 0 и
ESC ( U и ESC ( K заставляют G0 ссылаться на таблицы
перевода a), b), c) и d) соответственно.
Последовательности ESC ) B и ESC ) 0 и ESC ) U и ESC ) K
заставляют G1 ссылаться на таблицы перевода a), b), c) и
d) соответственно. Последовательность ESC c приводит к
сбросу терминала, то есть к тому, что Вам необходимо при
наличии "мусора" на экране. Рекомендация, указанная после
"echo ^V^O", только сделает G0 текущим набором, но нет
никакой гарантии, что G0 будет указывать на таблицу a). В
некоторых версиях есть программа reset(1), которая всего
лишь выполняет команду "echo ^[c". Если элемент terminfo
является правильным для консоли (и содержит элемент
rs1=\Ec), то "tput reset" также будет выполнять операции.
Определенная пользователем таблица распределения может
быть установлена с помощью mapscrn(8). Результатом
распределения будет то, что при указании символа c в
видеопамять будет отправлен символ s = map[c] . Побитное
изображение, соответствующее s, ищется в ПЗУ символов и
может меняться при помощи setfont(8).

Обработка управляющих символов
Тип vt102 также распознает следующие управляющие символы:

NUL (0x00) был проигнорирован;

DC1 (0x11, ^Q, XON) продолженная передача;

DC3 (0x13, ^S, XOFF) указывает, что vt100 необходимо
игнорировать и останавливать передачу всех кодов за
исключением XOFF и XON

VT100-подобная DC1/DC3 обработка может быть запущена
драйвером tty.

Программа xterm (в режиме vt100) распознает управляющие
следующие символы: BEL, BS, HT, LF, VT, FF, CR, SO, SI,
ESC.

ESC-последовательности
VT100-последовательности консоли, не реализованные в
консоли Linux:

ESC ] 0 ; txt BEL Установить имя иконки и заголовок окна в режиме txt.
ESC ] 1 ; txt BEL Установить имя иконки в режиме txt.
ESC ] 2 ; txt BEL Установить заголовок окна в режиме txt.
ESC ] 4 6 ; name BEL Сменить файл логов на name (обычно отключено
параметрами компиляции)
ESC ] 5 0 ; fn BEL Установить шрифт fn.
Распознаются следующие параметры с несколько измененным
значением:

ESC 7 DECSC Сохранить курсор
ESC 8 DECRC Восстановить курсор
Также распознается

ESC F Курсор в нижний левый угол экрана (если разрешено
ресурсом hpLowerleftBugCompat)
ESC l Блокирование памяти (для HP-терминалов).
Блокирует память выше курсора.
ESC m Разблокирование памяти (для HP-терминалов).
ESC n LS2 Ввод набора символов G2.
ESC o LS3 Ввод набора символов G3.
ESC | LS3R Ввод набора символов G3 в качестве GR.
Не имеет видимого эффекта в xterm.
ESC > LS2R Ввод набора символов G2 в качестве GR.
Не имеет видимого эффекта в xterm.
ESC

LS1R Ввод набора символов G1 в качестве GR.
Не имеет видимого эффекта в xterm.
Не распознается ESC % .

CSI-последовательности
Программа xterm (по данным XFree86 3.1.2G) не распознает
мерцание или режим невидимости SGRs. Версии X11R6 не
распознают цветоустановки SGR. Все другие ECMA-48
CSI-последовательности, распознаваемые Linux, также
распознаются xterm и наоборот. Программа xterm будет
распознавать все последовательности частного режима DEC,
перечисленные выше, но не будут распознавать ни одну из
последовательностей частного режима в Linux. Для
обсуждения последовательностей частного режима для xterm
обратитесь к документу XtermControlSequences, созданного
Edward Moy и Stephen Gildea и сопровождаемого
дистрибутивом X Window System.

НАЙДЕННЫЕ ОШИБКИ
В версии 2.0.23 набор CSI является неправильным и
недейственным, NUL не игнорируется внутри
ESC-последовательностей.

Читайте также: