January 7

Linux: Terminal Control Escape Sequences

 

[ Status | Setup |
Fonts | Cursor |
Scrolling | Tabs |
Erasing | Printing |
Keyboard | Colours ]

 


Many computer terminals and terminal emulators support colour and
cursor control through a system of escape sequences. One such standard
is commonly referred to as ANSI Colour. Several terminal
specifications are based on the ANSI colour standard, including VT100.

The following is a partial listing of the VT100 control set.

<ESC> represents the ASCII “escape”
character, 0x1B. Bracketed tags represent modifiable decimal
parameters; eg. {ROW} would be replaced by a row
number.


Device Status

The following codes are
used for reporting terminal/display settings, and vary depending on the
implementation:

Query Device Code	<ESC>[c
  • Requests a Report Device Code response from
    the device.
Report Device Code	<ESC>[{code}0c
  • Generated by the device in response to Query Device
    Code
    request.
Query Device Status	<ESC>[5n
  • Requests a Report Device Status response
    from the device.
Report Device OK	<ESC>[0n
  • Generated by the device in response to a Query Device
    Status
    request; indicates that device is functioning
    correctly.
Report Device Failure	<ESC>[3n
  • Generated by the device in response to a Query Device
    Status
    request; indicates that device is functioning
    improperly.
Query Cursor Position	<ESC>[6n
  • Requests a Report Cursor Position response
    from the device.
Report Cursor Position	<ESC>[{ROW};{COLUMN}R
  • Generated by the device in response to a Query Cursor
    Position
    request; reports current cursor position.

Terminal Setup

The
h and l codes are used for
setting terminal/display mode, and vary depending on the implementation.
Line Wrap is one of the few setup codes that tend to be used
consistently:

Reset Device		<ESC>c
  • Reset all terminal settings to default.
Enable Line Wrap	<ESC>[7h
  • Text wraps to next line if longer than the length of the display
    area.
Disable Line Wrap	<ESC>[7l
  • Disables line wrapping.

Fonts

Some terminals support multiple
fonts: normal/bold, swiss/italic, etc. There are a variety of special
codes for certain terminals; the following are fairly standard:

Font Set G0		<ESC>(
  • Set default font.
Font Set G1		<ESC>)
  • Set alternate font.

Cursor Control

Cursor Home 		<ESC>[{ROW};{COLUMN}H
  • Sets the cursor position where subsequent text will begin. If no
    row/column parameters are provided (ie. <ESC>[H),
    the cursor will move to the home position, at the upper left
    of the screen.
Cursor Up		<ESC>[{COUNT}A
  • Moves the cursor up by COUNT rows; the default count is
    1.
Cursor Down		<ESC>[{COUNT}B
  • Moves the cursor down by COUNT rows; the default count is
    1.
Cursor Forward		<ESC>[{COUNT}C
  • Moves the cursor forward by COUNT columns; the
    default count is 1.
Cursor Backward		<ESC>[{COUNT}D
  • Moves the cursor backward by COUNT columns; the
    default count is 1.
Force Cursor Position	<ESC>[{ROW};{COLUMN}f
  • Identical to Cursor Home.
Save Cursor		<ESC>[s
  • Save current cursor position.
Unsave Cursor		<ESC>[u
  • Restores cursor position after a Save Cursor.
Save Cursor & Attrs	<ESC>7
  • Save current cursor position.
Restore Cursor & Attrs	<ESC>8
  • Restores cursor position after a Save Cursor.

Scrolling

Scroll Screen		<ESC>[r
  • Enable scrolling for entire display.
Scroll Screen		<ESC>[{start};{end}r
  • Enable scrolling from row {start} to row
    {end}.
Scroll Down		<ESC>D
  • Scroll display down one line.
Scroll Up		<ESC>M
  • Scroll display up one line.

Tab Control

Set Tab 		<ESC>H
  • Sets a tab at the current position.
Clear Tab 		<ESC>[g
  • Clears tab at the current position.
Clear All Tabs 		<ESC>[3g
  • Clears all tabs.

Erasing Text

Erase End of Line	<ESC>[K
  • Erases from the current cursor position to the end of the current
    line.
Erase Start of Line	<ESC>[1K
  • Erases from the current cursor position to the start of the
    current line.
Erase Line		<ESC>[2K
  • Erases the entire current line.
Erase Down		<ESC>[J
  • Erases the screen from the current line down to the bottom of the
    screen.
Erase Up		<ESC>[1J
  • Erases the screen from the current line up to the top of the
    screen.
Erase Screen		<ESC>[2J
  • Erases the screen with the background colour and moves the cursor
    to home.

Printing

Some terminals support local
printing:

Print Screen		<ESC>[i
  • Print the current screen.
Print Line		<ESC>[1i
  • Print the current line.
Stop Print Log		<ESC>[4i
  • Disable log.
Start Print Log		<ESC>[5i
  • Start log; all received text is echoed to a printer.

Define Key

Set Key Definition	<ESC>[{key};"{string}"p
  • Associates a string of text to a keyboard key. {key}
    indicates the key by its ASCII value in decimal.

Set Display Attributes

Set Attribute Mode	<ESC>[{attr1};...;{attrn}m
  • Sets multiple display attribute settings. The following lists
    standard attributes:

    0	Reset all attributes
    1	Bright
    2	Dim
    4	Underscore
    5	Blink
    7	Reverse
    8	Hidden
    
    	Foreground Colours
    30	Black
    31	Red
    32	Green
    33	Yellow
    34	Blue
    35	Magenta
    36	Cyan
    37	White
    
    	Background Colours
    40	Black
    41	Red
    42	Green
    43	Yellow
    44	Blue
    45	Magenta
    46	Cyan
    47	White

[ Top | Status |
Setup | Fonts |
Cursor | Scrolling |
Tabs | Erasing |
Printing | Keyboard |
Colours ]

-By: John



Copyright 2021. All rights reserved.

Posted January 7, 2013 by Timothy Conrad in category "Linux

About the Author

If I were to describe myself with one word it would be, creative. I am interested in almost everything which keeps me rather busy. Here you will find some of my technical musings. Securely email me using - PGP: 4CB8 91EB 0C0A A530 3BE9 6D76 B076 96F1 6135 0A1B