summaryrefslogtreecommitdiffstats
path: root/man4/console_codes.4
diff options
context:
space:
mode:
Diffstat (limited to 'man4/console_codes.4')
-rw-r--r--man4/console_codes.4811
1 files changed, 0 insertions, 811 deletions
diff --git a/man4/console_codes.4 b/man4/console_codes.4
deleted file mode 100644
index afc8c70..0000000
--- a/man4/console_codes.4
+++ /dev/null
@@ -1,811 +0,0 @@
-'\" t
-.\" Copyright (c) 1996 Andries Brouwer <aeb@cwi.nl>, Mon Oct 31 22:13:04 1996
-.\"
-.\" SPDX-License-Identifier: GPL-2.0-or-later
-.\"
-.\" This is combined from many sources.
-.\" For Linux, the definitive source is of course console.c.
-.\" About vt100-like escape sequences in general there are
-.\" the ISO/IEC 6429 and ISO/IEC 2022 norms, the descriptions of
-.\" an actual vt100, and the xterm docs (ctlseqs.ms).
-.\" Substantial portions of this text are derived from a write-up
-.\" by Eric S. Raymond <esr@thyrsus.com>.
-.\"
-.\" Tiny correction, aeb, 961107.
-.\"
-.\" 2006-05-27, Several corrections - Thomas E. Dickey
-.\"
-.TH console_codes 4 2024-01-28 "Linux man-pages 6.7"
-.SH NAME
-console_codes \- Linux console escape and control sequences
-.SH DESCRIPTION
-The Linux console implements a large subset of
-the VT102 and ECMA-48 / ISO/IEC\~6429 / ANSI X3.64 terminal controls,
-plus certain private-mode sequences
-for changing the color palette, character-set mapping, and so on.
-In the tabular descriptions below, the second column gives ECMA-48 or DEC
-mnemonics (the latter if prefixed with DEC) for the given function.
-Sequences without a mnemonic are neither ECMA-48 nor VT102.
-.P
-After all the normal output processing has been done, and a
-stream of characters arrives at the console driver for actual
-printing, the first thing that happens is a translation from
-the code used for processing to the code used for printing.
-.P
-If the console is in UTF-8 mode, then the incoming bytes are
-first assembled into 16-bit Unicode codes.
-Otherwise, each byte is transformed according to the current mapping table
-(which translates it to a Unicode value).
-See the \fBCharacter Sets\fP section below for discussion.
-.P
-In the normal case, the Unicode value is converted to a font index,
-and this is stored in video memory, so that the corresponding glyph
-(as found in video ROM) appears on the screen.
-Note that the use of Unicode (and the design of the PC hardware)
-allows us to use 512 different glyphs simultaneously.
-.P
-If the current Unicode value is a control character, or we are
-currently processing an escape sequence, the value will treated
-specially.
-Instead of being turned into a font index and rendered as
-a glyph, it may trigger cursor movement or other control functions.
-See the \fBLinux Console Controls\fP section below for discussion.
-.P
-It is generally not good practice to hard-wire terminal controls into
-programs.
-Linux supports a
-.BR terminfo (5)
-database of terminal capabilities.
-Rather than emitting console escape sequences by hand, you will almost
-always want to use a terminfo-aware screen library or utility such as
-.BR ncurses (3),
-.BR tput (1),
-or
-.BR reset (1).
-.SS Linux console controls
-This section describes all the control characters and escape sequences
-that invoke special functions (i.e., anything other than writing a
-glyph at the current cursor location) on the Linux console.
-.P
-.B "Control characters"
-.P
-A character is a control character if (before transformation
-according to the mapping table) it has one of the 14 codes
-00 (NUL), 07 (BEL), 08 (BS), 09 (HT), 0a (LF), 0b (VT),
-0c (FF), 0d (CR), 0e (SO), 0f (SI), 18 (CAN), 1a (SUB),
-1b (ESC), 7f (DEL).
-One can set a "display control characters" mode (see below),
-and allow 07, 09, 0b, 18, 1a, 7f to be displayed as glyphs.
-On the other hand, in UTF-8 mode all codes 00\[en]1f are regarded
-as control characters, regardless of any "display control characters"
-mode.
-.P
-If we have a control character, it is acted upon immediately
-and then discarded (even in the middle of an escape sequence)
-and the escape sequence continues with the next character.
-(However, ESC starts a new escape sequence, possibly aborting a previous
-unfinished one, and CAN and SUB abort any escape sequence.)
-The recognized control characters are BEL, BS, HT, LF, VT, FF,
-CR, SO, SI, CAN, SUB, ESC, DEL, CSI.
-They do what one would expect:
-.TP
-BEL (0x07, \fB\[ha]G\fP)
-beeps;
-.TP
-BS (0x08, \fB\[ha]H\fP)
-backspaces one column
-(but not past the beginning of the line);
-.TP
-HT (0x09, \fB\[ha]I\fP)
-goes to the next tab stop or to the end of the line
-if there is no earlier tab stop;
-.TP
-LF (0x0A, \fB\[ha]J\fP)
-.TQ
-VT (0x0B, \fB\[ha]K\fP)
-.TQ
-FF (0x0C, \fB\[ha]L\fP)
-all give a linefeed,
-and if LF/NL (new-line mode) is set also a carriage return;
-.TP
-CR (0x0D, \fB\[ha]M\fP)
-gives a carriage return;
-.TP
-SO (0x0E, \fB\[ha]N\fP)
-activates the G1 character set;
-.TP
-SI (0x0F, \fB\[ha]O\fP)
-activates the G0 character set;
-.TP
-CAN (0x18, \fB\[ha]X\fP)
-.TQ
-SUB (0x1A, \fB\[ha]Z\fP)
-abort escape sequences;
-.TP
-ESC (0x1B, \fB\[ha][\fP)
-starts an escape sequence;
-.TP
-DEL (0x7F)
-is ignored;
-.TP
-CSI (0x9B)
-is equivalent to ESC [.
-.P
-.B "ESC- but not CSI-sequences"
-.ad l
-.TS
-l l lx.
-ESC c RIS Reset.
-ESC D IND Linefeed.
-ESC E NEL Newline.
-ESC H HTS Set tab stop at current column.
-ESC M RI Reverse linefeed.
-ESC Z DECID T{
-DEC private identification. The kernel
-returns the string ESC [ ? 6 c, claiming
-that it is a VT102.
-T}
-ESC 7 DECSC T{
-Save current state (cursor coordinates,
-attributes, character sets pointed at by G0, G1).
-T}
-ESC 8 DECRC T{
-Restore state most recently saved by ESC 7.
-T}
-ESC % Start sequence selecting character set
-ESC % @ \0\0\0Select default (ISO/IEC\~646 / ISO/IEC\~8859-1)
-ESC % G \0\0\0Select UTF-8
-ESC % 8 \0\0\0Select UTF-8 (obsolete)
-ESC # 8 DECALN T{
-DEC screen alignment test \- fill screen with E's.
-T}
-ESC ( T{
-Start sequence defining G0 character set
-(followed by one of B, 0, U, K, as below)
-T}
-ESC ( B T{
-Select default (ISO/IEC\~8859-1 mapping).
-T}
-ESC ( 0 T{
-Select VT100 graphics mapping.
-T}
-ESC ( U T{
-Select null mapping \- straight to character ROM.
-T}
-ESC ( K T{
-Select user mapping \- the map that is loaded by the utility \fBmapscrn\fP(8).
-T}
-ESC ) T{
-Start sequence defining G1 (followed by one of B, 0, U, K, as above).
-T}
-ESC > DECPNM Set numeric keypad mode
-ESC = DECPAM Set application keypad mode
-ESC ] OSC T{
-Operating System Command prefix.
-T}
-ESC ] R Reset palette.
-ESC ] P T{
-Set palette, with parameter given in 7 hexadecimal digits \fInrrggbb\fP after
-the final P. Here \fIn\fP is the color (0\[en]15), and \fIrrggbb\fP indicates
-the red/green/blue values (0\[en]255).
-T}
-.TE
-.ad
-.P
-.B "ECMA-48 CSI sequences"
-.P
-CSI (or ESC [) is followed by a sequence of parameters,
-at most NPAR (16), that are decimal numbers separated by
-semicolons.
-An empty or absent parameter is taken to be 0.
-The sequence of parameters may be preceded by a single question mark.
-.P
-However, after CSI [ (or ESC [ [) a single character is read
-and this entire sequence is ignored.
-(The idea is to ignore an echoed function key.)
-.P
-The action of a CSI sequence is determined by its final character.
-.ad l
-.TS
-l l lx.
-@ ICH T{
-Insert the indicated # of blank characters.
-T}
-A CUU T{
-Move cursor up the indicated # of rows.
-T}
-B CUD T{
-Move cursor down the indicated # of rows.
-T}
-C CUF T{
-Move cursor right the indicated # of columns.
-T}
-D CUB T{
-Move cursor left the indicated # of columns.
-T}
-E CNL T{
-Move cursor down the indicated # of rows, to column 1.
-T}
-F CPL T{
-Move cursor up the indicated # of rows, to column 1.
-T}
-G CHA T{
-Move cursor to indicated column in current row.
-T}
-H CUP T{
-Move cursor to the indicated row, column (origin at 1,1).
-T}
-J ED T{
-Erase display (default: from cursor to end of display).
-T}
- T{
-ESC [ 1 J: erase from start to cursor.
-T}
- T{
-ESC [ 2 J: erase whole display.
-T}
- T{
-ESC [ 3 J: erase whole display including scroll-back
-buffer (since Linux 3.0).
-T}
-.\" ESC [ 3 J: commit f8df13e0a901fe55631fed66562369b4dba40f8b
-K EL T{
-Erase line (default: from cursor to end of line).
-T}
- T{
-ESC [ 1 K: erase from start of line to cursor.
-T}
- T{
-ESC [ 2 K: erase whole line.
-T}
-L IL T{
-Insert the indicated # of blank lines.
-T}
-M DL T{
-Delete the indicated # of lines.
-T}
-P DCH T{
-Delete the indicated # of characters on current line.
-T}
-X ECH T{
-Erase the indicated # of characters on current line.
-T}
-a HPR T{
-Move cursor right the indicated # of columns.
-T}
-c DA T{
-Answer ESC [ ? 6 c: "I am a VT102".
-T}
-d VPA T{
-Move cursor to the indicated row, current column.
-T}
-e VPR T{
-Move cursor down the indicated # of rows.
-T}
-f HVP T{
-Move cursor to the indicated row, column.
-T}
-g TBC T{
-Without parameter: clear tab stop at current position.
-T}
- T{
-ESC [ 3 g: delete all tab stops.
-T}
-h SM Set Mode (see below).
-l RM Reset Mode (see below).
-m SGR Set attributes (see below).
-n DSR Status report (see below).
-q DECLL Set keyboard LEDs.
- ESC [ 0 q: clear all LEDs
- ESC [ 1 q: set Scroll Lock LED
- ESC [ 2 q: set Num Lock LED
- ESC [ 3 q: set Caps Lock LED
-r DECSTBM T{
-Set scrolling region; parameters are top and bottom row.
-T}
-s ? Save cursor location.
-u ? Restore cursor location.
-\` HPA T{
-Move cursor to indicated column in current row.
-T}
-.TE
-.ad
-.P
-.B ECMA-48 Select Graphic Rendition
-.P
-The ECMA-48 SGR sequence ESC [ \fIparameters\fP m sets display
-attributes.
-Several attributes can be set in the same sequence, separated by
-semicolons.
-An empty parameter (between semicolons or string initiator or
-terminator) is interpreted as a zero.
-.ad l
-.TS
-l lx.
-param result
-0 T{
-reset all attributes to their defaults
-T}
-1 set bold
-2 T{
-set half-bright (simulated with color on a color display)
-T}
-3 set italic (since Linux 2.6.22; simulated with color on a color display)
-4 T{
-set underscore (simulated with color on a color display)
-(the colors used to simulate dim or underline are set
-using ESC ] ...)
-T}
-5 set blink
-7 set reverse video
-10 T{
-reset selected mapping, display control flag,
-and toggle meta flag (ECMA-48 says "primary font").
-T}
-11 T{
-select null mapping, set display control flag,
-reset toggle meta flag (ECMA-48 says "first alternate font").
-T}
-12 T{
-select null mapping, set display control flag,
-set toggle meta flag (ECMA-48 says "second alternate font").
-The toggle meta flag
-causes the high bit of a byte to be toggled
-before the mapping table translation is done.
-T}
-21 T{
-set underline; before Linux 4.17, this value
-set normal intensity (as is done in many other terminals)
-T}
-22 set normal intensity
-23 italic off (since Linux 2.6.22)
-24 underline off
-25 blink off
-27 reverse video off
-30 set black foreground
-31 set red foreground
-32 set green foreground
-33 set brown foreground
-34 set blue foreground
-35 set magenta foreground
-36 set cyan foreground
-37 set white foreground
-38 T{
-256/24-bit foreground color follows, shoehorned into 16 basic colors
-(before Linux 3.16: set underscore on, set default foreground color)
-T}
-39 T{
-set default foreground color
-(before Linux 3.16: set underscore off, set default foreground color)
-T}
-40 set black background
-41 set red background
-42 set green background
-43 set brown background
-44 set blue background
-45 set magenta background
-46 set cyan background
-47 set white background
-48 T{
-256/24-bit background color follows, shoehorned into 8 basic colors
-T}
-49 set default background color
-90..97 T{
-set foreground to bright versions of 30..37
-T}
-100..107 T{
-set background, same as 40..47 (bright not supported)
-T}
-.TE
-.ad
-.P
-Commands 38 and 48 require further arguments:
-.TS
-l lx.
-;5;x T{
-256 color: values 0..15 are IBGR (black, red, green, ... white),
-16..231 a 6x6x6 color cube, 232..255 a grayscale ramp
-T}
-;2;r;g;b T{
-24-bit color, r/g/b components are in the range 0..255
-T}
-.TE
-.P
-.B ECMA-48 Mode Switches
-.TP
-ESC [ 3 h
-DECCRM (default off): Display control chars.
-.TP
-ESC [ 4 h
-DECIM (default off): Set insert mode.
-.TP
-ESC [ 20 h
-LF/NL (default off): Automatically follow echo of LF, VT, or FF with CR.
-.\"
-.P
-.B ECMA-48 Status Report Commands
-.\"
-.TP
-ESC [ 5 n
-Device status report (DSR): Answer is ESC [ 0 n (Terminal OK).
-.TP
-ESC [ 6 n
-Cursor position report (CPR): Answer is ESC [ \fIy\fP ; \fIx\fP R,
-where \fIx,y\fP is the cursor location.
-.\"
-.P
-.B DEC Private Mode (DECSET/DECRST) sequences
-.P
-.\"
-These are not described in ECMA-48.
-We list the Set Mode sequences;
-the Reset Mode sequences are obtained by replacing the final \[aq]h\[aq]
-by \[aq]l\[aq].
-.TP
-ESC [ ? 1 h
-DECCKM (default off): When set, the cursor keys send an ESC O prefix,
-rather than ESC [.
-.TP
-ESC [ ? 3 h
-DECCOLM (default off = 80 columns): 80/132 col mode switch.
-The driver sources note that this alone does not suffice; some user-mode
-utility such as
-.BR resizecons (8)
-has to change the hardware registers on the console video card.
-.TP
-ESC [ ? 5 h
-DECSCNM (default off): Set reverse-video mode.
-.TP
-ESC [ ? 6 h
-DECOM (default off): When set, cursor addressing is relative to
-the upper left corner of the scrolling region.
-.TP
-ESC [ ? 7 h
-DECAWM (default on): Set autowrap on.
-In this mode, a graphic
-character emitted after column 80 (or column 132 of DECCOLM is on)
-forces a wrap to the beginning of the following line first.
-.TP
-ESC [ ? 8 h
-DECARM (default on): Set keyboard autorepeat on.
-.TP
-ESC [ ? 9 h
-X10 Mouse Reporting (default off): Set reporting mode to 1 (or reset to
-0)\[em]see below.
-.TP
-ESC [ ? 25 h
-DECTECM (default on): Make cursor visible.
-.TP
-ESC [ ? 1000 h
-X11 Mouse Reporting (default off): Set reporting mode to 2 (or reset
-to 0)\[em]see below.
-.\"
-.P
-.B Linux Console Private CSI Sequences
-.P
-.\"
-The following sequences are neither ECMA-48 nor native VT102.
-They are native to the Linux console driver.
-Colors are in SGR parameters:
-0 = black, 1 = red, 2 = green, 3 = brown, 4 = blue, 5 = magenta, 6 =
-cyan, 7 = white; 8\[en]15 = bright versions of 0\[en]7.
-.TS
-l lx.
-ESC [ 1 ; \fIn\fP ] T{
-Set color \fIn\fP as the underline color.
-T}
-ESC [ 2 ; \fIn\fP ] T{
-Set color \fIn\fP as the dim color.
-T}
-ESC [ 8 ] T{
-Make the current color pair the default attributes.
-T}
-ESC [ 9 ; \fIn\fP ] T{
-Set screen blank timeout to \fIn\fP minutes.
-T}
-ESC [ 10 ; \fIn\fP ] T{
-Set bell frequency in Hz.
-T}
-ESC [ 11 ; \fIn\fP ] T{
-Set bell duration in msec.
-T}
-ESC [ 12 ; \fIn\fP ] T{
-Bring specified console to the front.
-T}
-ESC [ 13 ] T{
-Unblank the screen.
-T}
-ESC [ 14 ; \fIn\fP ] T{
-Set the VESA powerdown interval in minutes.
-T}
-ESC [ 15 ] T{
-Bring the previous console to the front
-(since Linux 2.6.0).
-T}
-ESC [ 16 ; \fIn\fP ] T{
-Set the cursor blink interval in milliseconds
-(since Linux 4.2).
-T}
-.\" commit bd63364caa8df38bad2b25b11b2a1b849475cce5
-.TE
-.SS Character sets
-The kernel knows about 4 translations of bytes into console-screen
-symbols.
-The four tables are: a) Latin1 \-> PC,
-b) VT100 graphics \-> PC, c) PC \-> PC, d) user-defined.
-.P
-There are two character sets, called G0 and G1, and one of them
-is the current character set.
-(Initially G0.)
-Typing \fB\[ha]N\fP causes G1 to become current,
-\fB\[ha]O\fP causes G0 to become current.
-.P
-These variables G0 and G1 point at a translation table, and can be
-changed by the user.
-Initially they point at tables a) and b), respectively.
-The sequences ESC ( B and ESC ( 0 and ESC ( U and ESC ( K cause G0 to
-point at translation table a), b), c), and d), respectively.
-The sequences ESC ) B and ESC ) 0 and ESC ) U and ESC ) K cause G1 to
-point at translation table a), b), c), and d), respectively.
-.P
-The sequence ESC c causes a terminal reset, which is what you want if the
-screen is all garbled.
-The oft-advised "echo \[ha]V\[ha]O" will make only G0 current,
-but there is no guarantee that G0 points at table a).
-In some distributions there is a program
-.BR reset (1)
-that just does "echo \[ha][c".
-If your terminfo entry for the console is correct
-(and has an entry rs1=\eEc), then "tput reset" will also work.
-.P
-The user-defined mapping table can be set using
-.BR mapscrn (8).
-The result of the mapping is that if a symbol c is printed, the symbol
-s = map[c] is sent to the video memory.
-The bitmap that corresponds to
-s is found in the character ROM, and can be changed using
-.BR setfont (8).
-.SS Mouse tracking
-The mouse tracking facility is intended to return
-.BR xterm (1)-compatible
-mouse status reports.
-Because the console driver has no way to know
-the device or type of the mouse, these reports are returned in the
-console input stream only when the virtual terminal driver receives
-a mouse update ioctl.
-These ioctls must be generated by a mouse-aware
-user-mode application such as the
-.BR gpm (8)
-daemon.
-.P
-The mouse tracking escape sequences generated by
-\fBxterm\fP(1) encode numeric parameters in a single character as
-\fIvalue\fP+040.
-For example, \[aq]!\[aq] is 1.
-The screen coordinate system is 1-based.
-.P
-The X10 compatibility mode sends an escape sequence on button press
-encoding the location and the mouse button pressed.
-It is enabled by sending ESC [ ? 9 h and disabled with ESC [ ? 9 l.
-On button press, \fBxterm\fP(1) sends
-ESC [ M \fIbxy\fP (6 characters).
-Here \fIb\fP is button\-1,
-and \fIx\fP and \fIy\fP are the x and y coordinates of the mouse
-when the button was pressed.
-This is the same code the kernel also produces.
-.P
-Normal tracking mode (not implemented in Linux 2.0.24) sends an escape
-sequence on both button press and release.
-Modifier information is also sent.
-It is enabled by sending ESC [ ? 1000 h and disabled with
-ESC [ ? 1000 l.
-On button press or release, \fBxterm\fP(1) sends ESC [ M
-\fIbxy\fP.
-The low two bits of \fIb\fP encode button information:
-0=MB1 pressed, 1=MB2 pressed, 2=MB3 pressed, 3=release.
-The upper bits encode what modifiers were down when the button was
-pressed and are added together: 4=Shift, 8=Meta, 16=Control.
-Again \fIx\fP and
-\fIy\fP are the x and y coordinates of the mouse event.
-The upper left corner is (1,1).
-.SS Comparisons with other terminals
-Many different terminal types are described, like the Linux console,
-as being "VT100-compatible".
-Here we discuss differences between the
-Linux console and the two most important others, the DEC VT102 and
-.BR xterm (1).
-.\"
-.P
-.B Control-character handling
-.P
-The VT102 also recognized the following control characters:
-.TP
-NUL (0x00)
-was ignored;
-.TP
-ENQ (0x05)
-triggered an answerback message;
-.TP
-DC1 (0x11, \fB\[ha]Q\fP, XON)
-resumed transmission;
-.TP
-DC3 (0x13, \fB\[ha]S\fP, XOFF)
-caused VT100 to ignore (and stop transmitting)
-all codes except XOFF and XON.
-.P
-VT100-like DC1/DC3 processing may be enabled by the terminal driver.
-.P
-The
-.BR xterm (1)
-program (in VT100 mode) recognizes the control characters
-BEL, BS, HT, LF, VT, FF, CR, SO, SI, ESC.
-.\"
-.P
-.B Escape sequences
-.P
-VT100 console sequences not implemented on the Linux console:
-.TS
-l l l.
-ESC N SS2 T{
-Single shift 2. (Select G2 character set for the next character only.)
-T}
-ESC O SS3 T{
-Single shift 3. (Select G3 character set for the next character only.)
-T}
-ESC P DCS T{
-Device control string (ended by ESC \e)
-T}
-ESC X SOS Start of string.
-ESC \[ha] PM Privacy message (ended by ESC \e)
-ESC \e ST String terminator
-ESC * ... Designate G2 character set
-ESC + ... Designate G3 character set
-.TE
-.P
-The program
-.BR xterm (1)
-(in VT100 mode) recognizes ESC c, ESC # 8, ESC >, ESC =,
-ESC D, ESC E, ESC H, ESC M, ESC N, ESC O, ESC P ... ESC \e,
-ESC Z (it answers ESC [ ? 1 ; 2 c, "I am a VT100 with
-advanced video option")
-and ESC \[ha] ... ESC \e with the same meanings as indicated above.
-It accepts ESC (, ESC ), ESC *, ESC + followed by 0, A, B for
-the DEC special character and line drawing set, UK, and US-ASCII,
-respectively.
-.P
-The user can configure \fBxterm\fP(1) to respond to VT220-specific
-control sequences, and it will identify itself as a VT52, VT100, and
-up depending on the way it is configured and initialized.
-.P
-It accepts ESC ] (OSC) for the setting of certain resources.
-In addition to the ECMA-48 string terminator (ST),
-\fBxterm\fP(1) accepts a BEL to terminate an OSC string.
-These are a few of the OSC control sequences recognized by \fBxterm\fP(1):
-.TS
-l l.
-ESC ] 0 ; \fItxt\fP ST T{
-Set icon name and window title to \fItxt\fP.
-T}
-ESC ] 1 ; \fItxt\fP ST Set icon name to \fItxt\fP.
-ESC ] 2 ; \fItxt\fP ST Set window title to \fItxt\fP.
-ESC ] 4 ; \fInum\fP; \fItxt\fP ST Set ANSI color \fInum\fP to \fItxt\fP.
-ESC ] 10 ; \fItxt\fP ST Set dynamic text color to \fItxt\fP.
-ESC ] 4 6 ; \fIname\fP ST T{
-Change log file to \fIname\fP (normally disabled by a compile-time option).
-T}
-ESC ] 5 0 ; \fIfn\fP ST Set font to \fIfn\fP.
-.TE
-.P
-It recognizes the following with slightly modified meaning
-(saving more state, behaving closer to VT100/VT220):
-.TS
-l l l.
-ESC 7 DECSC Save cursor
-ESC 8 DECRC Restore cursor
-.TE
-.P
-It also recognizes
-.TS
-l l lx.
-ESC F T{
-Cursor to lower left corner of screen (if enabled
-by \fBxterm\fP(1)'s \fBhpLowerleftBugCompat\fP resource).
-T}
-ESC l Memory lock (per HP terminals).
- Locks memory above the cursor.
-ESC m Memory unlock (per HP terminals).
-ESC n LS2 Invoke the G2 character set.
-ESC o LS3 Invoke the G3 character set.
-ESC | LS3R Invoke the G3 character set as GR.
-ESC } LS2R Invoke the G2 character set as GR.
-ESC \[ti] LS1R Invoke the G1 character set as GR.
-.TE
-.P
-It also recognizes ESC % and provides a more complete UTF-8
-implementation than Linux console.
-.\"
-.P
-.B CSI Sequences
-.P
-Old versions of \fBxterm\fP(1), for example, from X11R5,
-interpret the blink SGR as a bold SGR.
-Later versions which implemented ANSI colors, for example,
-XFree86 3.1.2A in 1995, improved this by allowing
-the blink attribute to be displayed as a color.
-Modern versions of xterm implement blink SGR as blinking text
-and still allow colored text as an alternate rendering of SGRs.
-Stock X11R6 versions did not recognize the color-setting SGRs until
-the X11R6.8 release, which incorporated XFree86 xterm.
-All ECMA-48 CSI sequences recognized by Linux are also recognized by
-.IR xterm ,
-however \fBxterm\fP(1) implements several ECMA-48 and DEC control sequences
-not recognized by Linux.
-.P
-The \fBxterm\fP(1)
-program recognizes all of the DEC Private Mode sequences listed
-above, but none of the Linux private-mode sequences.
-For discussion of \fBxterm\fP(1)'s
-own private-mode sequences, refer to the
-\fIXterm Control Sequences\fP
-document by
-Edward Moy,
-Stephen Gildea,
-and Thomas E.\& Dickey
-available with the X distribution.
-That document, though terse, is much longer than this manual page.
-For a chronological overview,
-.P
-.RS
-.UR http://invisible\-island.net\:/xterm\:/xterm.log.html
-.UE
-.RE
-.P
-details changes to xterm.
-.P
-The \fIvttest\fP program
-.P
-.RS
-.UR http://invisible\-island.net\:/vttest/
-.UE
-.RE
-.P
-demonstrates many of these control sequences.
-The \fBxterm\fP(1) source distribution also contains sample
-scripts which exercise other features.
-.SH NOTES
-ESC 8 (DECRC) is not able to restore the character set changed with
-ESC %.
-.SH BUGS
-In Linux 2.0.23, CSI is broken, and NUL is not ignored inside
-escape sequences.
-.P
-Some older kernel versions (after Linux 2.0) interpret 8-bit control
-sequences.
-These "C1 controls" use codes between 128 and 159 to replace
-ESC [, ESC ] and similar two-byte control sequence initiators.
-There are fragments of that in modern kernels (either overlooked or
-broken by changes to support UTF-8),
-but the implementation is incomplete and should be regarded
-as unreliable.
-.P
-Linux "private mode" sequences do not follow the rules in ECMA-48
-for private mode control sequences.
-In particular, those ending with ] do not use a standard terminating
-character.
-The OSC (set palette) sequence is a greater problem,
-since \fBxterm\fP(1) may interpret this as a control sequence
-which requires a string terminator (ST).
-Unlike the \fBsetterm\fP(1) sequences which will be ignored (since
-they are invalid control sequences), the palette sequence will make
-\fBxterm\fP(1) appear to hang (though pressing the return-key
-will fix that).
-To accommodate applications which have been hardcoded to use Linux
-control sequences,
-set the \fBxterm\fP(1) resource \fBbrokenLinuxOSC\fP to true.
-.P
-An older version of this document implied that Linux recognizes the
-ECMA-48 control sequence for invisible text.
-It is ignored.
-.SH SEE ALSO
-.BR ioctl_console (2),
-.BR charsets (7)