These sequences are usually implemented in the terminal emulator in the system's BIOS (?) and
are available in DOS, £inux console, windows command modes and mac os terminal.
In *nix systems, termcap, terminfo and
curses are involved in displaying character sequences.
In this document the symbol £ indicates sequences supported by £inux TERM=ansi
From the bash command line echo $'\e'
outputs the
␛ lead-in required by many ANSI terminal control strings.
echo $'\e'#5abcdefg echo $'\e'#6abcdefg
Definitions:
Control Character | A single character with an ASCII code within the ranges: Escape Sequence | 2 or 3 character string staring
| Control Sequence A string starting with | CSI ( 9B ) or
with ␛[ (Left-Bracket) and terminated by an alphabetic character.Any number of parameter characters (digits 0 to 9, semicolon, and question mark) may appear within the Control Sequence. The terminating character may be preceded by an intermediate character (such as space). |
Character classifications£:
In this document, the terms uppercase, lowercase, and alphabetics include more characters than just A to Z.
ANSI X3.41-1974 introduces an 8-bit ASCII character set (C1 and G1
in addition to the existing C0 and G0).
It describes how to use the 8-bit features in a 7-bit environment.
Defines the format of all ESCape
sequences, but only the 3-character ones with a parameter character in the middle.
HThese instruct the terminal how to interpret the C0, G0, C1,
and G1 characters (such as by selecting different character-set ROMs).
NAPLPS does videotex graphics by redefining the C1 set and selecting alternate G0, G1, G2, and G3 sets.
See the February 1983 issue of BYTE magazine for details.
ANSI X3.4-1977 defined the 7-bit ASCII character set (C0 and G0)
in 1968, revised in 1977, and explains the decisions made in laying out the ASCII code.
It explains why ANSI chose to make ASCII incompatible with EBCDIC in order to make it self-consistant.
ANSI X3.64-1979 defines the remaining ESCape sequences. the C1
control characters, and specifies that certain two-character ESCape sequences
in the 7-bit environment are to act exactly like the 8-bit C1 control set.
X3.64 introduces a Control-Sequence, which starts with CSI
character, has an indefinite length, and is terminated by an alphabetic
character. The VT100 was one of the first terminals to implement this standard.
ECMA-48 (aka "ISO 6429")
XTERM
octal
rangeHex
range
C
SPACE
Intermediate
!"#$%&'()*+,-./
Parameters
Alphabetic
(all of upper and lower case)
Uppercase
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
Lowercase
`abcdefghijlkmnopqrstuvwxyz{|}~
Delete
ignored
C1 Control
(lead in with ␛ ) 32 additional control characters
G1 Displayable
A1-FE 94 additional displayable characters
Special
Same as SPACE and DELETE
ESCape Sequence
Starts with the ␛ character ( 1B hex).
The length depends on the character that immediately follows the ␛.
If the next character is:
Interpret the character, then resume processing the sequence.
Example: CR, LF, XON, and XOFF work as normal within an ESCape sequence.
Intermediate Expect zero or more intermediates, a parameter terminates
a private function, an alphabetic terminates a standard sequence.
Example: ␛(A
defines standard character set, ␛(0 a DEC set.
Parameter End of a private 2-character escape sequence.
Example: ␛=
sets special keypad mode, ␛ > clears it.
Uppercase Translate it into a C1 control character and act on it.
Example: ␛ D
does indexes down, ␛M indexes up. (CSI is special)
Lowercase End of a standard 2-character escape sequence.
Example: ␛ c
resets the terminal.
Delete Ignore it, and continue interpreting the ESCape sequence
C1 and G1: Treat the same as their 7-bit counterparts
Control Sequence
The terminal should expect any number of numeric parameters, separated by semicolons ( CSI
, the Control Sequence Introducer.
the C0 two-character sequence ESC[
or
the 8-bit C1 code [
.
3B
).
Only after the terminating alphabetic character is received should the terminal act on the Control Sequence.
(from ANSI X3.4-1977)
Oct Hex
control Name
* functions used in DEC VT series or LA series terminals
00 @ NUL * Null filler
001 01 A SOH Start of Header
002 02 B STX Start of Text, implied end of header
003 03 C ETX End of Text, respond with ACK or NAK
004 04 D EOT End of Transmission
005 05 E ENQ * Enquiry, ANSWER-BACK ID
(load answerback esc^mmmmmCTRLY; not £inux)
006 06 F ACK Acknowledge, response to ETX
007 07 G BEL * Bell
010 08 H BS * Backspace
011 09 I HT * Horizontal Tabulation, move
to next TAB position
012 0A J LF * Linefeed, move
to same position on next line (see also NL)
013 0B K VT * Vertical Tabulation, move
to next predetermined line
014 0C L FF * Form Feed, slew
to next form or page
015 0D M CR * Carriage Return, move
to first character of current line
016 0E N SO * Shift Out, switch to G1 (other half of character set)
017 0F O SI * Shift In , switch to G 020 10 P DLE Data Link Escape, interpret next control character specially
021 11 Q XON * (DC1) resume transmitting
022 12 R DC2 (DC2) activate reader
023 13 S XOFF * (DC3) pause transmitting
024 14 T DC4 (DC4) deactivate reader
025 15 U NAK Negative Acknowledge, with ETX and ACK
026 16 V SYN Synchronous Idle, maintain timing in Sync communication
027 17 W ETB End of Transmission block
030 18 X CAN * Cancel abort current escape sequence
031 19 Y EM End of Medium
032 1A Z SUB * Substitute (Display parity errors)
033 1B [ ESC * Prefix to an ESCape sequence
034 1C \ FS File Separator
035 1D ] GS Group Separator
036 1E ^ RS * Record Separator (sent by VT132 in block-transfer mode)
037 1F _ US Unit Separator
040 20 SP * Space
177 7F DEL * Delete, ignored by terminal
If the first character after CSI
is one of " < = >
(3C-3F
),
it is to be interpreted according to private standards (such as setting and resetting modes not defined by ANSI).
C1 set of 8-bit control characters (from ANSI X3.64-1979)
Lead in with ESC ␛ -->
usual graphic
t
e
x
Oct Hex t Name * * marks function used in DEC VT series or LA series terminals)
--- -- - --- - --------------------------------------------------------------
200 80 @ Reserved for future standardization
201 81 A Reserved
202 82 B Reserved
203 83 C Reserved
204 84 D IND * Index,
move
s down same column regardless of NL
205 85 E NEL * New Line, move
s dowe one line and to first column (CR+LF)
206 86 F SSA Start of Selected Area to be sent to auxiliary output device
207 87 G ESA End
210 88 H HTS * Horizontal Tabulation Set at current position
211 89 I HTJ Horizontal Tab Justify, move
s string to next tab position
212 8A J VTS Vertical Tabulation Set at current line
213 8B K PLD Partial Line Down (subscript)
214 8C L PLU Partial Line Up (superscript)
215 8D M RI * Reverse Index, go up one line, reverse scroll if necessary
216 8E N SS2 * Single Shift(i.e. next character) to G2 (i.e. alternate graphic rendition)
217 8F O SS3 * Single Shift to G3 (VT100 uses this for sending PF keys)
220 90 P DCS * Device Control String, terminated by ST (VT125 enters graphics)
221 91 Q PU1 Private Use 1
222 92 R PU2 Private Use 2
223 93 S STS Set Transmit State
224 94 T CCH Cancel CHaracter, ignore previous character
225 95 U MW Message Waiting, turns on an indicator on the terminal
226 96 V SPA Start of Protected Area
227 97 W EPA End " "
230 98 X SOS Reserved for for future standard (Start of string)
231 99 Y Reserved
232 9A Z * DECID (response VT102:ESC [ ? 6 c
233 9B [ CSI * Control Sequence Introducer
234 9C \ ST * String Terminator (VT125 exits graphics)
235 9D ] OSC£inux Operating System Command (reprograms intelligent terminal)
236 9E ^ PM Privacy Message (password verification), terminated by ST
237 9F _ APC Application Program Command (to word processor), term by ST
£inux
ESC]0 Operating System Command
ESC]0;stringBEL Set icon name and window title to string
ESC]1;stringBEL Set icon name to string
ESC]2;stringBEL Set window title to string
ESC]P nrrggbb
ESC]R reset palette
Character set selection sequences
(from ANSI X3.41-1974)
All are 3 characters long (including the ESCape).
Alphabetic characters as 3rd character are defined by ANSI,
parameter characters as 3rd character may be interpreted differently by each terminal manufacturer.
t
e
x
Oct Hex t example x'
Private two-character escape sequences (allowed by ANSI X3.41-1974) These can be defined differently by each terminal manufacturer.
1B2330' ESC #3
set DoubleHeight top half (send bottom half next)
--- -- -- - ------------------------------------------------------------------
040 20 ANNOUNCER - Determines whether to use 7-bit or 8-bit ASCII
A G0 only will be used. Ignore SI, SO, and G1. (Graphic characters)
B G0 and G1 used internally. SI and SO affect G0, Ignore G1
C G0 and G1 in an 8-bit only environment. Ignore SI and SO
D G0 and G1 are used, SI and SO affect G0.
E
F * 7-bit transmission, VT240/PRO350 sends CSI as two characters ESC [
G * 8-bit transmission, VT240/PRO350 sends CSI as single 8-bit character
L ANSI conformance level 1
M 2 dpANS x3.134.1
N 3
041 21 ! Select C0 control set (choice of 63 standard, 16 private)
042 22 " Select C1 control set (choice of 63 standard, 16 private)
043 23 # Translate next character to a special single character
#3 * DECDHL1 - Double height line, top half
#4 * DECDHL2 - Double height line, bottom half
echo $'\e'#3abcdefg; echo $'\e'#4abcdefg ( OK on Mac os in terminal)
abcdefg
#5 * DECSWL - Single width line
#6 * DECDWL - Double width line
echo $'\e'#5bcdefg;
echo $'\e'#6bcdefg;
abcdefg
#7 * DECHCP - Make a hardcopy of the graphics screen (GIGI,VT125,VT241)
#8£* DECALN - Alignment display, fill screen with "E" to adjust focus EEEEE
044 24 $ MULTIBYTE CHARACTERS - Displayable characters require 2-bytes each
045 25 % SPECIAL INTERPRETATION - Such as 9-bit data
% Start sequence selecting character set (£)
% @ Select default (ISO 646 / ISO 8859-1)
% G Select UTF-8
% 8 Select UTF-8 (obsolete)
047 27 ' Reserved for future standardization
050 28 ( * SCS - Select G0 character set (choice of 63 standard, 16 private)
(0 £ DEC VT100 line drawing set (affects lowercase characters)
(1 * DEC Alternate character ROM set (RAM set on GIGI and VT220)
▒␉␌␍␊° ±␋┘┐┌└╋-_-_-_┣┫┻┳ £inux
abcdef ghijklmnopqrstuvwxyz0|}
(2 * DEC Alternate character ROM set with line drawing
(5 * DEC Finnish on LA100
(C * ISO Finnish on LA120
(6 * DEC Norwegian/Danish on LA100
(E * ISO Norwegian/Danish on LA120
(7 * DEC Swedish on LA100
(H * ISO Swedish on LA120
(9 * DEC French Canadian
(R * ISO French on LA100,LA120
(< * DEC supplemental graphics (everything not in USASCII)
(A * UKASCII (British pound sign)
(B * USASCII (American pound sign)
(K * ISO German on LA100,LA120
(Y * ISO Italian on LA100
(Z * ISO Spanish on LA100
(< * DEC supplementary char set VT200
£inux
( B Select default (ISO 8859-1 mapping)
( 0 Select VT100 graphics mapping
( U Select null mapping - straight to character ROM
( K Select user mapping - the map that is loaded by the utility mapscrn(8).
051 29 ) * SCS - Select G1 character set (choice of 63 standard, 16 private) (same character sets as listed under G0)
052 2A * * SCS - Select G2 character set (same character sets as listed under G0)
053 2B + * SCS - Select G3 character set (same character sets as listed under G0)
054 2C , SCS - Select G0 character set (additional 63+16 sets)
055 2D - SCS - Select G1 character set (additional 63+16 sets)
056 2E . SCS - Select G2 character set
057 2F / SCS - Select G3 character set Oct Hex
--- -- - - ------------------------------------------------------------------
060 30 0
061 31 1 DECGON - graphics on VT105, DECHTS horiz tab set for LA34/LA120
062 32 2 DECGOFF -graphics off VT105, DECCAHT clear all horz tabs LA34/LA120
063 33 3 DECVTS - set vertical tab for LA34/LA120
064 34 4 DECCAVT - clear all vertical tabs for LA34/LA120
065 35 5 * DECXMT - Host requests that VT132 transmit as if ENTER were pressed
066 36 6 DECBI - back index
067 37 7 * DECSC - Save cursor position and character attributes
070 38 8 * DECRC - Restore cursor and attributes to previously saved position
071 39 9 DECFI - forwared index
072 3A :
073 3B ;
074 3C < * DECANSI - Switch from VT52 mode to VT100 mode
075 3D = * DECKPAM - Set keypad to applications mode (ESCape instead of digits)
076 3E > * DECKPNM - Set keypad to numeric mode (digits intead of ESCape seq)
077 3F ?
DCS Device Control Strings used by DEC terminals (ends with ST)
Pp Start ReGIS graphics (VT125, GIGI, VT240, PRO350)
Pq Start SIXEL graphics (screen dump to LA34, LA100, screen load to VT125)
Pr SET-UP data for GIGI, $PrVC0$\ disables both visible cursors.
Ps Reprogram keys on the GIGI, $P0sDIR<<CR>$\ makes keypad 0 send "DIR<CR>"
0-9=digits on keypad, 10=ENTER, 11=minus, 12=comma, 13=period,
14-17=PF1-PF4, 18-21=cursor keys. Enabled by $[?23h (PK1).
Pt Start VT105 graphics on a VT125
Standard two-character escape sequences (defined by ANSI X3.64-1979)
100 40 @ See description of C1 control characters
An ESCape followed by one of these uppercase characters is translated
to an 8-bit C1 control character before being interpreted.
133 5B [ CSI - Control Sequence Introducer
136 5E ] OSC (£inux Operating system command)
␛]P nrrggbb: set palette, with parameter given in 7 hex digits
n is the color (0-15), and rrggbb indicates the red/green/blue values (0-255).
␛]R: reset palette
137 5F _ See description of C1 control characters
220 90 P DCS - Device Control String, terminated by ST - see table above.
Indepenent control functions (from Appendix E of X3.64-1977).
These four controls have the same meaning regardless of the current definition of the C0 and C1 control sets.
Each control is a two-character ESCape sequence, the 2nd is lowercase.
Oct Hex * (* marks function used in DEC VT series or LA series terminals)
--- -- - - --------------------------------------------------------------------
140 60 ` DMI - Disable Manual Input
141 61 a INT - INTerrupt the terminal and do special action
142 62 b EMI - Enable Manual Input
143 63 c * RIS - Reset to Initial State (VT100 does a power-on reset)
... The remaining lowercase characters are reserved by ANSI.
153 6B k NAPLPS lock-shift G1 to GR
154 6C l NAPLPS lock-shift G2 to GR
155 6D m NAPLPS lock-shift G3 to GR
156 6E n * LS2 - Shift G2 to GL (extension of SI) VT240,NAPLPS
157 6F o * LS3 - Shift G3 to GL (extension of SO) VT240,NAPLPS
... The remaining lowercase characters are reserved by ANSI.
174 7C | * LS3R - lock-shift G3 to GR VT240
175 7D } * LS2R - lock-shift G2 to GR VT240
176 7E ~ * LS1R - lock-shift G1 to GR VT240
Control Sequences (defined by ANSI X3.64-1979)
*nix shell command: ESC[
(CSI, 1B 5B) and terminated by an alphabetic character (100 to 176 octal, 40 to 7E hex).
/
(40 to 57 octal, 20 to 2F hex)
0
?
(60 to 77 octal, 30 to 3F hex, including digits and semicolon).
Parameters consist of zero or more decimal numbers separated by semicolons.
Leading zeros are optional, leading blanks are not allowed.
If no digits precede the final character, the default parameter is used.
Many functions treat a parameter of 0 as if it were 1.
echo $'\e'
can be used as the ESC
lead-in
required by many ANSI terminal control
Control Sequences with intermediate characters (from ANSI X3.64-1979).
Note that there is a SPACE character before the terminating alphabetic.
Oct Hex
--- -- - - --------------------------------------------------------------------
100 40 @ SL - Scroll Left
[4 @
move
everything over 4 columns, 4 new columns at right
101 41 A SR - Scroll Right
[2 A move
everything over 2 columns, 2 new columns at left
102 42 B GSM - Graphic Size Modification
[110;50 B Make 110% high, 50% wide
103 43 C GSS - Graphic Size Selection
[120 C Make characters 120 decipoints (1/6 inch) high
104 44 D FNT - FoNT selection (used by SGR, [10m thru [19m)
[0;23 D Make primary font be registered font #23
105 45 E TSS - Thin Space Specification
[36 E Define a thin space to be 36 decipoints (1/20 inch)
106 46 F JFY - JustiFY, done by the terminal/printer
[0 F No justification
[1 F Fill, bringing words up from next line if necessary
[2 F Interword spacing, adjust spaces between words
[3 F Letter spacing, adjust width of each letter
[4 F Use hyphenation
[5 F Flush left margin
[6 F Center following text between margins (until [0 E)
[7 F Flush right margin
[8 F Italian form (underscore instead of hyphen)
107 47 G SPI - SPacing Increment (in decipoints)
[120;72 G 6 per inch vertical, 10 per inch horizontal
110 48 H QUAD- Do quadding on current line of text (typography)
[0 H Flush left, [1 H Flush left and fill with leader
[2 H Center, [3 H Center and fill with leader
[4 H Flush right, [5 H Flush right and fill with leader
111 49 I Reserved for future standardization
157 67 o Reserved for future standardization
160 70 p Private use
..71-7D. May be defined by the printer manufacturer
176 7E ~ Private use
177 7F DELETE is always ignored
Minimum requirements for VT100 emulation:
The software should be capable of handling strings with 16 numeric parameters
with values in the range of 0 to 255.
[A
move
cursor up one row, stop if a top of screen
[B move
cursor down one row, stop if at bottom of screen
[C move
cursor forward one column, stop if at right edge of screen
[D move
cursor backward one column, stop if at left edge of screen
[H Home to row 1 column 1 (also [1;1H)
[J Clear from current position to bottom of screen
[K Clear from current position to end of line
[24;80H Position to line 24 column 80 (any line 1 to 24, any column 1 to 132)
[0m Clear attributes to normal characters
[7m Add the inverse video attribute to succeeding characters
[0;7m Set character attributes to inverse video only
It must be possible to enter ESC, TAB, BS, DEL, and LF from the keyboard.
[A Sent by the up-cursor key (alternately ESC O A)
[B Sent by the down-cursor key (alternately ESC O B)
[C Sent by the right-cursor key (alternately ESC O C)
[D Sent by the left-cursor key (alternately ESC O D)
OP PF1 key sends ESC O P
OQ PF2 key sends ESC O Q
OR PF3 key sends ESC O R
OS PF3 key sends ESC O S
[c Request for the terminal to identify itself
[?1;0c VT100 with memory for 24 by 80, inverse video character attribute
[?1;2c VT100 capable of 132 column mode, with bold+blink+underline+inverse
the limited scrolling region.
The latter is needed to do insert/delete line functions without rewriting
the screen.
[0J erase from current position to bottom of screen inclusive
[1J erase from top of screen to current position inclusive
[2J erase entire screen (without moving the cursor)
[0K erase from current position to end of line inclusive
[1K erase from beginning of line to current position inclusive
[2K erase entire line (without moving cursor)
£ [12;24r Set scrolling region to lines 12 thru 24.
If a linefeed or an INDex is received while on line 24, the former line 12 is deleted
and rows 13-24 move
up.
If a RI (reverse Index) is received while
on line 12, a blank line is inserted there as rows 12-13 move
down.
All VT100 compatible terminals (except GIGI) have this feature.
ESC Set numeric keypad to applications mode
ESC > Set numeric keypad to numbers mode
OA Up-cursor key sends ESC O A after ESC ESC [ ? 1 h
OB Down-cursor key sends ESC O B " " "
OC Right-cursor key sends ESC O B " " "
OB Left-cursor key sends ESC O B " " "
OM ENTER key sends ESC O M after ESC =
Ol COMMA on keypad sends ESC O l " " (that's lowercase L)
Om MINUS on keypad sends ESC O m " "
Op ZERO on keypad sends ESC O p " "
Oq ONE on keypad sends ESC O q " "
Or TWO on keypad sends ESC O r " "
Os THREE on keypad sends ESC O s " "
Ot FOUR on keypad sends ESC O t " "
Ou FIVE on keypad sends ESC O u " "
Ov SIX on keypad sends ESC O v " "
Ow SEVEN on keypad sends ESC O w " "
Ox EIGHT on keypad sends ESC O x " "
Oy NINE on keypad sends ESC O y " "
#3 Top half of a double-width double-height line
#4 Bottom half of a double-width double-height line
#5 Make line single-width (lines are set this way when cleared by ESC [ J)
#6 Make line double-width normal height (40 or 66 characters)
can do a full-screen dump to the printer (in text mode), then it should identify itself as a VT102
[c Request for the terminal to identify itself
[?6c VT102 (printer port, 132 column mode, and ins/del standard)
[1@ Insert a blank character position (shift line to the right)
[1P Delete a character position (shift line to the left)
[1L Insert blank line at current row (shift screen down)
[1M Delete the current line (shift screen up)
[4h Set insert mode, new characters shove existing ones to the right
[4l Reset insert mode, new characters replace existing ones
[0i Print screen (all 24 lines) to the printer
[4i All received data goes to the printer (nothing to the screen)
[5i All received data goes to the screen (nothing to the printer)
see XTerm Control Sequences
The VT100 USER GUIDE and ANSI standard X3.64-1979 both list the ANSI ESCape sequences in alphabetic order by mnemonic,
but do not have a have a cross reference in order by ASCII code.
This document lists the combination of all definitions from the three ANSI standards in numeric order.
For a description of the advantages of using these standards, see the article "Toward
Standardized Video Terminals" in the April-1984 issue of BYTE magazine.
See also
Console Codes linux Man page