Coding is one of the highest art forms achieved by mankind; an idea - just an electrical impulse - is made real in an alternate electronic universe; the created idea however, does not have physical form, and yet can change the physical world; it cannot be touched, and yet may touch all mankind.
ANSI/VT100 Terminal Control Escape Sequences
|
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.
In PERL all occurances of <ESC> are replaced by \x1b - where \x indicates that a hexadecimal value will follow, and where 1b is the hexadecimal version of the decimal number 27. Code 27 in turn is the ASCII value for ESCape.
Sample UsageTo clear the screen in C using the ANSI code <ESC>[2J use the following line in your program:
printf ("%c%c%c%c", 27, '[', '2', 'J');
and the screen should clear to the current line. Note that character 27 in the ASCII table is the ESC character; hence the use of '27' above.
To change text colors try this: #includeTo move to the home (top left position) use: #include Device StatusThe following codes are used for reporting terminal/display settings, and vary depending on the implementation:Query Device Code <ESC>[c
Report Device Code <ESC>[{code}0c
Query Device Status <ESC>[5n
Report Device OK <ESC>[0n
Report Device Failure <ESC>[3n
Query Cursor Position <ESC>[6n
Report Cursor Position <ESC>[{ROW};{COLUMN}R
Terminal SetupTheh 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
Enable Line Wrap <ESC>[7h
Disable Line Wrap <ESC>[7l
FontsSome 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>(
Font Set G1 <ESC>)
Cursor ControlCursor Home <ESC>[{ROW};{COLUMN}H
Cursor Up <ESC>[{COUNT}A
Cursor Down <ESC>[{COUNT}B
Cursor Forward <ESC>[{COUNT}C
Cursor Backward <ESC>[{COUNT}D
Force Cursor Position <ESC>[{ROW};{COLUMN}f
Save Cursor <ESC>[s
Unsave Cursor <ESC>[u
Save Cursor & Attrs <ESC>7
Restore Cursor & Attrs <ESC>8
ScrollingScroll Screen <ESC>[r
Scroll Screen <ESC>[{start};{end}r
Scroll Down <ESC>D
Scroll Up <ESC>M
Tab ControlSet Tab <ESC>H
Clear Tab <ESC>[g
Clear All Tabs <ESC>[3g
Erasing TextErase End of Line <ESC>[K
Erase Start of Line <ESC>[1K
Erase Line <ESC>[2K
Erase Down <ESC>[J
Erase Up <ESC>[1J
Erase Screen <ESC>[2J
PrintingSome terminals support local printing:Print Screen <ESC>[i
Print Line <ESC>[1i
Stop Print Log <ESC>[4i
Start Print Log <ESC>[5i
Define KeySet Key Definition <ESC>[{key};"{string}"p
Set Display AttributesSet Attribute Mode <ESC>[{attr1};...;{attrn}m
[ Top | Status | Setup | Fonts | Cursor | Scrolling | Tabs | Erasing | Printing | Keyboard | Colours ] |