ANSI Escape Code - CSI Codes

CSI Codes

The general structure of most ANSI escape sequences is CSI n1 ; n2... letter. The final byte, modified by private mode characters and trailing intermediate characters, specifies the command. The numbers are optional parameters. The default value used for omitted parameters varies with the command, but is usually 1 or 0. If trailing parameters are omitted, the trailing semicolons may also be omitted.

The final byte is technically any character in the range 64 to 126 (hex 0x40 to 0x7e, ASCII @ to ~), and may be modified with leading intermediate bytes in the range 32 to 47 (hex 0x20 to 0x2f).

The colon (0x3a) is the only character not a part of the general sequence; it was left for future standardization, so any sequence containing it should be ignored. Although multiple private mode characters or trailing intermediates are permitted, there are no such known usages.

If there are any leading private mode characters, the main body of the sequence could theoretically contain any order of characters 0x30 – 0x3f instead of a well-formed semicolon-separated list of numbers, but all known terminals are nice and just use them as a flag. Sequences are also private if the final byte is in the range 112 to 126 (hex 0x70 to 0x7e, ASCII p to ~).

Examples of private escape codes include the DECTCEM (DEC text cursor enable mode) shown below. It was first introduced for the VT-300 series of video terminals.

The existence of a C0 control, DEL (0x7f), or a high characters is undefined. Typically, implementations will either cancel the sequence or execute the control and then continue parsing the CSI sequence.

Some ANSI escape sequences (not a complete list)
Code Name Effect
CSI n A CUU – Cursor Up Moves the cursor n (default 1) cells in the given direction. If the cursor is already at the edge of the screen, this has no effect.
CSI n B CUD – Cursor Down
CSI n C CUF – Cursor Forward
CSI n D CUB – Cursor Back
CSI n E CNL – Cursor Next Line Moves cursor to beginning of the line n (default 1) lines down.
CSI n F CPL – Cursor Previous Line Moves cursor to beginning of the line n (default 1) lines up.
CSI n G CHA – Cursor Horizontal Absolute Moves the cursor to column n.
CSI n ; m H CUP – Cursor Position Moves the cursor to row n, column m. The values are 1-based, and default to 1 (top left corner) if omitted. A sequence such as CSI ;5H is a synonym for CSI 1;5H as well as CSI 17;H is the same as CSI 17H and CSI 17;1H
CSI n J ED – Erase Data Clears part of the screen. If n is zero (or missing), clear from cursor to end of screen. If n is one, clear from cursor to beginning of the screen. If n is two, clear entire screen (and moves cursor to upper left on MS-DOS ANSI.SYS).
CSI n K EL – Erase in Line Erases part of the line. If n is zero (or missing), clear from cursor to the end of the line. If n is one, clear from cursor to beginning of the line. If n is two, clear entire line. Cursor position does not change.
CSI n S SU – Scroll Up Scroll whole page up by n (default 1) lines. New lines are added at the bottom. (not ANSI.SYS)
CSI n T SD – Scroll Down Scroll whole page down by n (default 1) lines. New lines are added at the top. (not ANSI.SYS)
CSI n ; m f HVP – Horizontal and Vertical Position Moves the cursor to row n, column m. Both default to 1 if omitted. Same as CUP
CSI n m SGR – Select Graphic Rendition Sets SGR parameters, including text color. After CSI can be zero or more parameters separated with ;. With no parameters, CSI m is treated as CSI 0 m (reset / normal), which is typical of most of the ANSI escape sequences.
CSI 6 n DSR – Device Status Report Reports the cursor position to the application as (as though typed at the keyboard) ESC[n;mR, where n is the row and m is the column. (May not work on MS-DOS.)
CSI s SCP – Save Cursor Position Saves the cursor position.
CSI u RCP – Restore Cursor Position Restores the cursor position.
CSI ?25l DECTCEM Hides the cursor. (Note: the trailing character is lowercase L.)
CSI ?25h DECTCEM Shows the cursor.
SGR (Select Graphic Rendition) parameters
Code Effect Note
0 Reset / Normal all attributes off
1 Bright (increased intensity) or Bold
2 Faint (decreased intensity) not widely supported
3 Italic: on not widely supported. Sometimes treated as inverse.
4 Underline: Single
5 Blink: Slow less than 150 per minute
6 Blink: Rapid MS-DOS ANSI.SYS; 150 per minute or more; not widely supported
7 Image: Negative inverse or reverse; swap foreground and background (reverse video)
8 Conceal not widely supported
9 Crossed-out Characters legible, but marked for deletion. Not widely supported.
10 Primary(default) font
11–19 n-th alternate font Select the n-th alternate font. 14 being the fourth alternate font, up to 19 being the 9th alternate font.
20 Fraktur hardly ever supported
21 Bright/Bold: off or Underline: Double bold off not widely supported, double underline hardly ever
22 Normal color or intensity neither bright, bold nor faint
23 Not italic, not Fraktur
24 Underline: None not singly or doubly underlined
25 Blink: off
26 Reserved
27 Image: Positive
28 Reveal conceal off
29 Not crossed out
30–37 Set text color 30 + x, where x is from the color table below
38 Set xterm-256 text color next arguments are 5;x where x is color index (0..255)
39 Default text color implementation defined (according to standard)
40–47 Set background color 40 + x, where x is from the color table below
48 Set xterm-256 background color next arguments are 5;x where x is color index (0..255)
49 Default background color implementation defined (according to standard)
50 Reserved
51 Framed
52 Encircled
53 Overlined
54 Not framed or encircled
55 Not overlined
56–59 Reserved
60 ideogram underline or right side line hardly ever supported
61 ideogram double underline or double line on the right side hardly ever supported
62 ideogram overline or left side line hardly ever supported
63 ideogram double overline or double line on the left side hardly ever supported
64 ideogram stress marking hardly ever supported
90–99 Set foreground color, high intensity aixterm (not in standard)
100–109 Set background color, high intensity aixterm (not in standard)

Read more about this topic:  ANSI Escape Code

Famous quotes containing the word codes:

    We must trust infinitely to the beneficent necessity which shines through all laws. Human nature expresses itself in them as characteristically as in statues, or songs, or railroads, and an abstract of the codes of nations would be an abstract of the common conscience.
    Ralph Waldo Emerson (1803–1882)