Date: 12 Sep 89 17:44:43 GMT
From: crdgw1!montnaro@uunet.uu.net  (Skip Montanaro)
Organization: GE Corporate Research & Development, Schenectady, NY
Subject: XTerm Escape Sequences (X11 Version)
To: xpert@expo.lcs.mit.edu

I rummaged around through the xterm code and came up with the following
stuff. No guarantees. I'm headed out of town for a couple days and thought
it better to get it out than let it get stale. Comments, bugs, and other
notes are welcome. Somebody else can convert it to troff. I prefer LaTeX.
:-) I will try and get to the Tek mode stuff when I return, although I doubt
it's changed much from X10 XTerm.

I gleaned the basic stuff out of the charproc.c code, by hacking VTparse()
so it spit out leaves of the parse tree. I was mildly surprised to see
things like "ESC # BEL" turn up.

For most folks, the most interesting stuff will probably be "ESC ] Ps ND
string NP" down near the bottom. That's what you use to change the icon and
window labels, and the log file name. Most other things appear the same as
the X10 documentation, although a few DEC-ish mode parameters (42, 43, 48, &
49) seem to have disappeared.

------------------------------------------------------------------------------
BEL		Bell (Ctrl-G)
BS		Backspace (Ctrl-H)
HT		Horizontal Tab (Ctrl-I)
NL		Line Feed or New Line (Ctrl-J)
VT		Vertical Tab (Ctrl-K)
NP		Form Feed or New Page (Ctrl-L)
CR		Carriage Return (Ctrl-M)
SO		Shift Out (Ctrl-N) -> Switch to Alternate Character Set
SI		Shift In (Ctrl-O) -> Switch to Standard Character Set
ESC BEL		(Same as non-escaped BEL)
ESC BS		(Same as non-escaped BS)
ESC HT		(Same as non-escaped HT)
ESC NL		(Same as non-escaped NL)
ESC VT		(Same as non-escaped VT)
ESC NP		(Same as non-escaped NP)
ESC CR		(Same as non-escaped CR)
ESC SO		(Same as non-escaped SO)
ESC SI		(Same as non-escaped SI)
ESC # BEL	(Same as non-escaped BEL)
ESC # BS	(Same as non-escaped BS)
ESC # HT	(Same as non-escaped HT)
ESC # NL	(Same as non-escaped NL)
ESC # VT	(Same as non-escaped VT)
ESC # NP	(Same as non-escaped NP)
ESC # CR	(Same as non-escaped CR)
ESC # SO	(Same as non-escaped SO)
ESC # SI	(Same as non-escaped SI)
ESC # 8		DEC Screen Alignment Test (DECALN)
ESC ( BEL	(Same as non-escaped BEL)
ESC ( BS	(Same as non-escaped BS)
ESC ( HT	(Same as non-escaped HT)
ESC ( NL	(Same as non-escaped NL)
ESC ( VT	(Same as non-escaped VT)
ESC ( NP	(Same as non-escaped NP)
ESC ( CR	(Same as non-escaped CR)
ESC ( SO	(Same as non-escaped SO)
ESC ( SI	(Same as non-escaped SI)
ESC ( C		Select G0 Character Set (SCS)
		C = 0 -> Special Character and Line Drawing Set
		C = 1 -> Alternate Character ROM Standard Set
		C = 2 -> Alternate Character ROM Special Set
		C = A -> United Kingdom (UK)
		C = B -> United States (USASCII)
ESC ) C		Select G1 Character Set (SCS)
		C takes same values as above
ESC * C		Select G2 Character Set (SCS)
		C takes same values as above
ESC + C		Select G3 Character Set (SCS)
		C takes same values as above
ESC 7		Save Cursor (DECSC)
ESC 8		Restore Cursor (DECRC)
ESC =		Application Keypad (DECPAM)
ESC >		Normal Keypad (DECNM)
ESC D		Index (IND)
ESC E		Next Line (NEL)
ESC H		Tab Set (HTS)
ESC M		Reverse Index (RI)
ESC N		Single Shift Select of G2 Character Set (SS2)
ESC O		Single Shift Select of G3 Character Set (SS3)
ESC [ BEL	(Same as non-escaped BEL)
ESC [ BS	(Same as non-escaped BS)
ESC [ HT	(Same as non-escaped HT)
ESC [ NL	(Same as non-escaped NL)
ESC [ VT	(Same as non-escaped VT)
ESC [ NP	(Same as non-escaped NP)
ESC [ CR	(Same as non-escaped CR)
ESC [ SO	(Same as non-escaped SO)
ESC [ SI	(Same as non-escaped SI)
ESC [ ? BEL	(Same as non-escaped BEL)
ESC [ ? BS	(Same as non-escaped BS)
ESC [ ? HT	(Same as non-escaped HT)
ESC [ ? NL	(Same as non-escaped NL)
ESC [ ? VT	(Same as non-escaped VT)
ESC [ ? NP	(Same as non-escaped NP)
ESC [ ? CR	(Same as non-escaped CR)
ESC [ ? SO	(Same as non-escaped SO)
ESC [ ? SI	(Same as non-escaped SI)
ESC [ ? Ps h	DEC Private Mode Set (DECSET)
		Ps = 1 -> Application Cursor Keys (DECCKM)
		Ps = 2 -> Set VT52 Mode
		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 MIT Mouse Row & Column on Button
			  Press
		Ps = 38 -> Enter Tektronix Mode (DECTEK)
		Ps = 40 -> Allow 80 <-> 132 Mode
		Ps = 41 -> curses(5) fix
		Ps = 44 -> Turn on Margin Bell
		Ps = 45 -> Reverse-wraparound Mode
		Ps = 46 -> Start Logging
		Ps = 47 -> Use Alternate Screen Buffer
		Ps = 1000 -> xtem bogus sequence (???)
		Ps = 1001 -> xtem sequence w/hilite tracking (???)
ESC [ ? Ps 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 MIT Mouse Row & Column on
			  Button Press
		Ps = 40 -> Don't Allow 80 <-> 132 Mode
		Ps = 41 -> No curses(5) fix
		Ps = 44 -> Turn Off Margin Bell
		Ps = 45 -> No Reverse-wraparound Mode
		Ps = 46 -> Stop Logging
		Ps = 47 -> Use Normal Screen Buffer
		Ps = 1000 -> xtem bogus sequence (???)
		Ps = 1001 -> xtem sequence w/hilite tracking (???)
ESC [ ? Ps r	Restore DEC Private Mode
		Ps = 1 -> Normal/Application Cursor Keys (DECCKM)
		Ps = 3 -> 80/132 Column Mode (DECCOLM)
		Ps = 4 -> Jump (Fast)/Smooth (Slow) Scroll (DECSCLM)
		Ps = 5 -> Normal/Reverse Video (DECSCNM)
		Ps = 6 -> Normal/Origin  Cursor Mode (DECOM)
		Ps = 7 -> No Wraparound/Wraparound Mode (DECAWM)
		Ps = 8 -> Auto-repeat/No Auto-repeat Keys (DECARM)
		Ps = 9 -> Don't Send/Send MIT Mouse Row & Column on
			  Button Press
		Ps = 40 -> Disallow/Allow 80 <-> 132 Mode
		Ps = 41 -> Off/On curses(5) fix
		Ps = 44 -> Turn Off/On Margin Bell
		Ps = 45 -> No Reverse-wraparound/Reverse-wraparound
			   Mode 
		Ps = 46 -> Stop/Start Logging
		Ps = 47 -> Use Normal/Alternate Screen Buffer
		Ps = 1000 -> mouse bogus sequence (???)
		Ps = 1001 -> mouse bogus sequence (???)
ESC [ ? Ps s	Save DEC Private Mode
			Same P's as Restore DEC Private Mode
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
		Ps = 0 -> Clear Below (default)
		Ps = 1 -> Clear Above
		Ps = 2 -> Clear All
ESC [ Ps K	Erase in Line
		Ps = 0 -> Clear to Right (default)
		Ps = 1 -> Clear to Left
		Ps = 2 -> Clear All
ESC [ Ps L	Insert Ps lines (default = 1) (IL)
ESC [ Ps M	Delete Ps lines (default = 1) (DL)
ESC [ Ps P	Delete Ps Characters (default = 1) (DCH)
ESC [ T		Track Mouse (???)
ESC [ Ps c	Device Attributes (DA1)
ESC [ Ps ; Ps f	Cursor Position [row;column] (default = [1,1]) (HVP)
ESC [ Ps g	Tab Clear
		Ps = 0 -> Clear Current Column (default)
		Ps = 3 -> Clear All
ESC [ Ps h	Mode Set (SET)
		Ps = 4 -> Insert Mode (IRM)
		Ps = 20 -> Automatic Linefeed (LNM)
ESC [ Ps l	Mode Reset (RST)
		Ps = 4 -> Insert Mode (IRM)
		Ps = 20 -> Automatic Linefeed (LNM)
ESC [ Pm m	Character Attributes (SGR)
		Ps = 0 -> Normal (default)
		Ps = 1 -> Blink (appears as Bold)
		Ps = 4 -> Underscore
		Ps = 5 -> 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 ] Ps ND string NP		OSC Mode
		ND can be any non-digit Character (it's discarded)
		NP can be any non-printing Character (it's discarded)
		string can be any ASCII printable string
			(max 511 characters)
		Ps = 0 -> use string as a new icon name and title
		Ps = 1 -> use string is a new icon name only
		Ps = 2 -> use string is a new title only
		Ps = 46 -> use string as a new log file name
		
ESC c		Full Reset
ESC n		Switch to Alternate Character Set LS2
ESC o		Switch to Alternate Character Set LS3
ESC |		Switch to Alternate Graphics(?) Set LS3R
ESC }		Switch to Alternate Graphics(?) Set LS2R
ESC ~		Switch to Alternate Graphics(?) Set LS1R
--
Skip Montanaro (montanaro@crdgw1.ge.com)
