ANSI ESCAPE SEQUENCES
==============================================================================
Wherever you see '#', that should be replaced by the appropriate number.
ESC code sequence Function
------------------- ---------------------------
Cursor Controls:
ESC[#;#H or ESC[#;#f Moves cusor to line #, column #
ESC[#A Moves cursor up # lines
ESC[#B Moves cursor down # lines
ESC[#C Moves cursor forward # spaces
ESC[#D Moves cursor back # spaces
ESC[#;#R Reports current cursor line & column
ESC[s Saves cursor position for recall later
ESC[u Return to saved cursor position
Erase Functions:
ESC[2J Clear screen and home cursor
ESC[K Clear to end of line
Set Graphics Rendition:
ESC[#;#;....;#m Set display attributes where # is
0 for normal display
1 for bold on
4 underline (mono only)
5 blink on
7 reverse video on
8 nondisplayed (invisible)
30 black foreground
31 red foreground
32 green foreground
33 yellow foreground
34 blue foreground
35 magenta foreground
36 cyan foreground
37 white foreground
40 black background
41 red background
42 green background
43 yellow background
44 blue background
45 magenta background
46 cyan background
47 white background
ESC[=#;7h or Put screen in indicated mode where # is
ESC[=h or 0 for 40 x 25 black & white
ESC[=0h or 1 for 40 x 25 color
ESC[?7h 2 for 80 x 25 b&w
3 for 80 x 25 color
4 for 320 x 200 color graphics
5 for 320 x 200 b & w graphics
6 for 640 x 200 b & w graphics
7 to wrap at end of line
ESC[=#;7l or ESC[=l or Resets mode # set with above command
ESC[=0l or ESC[?7l
Keyboard Reassignments:
ESC[#;#;...p Keyboard reassignment. The first ASCII
or ESC["string"p code defines which code is to be
or ESC[#;"string";#; changed. The remaining codes define
#;"string";#p what it is to be changed to.
E.g. Reassign the Q and q keys to the A and a keys (and vice versa).
ESC [65;81p A becomes Q
ESC [97;113p a becomes q
ESC [81;65p Q becomes A
ESC [113;97p q becomes a
E.g. Reassign the F10 key to a DIR command.
ESC [0;68;"dir";13p The 0;68 is the extended ASCII code
for the F10 key and 13 is the ASCII
code for a carriage return.
Other function key codes F1=59,F2=60,F3=61,F4=62,F5=63
F6=64,F7=65,F8=66,F9=67,F10=68
CONTROL SEQUENCE SUMMARY
* For additional information on the DEC VT100 and VT102 terminals, please
consult the VT100 USER GUIDE and VT102 USER GUIDE, published by Digital
Equipment Corporation as part numbers EK-VT100-UG and EK-VT102-UG.
CONTROL CHARACTERS:
------------------
Character
Name Decimal Action Taken
---------------------------------------------------------------
NUL 0 Fill character; ignored on input.
ENQ 5 Transmit answerback message.
BEL 7 Ring the bell.
BS 8 Move cursor left.
HT 9 Move cursor to next tab stop.
LF 10 Line feed; causes print if in autoprint.
VT 11 Same as LF.
FF 12 Same as LF.
CR 13 Move cursor to left margin or newline.
SO 14 Invoke G1 character set.
SI 15 Invoke G0 character set.
XON 17 Resume transmission.
XOFF 19 Halt transmission.
CAN 24 Cancel escape sequence and display checkerboard.
SUB 26 Same as CAN.
ESC 27 Introduce a control sequence.
DEL 127 Fill character; ignored on input.
* All characters less than 32 decimal which are not listed above are ignored.
(** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **)
ANSI MODE SUMMARY:
-----------------
*In ANSI sequences, parameters are given as a string of ASCII digits
('0' - '9') seperated by semicolons. Pn refers to a number whose value
used directly. Ps refers to a number used as a selector.
CURSOR MOVEMENT:
---------------
Cursor Up: Esc [ Pn A
Cursor Down: Esc [ Pn B
Cursor Left: Esc [ Pn C
Cursor Right: Esc [ Pn D
Direct Addressing : Esc [ Pn(row);Pn(col);H or
Esc [ Pn(row);Pn(col);f
ie. (Pascal)
Writeln (Esc,'[',Row:1,';',col:1,';','H');
Index: Esc D
New Line: Esc E
Reverse Line: Esc M
Save cursor & Attributes: Esc 7
Restore cursor & attributes: Esc 8
ERASING:
-------
Cursor to end of line Esc [ K
Beginning of line to cursor Esc [ 1 K
Entire line Esc [ 2 K
Cursor to end of screen Esc [ J
Beginning of screen to cursor Esc [ 1 J
Entire screen Esc [ 2 J
(Some programs expect Esc [ J to always clear the entire
screen, but this does not conform to the standard.)
MODES:
-----
Set with Esc [ Ps h
Reset with Esc [ Ps l
Mode name Ps Set Reset
-------------------------------------------------------------------
Keyboard action 2 Locked Unlocked
Insertion 4 Insert Overwrite
Send - Receive 12 Full Echo
Line feed/New line 20 New line Line feed
Cursor key ?1 Application Cursor
ANSI/VT52 ?2 ANSI VT52
Column ?3 132 80
Scrolling ?4 Smooth Jump
Screen ?5 Reverse Normal
Origin ?6 Relative Absolute
Wraparound ?7 Wrap Truncate
Auto key repeat ?8 Repeating No repeat
Print form feed ?18 Yes No
Print extent ?19 Full screen Scrolling region
Keypad application Esc =
Keypad numeric mode Esc >
EDITING:
-------
Insert line Esc [ Pn L
Delete line Esc [ Pn M
Delete character Esc [ Pn P
Scrolling region Esc [ Pn(top);Pn(bot) r
PRINTING:
--------
Print screen or region Esc [ i
Print cursor line Esc [ ? 1 i
Enter auto print Esc [ ? 5 i
Exit auto print Esc [ ? 4 i
Enter print controller Esc [ 5 i
Exit print controller Esc [ 4 i
LINE SIZE:
---------
The following is a list of the available styles of printing on the
screen. "Yes" in any column means that the option is supported by the escape
code on that line. "No" means that the option is not supported by the escape
code on that line; however, it may, and almost certainly is, supported by
another escape sequence.
Double-height and double-width double the size of the characters in their
respective ways (ie. Double-height is twice as tall as usual). _Line
designates underlining. Blink is for blinking characters. Side is the
orientation of the character. Normal means that there is no orientation.
Top and bottom refers to the position of the character in order to make a
complete character. The top and bottom sequences will be important if you use
the double height option. You will need to print the line twice to get a
complete line. The first printing will print the top part of the characters
and the second printing will print the bottom part.
Inverse refers to the condition of the character. "No" indicates that the
character will be printed in the color it normally is printed in with its usual
backround. "Yes" means that the character will be printed in the backround
color and the character's backround will be the color it is usually printed in.
Shade refers to the brightness of the character. Normal is the standard
brightness of the character. Bright is bold type. Dark is a darker brightness
than usual.
The escape code is the command you would type before the text you want to print
to get the indicated effects. This section was greatly expanded in version 1.1
of this file.
Double Double
Height Width _Line Blink Side Inverse Shade Escape Code
-----------------------------------------------------------------------
No No No No Normal No Normal <ESC>[0m
Yes Yes No No Top No Bright <ESC>#3<ESC>[1m
Yes Yes No No Bottom No Bright <ESC>#4<ESC>[1m
Yes Yes No No Top No Dark <ESC>#3<ESC>[2m
Yes Yes No No Bottom No Dark <ESC>#4<ESC>[2m
Yes Yes No No Top No Normal <ESC>#3<ESC>[3m
Yes Yes No No Bottom No Normal <ESC>#4<ESC>[3m
Yes Yes Yes No Top No Normal <ESC>#3<ESC>[4m
Yes Yes Yes No Bottom No Normal <ESC>#4<ESC>[4m
Yes Yes No Yes Top No Normal <ESC>#3<ESC>[5m
Yes Yes No Yes Bottom No Normal <ESC>#4<ESC>[5m
Yes Yes No No Top Yes Normal <ESC>#3<ESC>[7m
Yes Yes No No Bottom Yes Normal <ESC>#3<ESC>[7m
No Yes No No Normal No Normal <ESC>#6<ESC>[0m
No Yes No No Normal No Bright <ESC>#6<ESC>[1m
No Yes No No Normal No Dark <ESC>#6<ESC>[2m
No Yes Yes No Normal No Normal <ESC>#6<ESC>[4m
No Yes No Yes Normal No Normal <ESC>#6<ESC>[5m
No Yes No No Normal Yes Normal <ESC>#6<ESC>[7m
No No No No Normal No Bright <ESC>#7<ESC>[1m
No No No No Normal No Dark <ESC>#7<ESC>[2m
No No Yes No Normal No Normal <ESC>#7<ESC>[4m
No No No Yes Normal No Normal <ESC>#7<ESC>[5m
No No No No Normal Yes Normal <ESC>#7<ESC>[7m
* Some codes have been eliminated due to a repetition of effects. To the best
of my knowledge, these codes are complete and correct. If you should find
any errors, or you find some new sequences/effects, please inform me.
* <ESC>#3 and <ESC>#4 behave in the same way as <ESC>#3[3m and <ESC>#4[4m.
CHARACTER SETS:
--------------
Character set G0 G1
-----------------------------------------------------
United Kingdom (UK) Esc ( A Esc ) A
United States (US) Esc ( B Esc ) B
Graphics Esc ( 0 Esc ) 0
Default ROM Esc ( 1 Esc ) 1
Alternate ROM Esc ( 2 Esc ) 2
Switch to G0/G1 Esc O Esc N
TAB STOPS:
---------
Set tab at current column Esc H
Clear tab at current column Esc [ g
Clear all tabs Esc [ 3 g
MISCELLANEOUS:
-------------
Hard Reset Esc c
Character attributes Esc [ Ps m
or Esc [ Ps ; Ps ; Ps m
0 - All attributes off
1 - Bold on
4 - Underscore on
5 - Blink on
7 - Reverse on
Programmable LEDs Esc [ Ps q
0 - All LEDs off
(1 - 4) - Turn respective LED on
Fill screen with "E"s (test) Esc # 8
(* ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** *)
NON-VT100 CONTROL SEQUENCES:
----------------------------
*Some VT100 terminal programs also understand a few other escape
sequences than the standard VT100. I cannot guarantee that any of
these nonstandard codes will work with any particular terminal, but
they may be useful if they do work.
Transmit a file Esc { T filenameCR ---> CR = Carriage Return
Receive a file Esc { R filenameCR ---> CR = Carriage Return
Append to a file Esc { A filenameCR ---> CR = Carriage Return
Save collected text Esc { S
Save collected text Esc S
* These sequences will probably be most useful in developing a micro
version of a VT100 emulator or in adapting an existing one.
(* ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** *)
VT52 MODE SUMMARY:
-----------------
Cursor up Esc A
Cursor down Esc B
Cursor right Esc C
Cursor left Esc D
Graphics character set Esc F
ASCII character set Esc G
Home cursor Esc H
Reverse line feed Esc I
Erase to end of screen Esc J
Erase to end of line Esc K
Print cursor line Esc V
Enter print controller Esc W
Exit print controller Esc X
Cursor address Esc Y row col
Identify Esc Z
Print screen Esc ]
Enter auto print Esc ^
Exit auto print Esc -
Alternate keypad Esc =
Numeric keypad Esc >
Enter ANSI mode Esc <
* Row and column numbers are single characters with a bias of 31.
E.g., "$" means row/column 5.)
KEYPAD AND FUNCTION KEY SUMMARY:
-------------------------------
CURSOR CONTROL KEYS:
-------------------
Vt52 ANSI and Cursor Key modes
Arrow Key Mode Reset Set
---------------------------------------------------
Up Esc A Esc [ A Esc O A
Down Esc B Esc [ B Esc O B
Right Esc C Esc [ C Esc O C
Left Esc D Esc [ D Esc O D
AUXILLIARY KEYPAD:
-----------------
VT52 Mode ANSI Mode
Key Numeric Application Numeric Application
----------------------------------------------------------------------
0 0 Esc ? p 0 Esc O p
1 1 Esc ? q 1 Esc O q
2 2 Esc ? r 2 Esc O r
3 3 Esc ? s 3 Esc O s
4 4 Esc ? t 4 Esc O t
5 5 Esc ? u 5 Esc O u
6 6 Esc ? v 6 Esc O v
7 7 Esc ? w 7 Esc O w
8 8 Esc ? x 8 Esc O x
9 9 Esc ? y 9 Esc O y
- - Esc ? m - Esc O m
, , Esc ? l , Esc O l
. . Esc ? n . Esc O n
ENTER ^M Esc ? M ^M Esc O M
PF1 Esc P Esc P Esc O P Esc O P
PF2 Esc Q Esc Q Esc O Q Esc O Q
PF3 Esc R Esc R Esc O R Esc O R
PF4 Esc S Esc S Esc O S Esc O S
VT100 CURRENT STATES:
--------------------
Esc [ c DA:Device Attributes
or
Esc Z DECID:Identify Terminal (ANSI mode)
* For PC/Intercomm and some other emulators,
irrespective of the parameter(s) present, the
response is always
Esc [ ? 6 c
(i.e., a VT102) Other DEC terminals will respond
according to their configuration and mode.
Esc Z Identify (VT52 mode)
* The sequence Esc / Z is always returned.
Esc [ <sol> x DECREQTPARM: Request Terminal Parameters
* <sol> values other than 1 are ignored. Upon
receipt of a <sol> value of 1, the following
response is sent:
Esc[3;<par>;<nbits>;<xspeed>;<rspeed>;1;0x
* Where <par>, <nbits>, <xspeed>, and <rspeed>
are as for VT100s with the following
exceptions:
<nbits> Values of 5 and 6 bits per
character are sent as 7 bits.
<xspeed>,<rspeed>
These two numbers will always
be the same. 9600 baud is
sent for 7200 baud.
Esc [ Ps n DSR: Device Status Report
* Parameter values other than 5, 6, are ignored.
If the parameter value is 5, the sequence
Esc [ O n is returned. If the parameter value is
6, the CPR: Cursor Position Report sequence
Esc [ Pn ; Pn R is returned with the Pn set to
cursor row and column numbers.