                          Xterm Control Sequences

                                 Edward Moy

                     University of California, Berkeley

                                 Revised by

                               Stephen Gildea

                                X Consortium

Definitions

c    The literal character c.

C    A single (required) character.

Ps   A single (usually optional) numeric parameter, composed of one of  more
     digits.

Pm   A multiple numeric parameter composed of any number of  single  numeric
     parameters, separated by ;  character(s).

Pt   A text parameter composed of printable characters.

VT100 Mode

	Most of these control sequences are standard VT102  control  sequences,  but
	there  are  some  sequences  here  from  later DEC VT terminals, too.  VT102
	features not supported are smooth scrolling, double size characters,  blink-
	ing  characters,  and  VT52 mode.  There are additional control sequences to
	provide xterm-dependent functions, like the scrollbar or window size.  Where
	the  function  is  specified  by DEC or ISO 6429, the code assigned to it is
	given in parentheses.  The escape codes to designate  and  invoke  character
	sets  are specified by ISO 2022; see that document for a discussion of char-
	acter sets.
	BEL            Bell (Ctrl-G)
	BS             Backspace (Ctrl-H)
	TAB            Horizontal Tab (HT) (Ctrl-I)
	LF             Line Feed or New Line (NL) (Ctrl-J)
	VT             Vertical Tab (Ctrl-K) same as LF
	FF             Form Feed or New Page (NP) (Ctrl-L) same as LF
	CR             Carriage Return (Ctrl-M)
	SO             Shift Out (Ctrl-N) ->  Switch  to  Alternate  Character  Set:
	               invokes the G1 character set.
	SI             Shift In  (Ctrl-O)  ->  Switch  to  Standard  Character  Set:
	               invokes the G0 character set (the default).
	ESC # 8        DEC Screen Alignment Test (DECALN)
	ESC ( C        Designate G0 Character Set (ISO 2022)
	                 C = 0  -> DEC Special Character and Line Drawing Set
	                 C = A  -> United Kingdom (UK)
	                 C = B  -> United States (USASCII)
	ESC ) C        Designate G1 Character Set (ISO 2022)
	                 C = 0  -> DEC Special Character and Line Drawing Set
	                 C = A  -> United Kingdom (UK)
	                 C = B  -> United States (USASCII)
	ESC * C        Designate G2 Character Set (ISO 2022)
	                 C = 0  -> DEC Special Character and Line Drawing Set
	                 C = A  -> United Kingdom (UK)
	                 C = B  -> United States (USASCII)
	ESC + C        Designate G3 Character Set (ISO 2022)
	                 C = 0  -> DEC Special Character and Line Drawing Set
	                 C = A  -> United Kingdom (UK)
	                 C = B  -> United States (USASCII)
	ESC 7          Save Cursor (DECSC)
	ESC 8          Restore Cursor (DECRC)
	ESC =          Application Keypad (DECPAM)
	ESC >          Normal Keypad (DECPNM)
	ESC D          Index (IND)
	ESC E          Next Line (NEL)
	ESC F          Cursor to lower left corner of  screen  (if  enabled  by  the
	               hpLowerleftBugCompat resource).
	ESC H          Tab Set (HTS)
	ESC M          Reverse Index (RI)
	ESC N          Single Shift Select of G2 Character Set (SS2):  affects  next
	               character only
	ESC O          Single Shift Select of G3 Character Set (SS3):  affects  next
	               character only
	ESC P Pt ESC \ Device Control String (DCS)
	                 xterm implements no DCS functions; Pt is ignored.  Pt  need
	               not be printable characters.
	ESC Z          Return Terminal ID (DECID).  Obsolete form of ESC [ c  (DA).
	ESC [ Ps @     Insert Ps (Blank) Character(s) (default = 1) (ICH)
	ESC [ Ps A     Cursor Up Ps Times (default = 1) (CUU)
	ESC [ Ps B     Cursor Down Ps Times (default = 1) (CUD)
	ESC [ Ps C     Cursor Forward Ps Times (default = 1) (CUF)
	ESC [ Ps D     Cursor Backward Ps Times (default = 1) (CUB)
	ESC [ Ps ; Ps H Cursor Position [row;column] (default = [1,1]) (CUP)
	ESC [ Ps J     Erase in Display (ED)
	                 Ps = 0  -> Clear Below (default)
	                 Ps = 1  -> Clear Above
	                 Ps = 2  -> Clear All
	ESC [ Ps K     Erase in Line (EL)
	                 Ps = 0  -> Clear to Right (default)
	                 Ps = 1  -> Clear to Left
	                 Ps = 2  -> Clear All
	ESC [ Ps L     Insert Ps Line(s) (default = 1) (IL)
	ESC [ Ps M     Delete Ps Line(s) (default = 1) (DL)
	ESC [ Ps P     Delete Ps Character(s) (default = 1) (DCH)
	ESC [ Ps ; Ps ; Ps ; Ps ; Ps T
	               Initiate   hilite    mouse    tracking.     Parameters    are
	               [func;startx;starty;firstrow;lastrow].  See the section Mouse
	               Tracking.
	ESC [ Ps c     Send Device Attributes (DA)
	                 Ps = 0  or omitted -> request attributes from terminal
	                 -> ESC [ ? 1 ; 2 c  (``I am a  VT100  with  Advanced  Video
	               Option.'')
	ESC [ Ps ; Ps f Horizontal and Vertical  Position  [row;column]  (default  =
	               [1,1]) (HVP)
	ESC [ Ps g     Tab Clear (TBC)
	                 Ps = 0  -> Clear Current Column (default)
	                 Ps = 3  -> Clear All
	ESC [ Pm h     Set Mode (SM)
	                 Ps = 4  -> Insert Mode (IRM)
	                 Ps = 2 0  -> Automatic Newline (LNM)
	ESC [ Pm l     Reset Mode (RM)
	                 Ps = 4  -> Replace Mode (IRM)
	                 Ps = 2 0  -> Normal Linefeed (LNM)
	ESC [ Pm m     Character Attributes (SGR)
	                 Ps = 0  -> Normal (default)
	                 Ps = 1  -> Bold
	                 Ps = 4  -> Underscore
	                 Ps = 5  -> Blink (appears as Bold)
	                 Ps = 7  -> Inverse
	ESC [ Ps n     Device Status Report (DSR)
	                 Ps = 5  -> Status Report ESC [ 0 n  (``OK'')
	                 Ps = 6  -> Report Cursor Position (CPR) [row;column] as ESC
	               [ r ; c R
	ESC [ Ps ; Ps r Set Scrolling Region [top;bottom] (default =  full  size  of
	               window) (DECSTBM)
	ESC [ Ps x     Request Terminal Parameters (DECREQTPARM)
	ESC [ ? Pm h   DEC Private Mode Set (DECSET)
	                 Ps = 1  -> Application Cursor Keys (DECCKM)
	                 Ps = 2  -> Designate USASCII for character sets G0-G3.  (In
	               the  VT102,  this  selects  VT52  mode  (DECANM), which xterm
	               doesn't support.)
	                 Ps = 3  -> 132 Column Mode (DECCOLM)
	                 Ps = 4  -> Smooth (Slow) Scroll (DECSCLM)
	                 Ps = 5  -> Reverse Video (DECSCNM)
	                 Ps = 6  -> Origin Mode (DECOM)
	                 Ps = 7  -> Wraparound Mode (DECAWM)
	                 Ps = 8  -> Auto-repeat Keys (DECARM)
	                 Ps = 9  -> Send Mouse X & Y on button press.  See the  sec-
	               tion Mouse Tracking.
	                 Ps = 3 8  -> Enter Tektronix Mode (DECTEK)
	                 Ps = 4 0  -> Allow 80 <--> 132 Mode
	                 Ps = 4 1  -> more(1) fix (see curses resource)
	                 Ps = 4 4  -> Turn On Margin Bell
	                 Ps = 4 5  -> Reverse-wraparound Mode
	                 Ps =  4  6   ->  Start  Logging  (normally  disabled  by  a
	               compile-time option)
	                 Ps = 4 7  -> Use Alternate Screen Buffer  (unless  disabled
	               by the titeInhibit resource)
	                 Ps = 1 0 0 0  -> Send Mouse X  &  Y  on  button  press  and
	               release.  See the section Mouse Tracking.
	                 Ps = 1 0 0 1  -> Use Hilite Mouse Tracking.  See  the  sec-
	               tion Mouse Tracking.
	ESC [ ? Pm l   DEC Private Mode Reset (DECRST)
	                 Ps = 1  -> Normal Cursor Keys (DECCKM)
	                 Ps = 3  -> 80 Column Mode (DECCOLM)
	                 Ps = 4  -> Jump (Fast) Scroll (DECSCLM)
	                 Ps = 5  -> Normal Video (DECSCNM)
	                 Ps = 6  -> Normal Cursor Mode (DECOM)
	                 Ps = 7  -> No Wraparound Mode (DECAWM)
	                 Ps = 8  -> No Auto-repeat Keys (DECARM)
	                 Ps = 9  -> Don't Send Mouse X & Y on button press
	                 Ps = 4 0  -> Disallow 80 <--> 132 Mode
	                 Ps = 4 1  -> No more(1) fix (see curses resource)
	                 Ps = 4 4  -> Turn Off Margin Bell
	                 Ps = 4 5  -> No Reverse-wraparound Mode
	                 Ps = 4 6  -> Stop Logging (normally disabled by a  compile-
	               time option)
	                 Ps = 4 7  -> Use Normal Screen Buffer
	                 Ps = 1 0 0 0  -> Don't Send Mouse X & Y on button press and
	               release
	                 Ps = 1 0 0 1  -> Don't Use Hilite Mouse Tracking
	ESC [ ? Pm r   Restore DEC Private Mode Values.  The value of Ps  previously
	               saved is restored.  Ps values are the same as for DECSET.
	ESC [ ? Pm s   Save DEC Private Mode Values.  Ps values are the same as  for
	               DECSET.
	ESC ] Ps ; Pt BEL
	               Set Text Parameters
	                 Ps = 0  -> Change Icon Name and Window Title to Pt
	                 Ps = 1  -> Change Icon Name to Pt
	                 Ps = 2  -> Change Window Title to Pt
	                 Ps = 4 6  -> Change Log File to Pt (normally disabled by  a
	               compile-time option)
	                 Ps = 5 0  -> Set Font to Pt
	ESC ^ Pt ESC \ Privacy Message (PM)
	                 xterm implements no PM functions; Pt is ignored.   Pt  need
	               not be printable characters.
	ESC _ Pt ESC \ Application Program Command (APC)
	                 xterm implements no APC functions; Pt is ignored.  Pt  need
	               not be printable characters.
	ESC c          Full Reset (RIS)
	ESC l          Memory Lock (per HP terminals).  Locks memory above the  cur-
	               sor.
	ESC m          Memory Unlock (per HP terminals)
	ESC n          Invoke the G2 Character Set (LS2)
	ESC o          Invoke the G3 Character Set (LS3)
	ESC |          Invoke the G3 Character Set as GR  (LS3R).   Has  no  visible
	               effect in xterm.
	ESC }          Invoke the G2 Character Set as GR  (LS2R).   Has  no  visible
	               effect in xterm.
	ESC ~          Invoke the G1 Character Set as GR  (LS1R).   Has  no  visible
	               effect in xterm.

Mouse Tracking
	The VT widget can be set to send the mouse position and other information on
button  presses.   These modes are typically used by editors and other full-
screen applications that want to make use of the mouse.
	There are three mutually exclusive modes, each enabled (or  disabled)  by  a
different  parameter  in the DECSET (or DECRST) escape sequence.  Parameters
for all mouse tracking escape sequences generated by  xterm  encode  numeric
parameters  in  a single character as value+040.  For example, !  is 1.  The
screen coodinate system is 1-based.
	X10 compatibility mode sends an escape sequence on button press encoding the
location  and the mouse button pressed.  It is enabled by specifying parame-
ter 9 to DECSET.  On button press, xterm sends ESC [  M  CbCxCy  (6  charac-
ters).   Cb is button-1.  Cx and Cy are the x and y coordinates of the mouse
when the button was pressed.
	Normal tracking mode sends an escape  sequence  on  both  button  press  and
release.   Modifier  information  is also sent.  It is enabled by specifying
parameter 1000 to DECSET.  On button press or release, xterm sends ESC  [  M
CbCxCy.   The  low two bits of Cb encode button information:  0=MB1 pressed,
1=MB2 pressed, 2=MB3 pressed, 3=release.  The upper bits encode what  modif-
iers were down when the button was pressed and are added together.  4=Shift,
8=Meta, 16=Control.  Cx and Cy are the x and  y  coordinates  of  the  mouse
event.  The upper left corner is (1,1).
	Mouse hilite tracking notifies a program of a button press, receives a range
of lines from the program, highlights the region covered by the mouse within
that range until button release, and then  sends  the  program  the  release
coordinates.   It  is enabled by specifying parameter 1001 to DECSET.  Warn-
ing: use of this mode requires a cooperating program or it will hang  xterm.
On  button  press, the same information as for normal tracking is generated;
xterm then waits for the program to send mouse tracking information.  All  X
events  are  ignored  until  the proper escape sequence is received from the
pty:  ESC [ Ps ; Ps ; Ps ; Ps ; Ps T .  The  parameters  are  func,  startx,
starty, firstrow, and lastrow.  func is non-zero to initiate hilite tracking
and zero to abort.  startx and starty give the starting x and y location for
the  highlighted  region.   The  ending  location tracks the mouse, but will
never be above row firstrow and will always be above row lastrow.  (The  top
of  the  screen  is  row 1.)  When the button is released, xterm reports the
ending position one of two ways: if the start and end coordinates are  valid
text  locations:  ESC [ t CxCy.  If either coordinate is past the end of the
line:  ESC [ T CxCyCxCyCxCy.  The parameters are startx, starty, endx, endy,
mousex,  and  mousey.   startx, starty, endx, and endy give the starting and
ending character positions of the region.  mousex and mousey give the  loca-
tion of the mouse at button up, which may not be over a character.

Tektronix 4014 Mode
	Most of these sequences  are  standard  Tektronix  4014  control  sequences.
Graph  mode supports the 12-bit addressing of the Tektronix 4014.  The major
features missing are the write-thru and defocused modes.  This document does
not  describe  the commands used in the various Tektronix plotting modes but
does describe the commands to switch modes.

	BEL            Bell (Ctrl-G)
	BS             Backspace (Ctrl-H)
	TAB            Horizontal Tab (Ctrl-I)
	LF             Line Feed or New Line (Ctrl-J)
	VT             Cursor up (Ctrl-K)
	FF             Form Feed or New Page (Ctrl-L)
	CR             Carriage Return (Ctrl-M)
	ESC ETX        Switch to VT100 Mode (ESC Ctrl-C)
	ESC ENQ        Return Terminal Status (ESC Ctrl-E)
	ESC FF         PAGE (Clear Screen) (ESC Ctrl-L)
	ESC SO         Begin 4015 APL mode (ignored by xterm) (ESC Ctrl-N)
	ESC SI         End 4015 APL mode (ignored by xterm) (ESC Ctrl-O)
	ESC ETB        COPY (Save Tektronix  Codes  to  file  COPYyy-mm-dd.hh:mm:ss)
	               (ESC Ctrl-W)
	ESC CAN        Bypass Condition (ESC Ctrl-X)
	ESC SUB        GIN mode (ESC Ctrl-Z)
	ESC FS         Special Point Plot Mode (ESC Ctrl-\)
	ESC 8          Select Large Character Set
	ESC 9          Select #2 Character Set
	ESC :          Select #3 Character Set
	ESC ;          Select Small Character Set
	ESC ] Ps ; Pt BEL
	               Set Text Parameters of VT window
	                 Ps = 0  -> Change Icon Name and Window Title to Pt
	                 Ps = 1  -> Change Icon Name to Pt
	                 Ps = 2  -> Change Window Title to Pt
	                 Ps = 4 6  -> Change Log File to Pt (normally disabled by  a
	               compile-time option)
	ESC `          Normal Z Axis and Normal (solid) Vectors
	ESC a          Normal Z Axis and Dotted Line Vectors
	ESC b          Normal Z Axis and Dot-Dashed Vectors
	ESC c          Normal Z Axis and Short-Dashed Vectors
	ESC d          Normal Z Axis and Long-Dashed Vectors
	ESC h          Defocused Z Axis and Normal (solid) Vectors
	ESC i          Defocused Z Axis and Dotted Line Vectors
	ESC j          Defocused Z Axis and Dot-Dashed Vectors
	ESC k          Defocused Z Axis and Short-Dashed Vectors
	ESC l          Defocused Z Axis and Long-Dashed Vectors
	ESC p          Write-Thru Mode and Normal (solid) Vectors
	ESC q          Write-Thru Mode and Dotted Line Vectors
	ESC r          Write-Thru Mode and Dot-Dashed Vectors
	ESC s          Write-Thru Mode and Short-Dashed Vectors
	ESC t          Write-Thru Mode and Long-Dashed Vectors
	FS             Point Plot Mode (Ctrl-\)
	GS             Graph Mode (Ctrl-])
	RS             Incremental Plot Mode (Ctrl-^)
	US             Alpha Mode (Ctrl-_)
