cterm.txt 44.5 KB
Newer Older
1
2
3
$Id$

CTerm terminal characteristics:
4
5
------------------------------

6
7
8
9
10
11
12
End of line behaviour (wrapping):
The cursor is moved to the first character of the next line
as soon as a character is written to the last column of the
current line, not on the next character.  A tab will wrap
to the next line only if the current cursor position is the
last character on the line.

13
14
15
16
17
18
19
20
21
22
23
I'm often asked why I don't use VT semantics for wrapping.
The primary reason is that the person asking almost certainly
doesn't know what the VT semantics are, they just want
SyncTERM to behave the same as some other terminal they like.

Not only have the VT semantics never been properly
implemented in any terminal, they even varied between
different actual hardware VT terminals.  Luckily, everything
is on the internet now, so you can see the details and results
here: https://github.com/mattiase/wraptest

24
25
Control characters:

26
0x00 - NUL:
27
28
29
30
31
	In doorway mode, indicates that the next character is
	a literal character.  The IBM CP437 character will
	be displayed.  This allows ESC and other control
	characters to be placed on the screen.

32
33
0x07 - BEL:
	Beep
34

35
0x08 - BS:
36
37
38
39
	Non-destructive backspace.  Moves cursor position to
	the previous column unless the current column is the
	first, in which case no operation is performed.

40
41
42
0x09 - HT:
	Moves to the next horizontal tab stop.  Does not overwrite
	any characters in between.  If the starting position is
43
	last column, cursor does not move.
44

45
46
47
48
49
50
51
52
0x0A - LF:
	Move cursor position to same column of the next row.
	If current row is the last row, scrolls the screen up
	and fills the new row with the current attribute.

0x0D - CR:
	Move cursor position to column 1 of the current line

53
54
55
56
Control Codes:
--------------

Control codes are in the following format:
deuce's avatar
deuce committed
57
ESC {'0' (ZERO) to '~'}
58
59
	Legal combinations which are not handled are silently dropped.

60
61
62
63
64
ESC E	Next Line (NEL)
	Moves to the line home position of the next line.
	(Same as CR LF)

ESC H	Set Tab (HTS)
deuce's avatar
deuce committed
65
	Sets a tab stop at the current column
66

deuce's avatar
deuce committed
67
68
	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

69
ESC M	Reverse Line Feed (RI)
deuce's avatar
deuce committed
70
71
72
	Move up one line

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf
73

74
ESC P	Device Control String (DCS)
deuce's avatar
deuce committed
75
76
77
	Begins a string consisting of the characters 0x08 - 0x0d and
	0x20-0x7e, terminated by a String Terminator (ST)
	Supported OSC values:
78
79
80
81
82
83
84
85
86
		"CTerm:Font:p1:<b64>"
		Indicates the string is a loadable font. (CTerm 1.213)

		p1 is a font slot number, which must be higher than the last
		default defined font (See CSI sp D for list of predefined
		fonts). <b64> is the base64 encoded font data.  Font size is
		deduced from the size of the data.  This replaces the now
		deprecated CSI = Ps1 ; Ps2 {

87

deuce's avatar
deuce committed
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
		[ p1 [ ; p2 ] ] q
		Defaults:  p1 = 0  p2 = 0
		Indicates the string is a sixel sequence.

		p1 selects the vertical height of a single pixel.  This
		may be overridden by the raster attributes command, and
		is deprecated.  Supported values
		
			Value      Vertical Size
			-----      -------------
			0,1,5,6    2 pixels
			2          5 pixels
			3,4        3 pixels
			7,8,9      1 pixel

		p2 indicates if unset sixels should be set to the current
		background colour.  If p2 is 1, positions specified as 0
		remain at their current colour.

		Any additional parameters are ignored.

		The rest of the string is made up of sixel data characters and
		sixel control functions.  Sixel data characters are in the
		rage of '?' (0x3f) to '~' (0x7e).  Each sixel data character
		represents six vertical pixels.  The data is extracted by
		subtracting 0x3f from the ASCII value of the character.
		The least significant bit is the topmost pixel.

                Sixel Control Functions
                ! Pn X
			Graphics Repeat Introducer
			The character X is repeated Pn times.
		" p1 ; p2 [ ; p3 [ ; p4 ] ]
			Raster Attributes
			p1 indicates the vertical size in pixels of each
			sixel.  p2 indicates the horizontal size in pixels.
			p3 and p4 define the height and width (in sixels)
			respectively of a block to fill with the background
			colour.  This block may not extend past the current
			bottom of the screen.  If any pixel data characters
			proceed this command, it is ignored.
		# p1
			Colour Select
			Selects the current foreground colour from the
			sixel palette.
		# p1 ; p2 ; p3 ; p4 ; p5
			Palette map
			Defines sixel palette entry p1 and sets it as the
			current foreground colour.  p2 specifies the colour
			space to define the colour in, the only supported
			value is 2.  p3, p4, and p5 specify the red, green,
			and blue content as a percentage (0-100).
		$
			Graphics Carriage Return
			Returns the active position to the left border of
			the same sixel row.  Generally, one pass per colour
			is used.  In passes after the first one, sixels
			with a value of zero are not overwritten with the
			background colour.
		-
			Graphics New Line
			Moves the active position to the left border of the
			next sixel row.

152

deuce's avatar
deuce committed
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
		$ q pt
		Request Status String (DECRQSS)

		pt is the intermediate and/or final characters of a control
		function to query the status of.  The terminal will send a
		response in the format

		DCS p1 $ r pt ST

		p1 is 1 if the terminal supports querying the control
		function and 0 if it does not.

		pt is the characters in the control function except the CSI
		characters.

deuce's avatar
deuce committed
168
169
170
		Currently supported values of p1:

		m	Request SGR parameters
171
		r	Request top and bottom margins
172
		s	Request left and right margins
173
174
175
		t	Request height in lines
		$|	Request width in columns
		*|	Request height in lines
deuce's avatar
deuce committed
176

177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200

		p1 [ ; p2 [ ; p3 ] ! z
		Define Macro (DECDMAC)
		Defaults: p2 = 0  p3 = 0
		
		Sets a macro to be replayed using CSI Pn * z

		p1 is the macro number to set, and make be between 0 and
		63 inclusive.

		If p2 is zero, the macro numbered p1 will be deleted. If
		p2 is one, all macros are deleted.
		
		If p3 is zero, the macro is defined using ASCII characters
		(0x20 - 0x7e and 0xa0 - 0xff only) if p3 is one, the macro
		is defined using hex pairs.
		
		When the macro is defined using hex pairs, a repeat
		sequence may be included in the format of ! Pn ; D..D ;
		Pn specifies the number of repeats (default of one instance)
		D..D is the sequence of pairs to send Pn times.  The 
		terminating ; may be left out if the sequence to be
		repeated ends at the end of the string.

201
202
203
ESC X	Start Of String (SOS)
	As the above strings, but may contain any characters except
	a Start Of String sequence or a String Terminator sequence.
deuce's avatar
deuce committed
204
	The string is currently ignored.
deuce's avatar
deuce committed
205

206
207
208
ESC \	String Terminator (ST)

ESC ]	Operating System Command (OSC)
209
210
211
212
213
214
215
216
217
218
219
220
221
	Begins a string consisting of the characters 0x08 - 0x0d and
	0x20-0x7e, terminated by a String Terminator (ST)
	Supported OSC values:
		4;(pX;pY)...
		Specifies one or more palette redefinitions.
		pX is the palette index, and pY is the colour definition
		Color format:
			rgb:R/G/B
			Where R, G, and B are a sequence of one to four
			hex digits representing the value of the
			red, green, and blue channels respectively.

		SOURCE: xterm
deuce's avatar
deuce committed
222

223
224
225
226
227
228
229
		104 [ ; Ps ... ]
		Resets palette entry to default.  If the entire string
		is "104", resets all colours.  Otherwise, only each index
		separated by a semicolon is reset.

		SOURCE: xterm

230
231
232
ESC ^	Privacy Message (PM)
	Begins a string consisting of the characters 0x08 - 0x0d and
	0x20-0x7e, terminated by a String Terminator (ST)
233
	The string is currently ignored.
deuce's avatar
deuce committed
234

235
236
237
238
ESC _	Application Program String (APS)
	Begins a string consisting of the characters 0x08 - 0x0d and
	0x20-0x7e, terminated by a String Terminator (ST)
	The string is currently ignored.
deuce's avatar
deuce committed
239

240
ESC c	Reset to Initial State (RIS)
deuce's avatar
deuce committed
241
242
243
	Resets all the terminal settings, clears the screen, and homes
	the cursor.

244
245
246
Control Sequences:
------------------

247
248
249
Control sequences start with the Control Sequence Introducer which is
ESC [  CSI will be used to express this from now on.

250
Control sequences are in the following format:
251
CSI {'0' (ZERO) to '?'}{SPACE to '/'}{'@' to '~'}
252
253
254
255
	There may be multiple characters from the {'0' (ZERO) to '?'}
	and {SPACE to '/'} before the terminating {'@' to '~'} character.

	Legal combinations not handled are silently dropped.
256
	Illegal combinations are displayed.
257
258
259
260

Sequence Parameters:
	Parameters are expressed by the {'0' (ZERO) to '?'} character set.
	Sequences which use parameters use decimal parameters separated by
deuce's avatar
deuce committed
261
	a ';'.  The use of a ':' from the set is reserved.
262
263
264
	If the parameter string begins with '<', '=', '>', or '?' then
	this is a non-standard extension to the ANSI spec.

deuce's avatar
deuce committed
265
266
267
268
269
270
	Pn          Indicates a single numeric parameter
	Pn1 ; Pn2   Two numeric parameters
	Pn...       Any number of numeric parameters
	Ps          Single selective parameter
	Ps1 ; Ps1   Two selective parameters
	Ps...       Any numer of selective parameters
271

deuce's avatar
deuce committed
272
	If a default is defined, the parameter is optional
273

274
CSI Pn @ (ICH)
deuce's avatar
deuce committed
275
	Insert Character(s)
deuce's avatar
deuce committed
276
277
	Defaults: Pn = 1
	Moves text from the current position to the right edge Pn characters
278
	to the right, with rightmost characters going off-screen and the
deuce's avatar
deuce committed
279
280
281
282
	resulting hole being filled with the current attribute.

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

283
284
CSI Pn SP @ (SL)
	Scroll Left
285
286
287
288
289
290
291
	Defaults: Pn = 1
	Shifts the contents of the screen left Pn columns(s) with
	leftmost columns going off-screen and the resulting hole being
	filled with the current attribute.

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

292
CSI Pn A (CUU)
deuce's avatar
deuce committed
293
	Cursor Up
deuce's avatar
deuce committed
294
295
	Defaults: Pn = 1
	Moves the cursor position up Pn lines from the current position.
deuce's avatar
deuce committed
296
297
298
299
300
	Attempting to move past the screen boundaries stops the cursor
	at the screen boundary.

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

301
302
CSI Pn SP A (SR)
	Scroll Right
303
304
305
306
307
308
309
	Defaults: Pn = 1
	Shifts the contents of the screen right Pn columns(s) with
	rightmost columns going off-screen and the resulting hole being
	filled with the current attribute.

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

310
CSI Pn B (CUD)
deuce's avatar
deuce committed
311
	Cursor Down
deuce's avatar
deuce committed
312
313
	Defaults: Pn = 1
	Moves the cursor position down Pn lines from the current position.
deuce's avatar
deuce committed
314
315
316
317
318
	Attempting to move past the screen boundaries stops the cursor
	at the screen boundary.

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

319
CSI Pn C (CUF)
deuce's avatar
deuce committed
320
	Cursor Right
deuce's avatar
deuce committed
321
322
	Defaults: Pn = 1
	Moves the cursor position right Pn columns from the current position.
deuce's avatar
deuce committed
323
324
325
326
327
	Attempting to move past the screen boundaries stops the cursor
	at the screen boundary.

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

328
CSI Pn D (CUB)
deuce's avatar
deuce committed
329
	Cursor Left
deuce's avatar
deuce committed
330
331
	Defaults: Pn = 1
	Moves the cursor position left Pn columns from the current position.
deuce's avatar
deuce committed
332
333
334
335
336
	Attempting to move past the screen boundaries stops the cursor
	at the screen boundary.

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

337
CSI Ps1 ; Ps2 sp D (FNT)
338
	Font Selection
deuce's avatar
deuce committed
339
	Defaults: Ps1 = 0  Ps2 = 0
340
	"sp" indicates a single space character.
deuce's avatar
deuce committed
341
342
	Sets font Ps1 to be the one indicated by Ps2.  Currently four fonts are
	supported.  Ps2 must be between 0 and 255.  Not all output types support
343
	font selection.  Only X11 and SDL currently do.
deuce's avatar
deuce committed
344
	Supported Ps1 values:
345
		0  - Default font
deuce's avatar
deuce committed
346
		1  - Font selected by the high intensity bit when CSI ? 31 h
347
		     is enabled
deuce's avatar
deuce committed
348
		2  - Font selected by the blink intensity bit when CSI ? 34 h
349
350
		     is enabled
		3  - Font selected by both the high intensity and blink bits
deuce's avatar
deuce committed
351
		     when both CSI ? 31 h and CSI ? 34 h are enabled
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
	Currently included fonts are:
		0  - Codepage 437 English
		1  - Codepage 1251 Cyrillic, (swiss)
		2  - Russian koi8-r
		3  - ISO-8859-2 Central European
		4  - ISO-8859-4 Baltic wide (VGA 9bit mapped)
		5  - Codepage 866 (c) Russian
		6  - ISO-8859-9 Turkish
		7  - haik8 codepage (use only with armscii8 screenmap)
		8  - ISO-8859-8 Hebrew
		9  - Ukrainian font koi8-u
		10 - ISO-8859-15 West European, (thin)
		11 - ISO-8859-4 Baltic (VGA 9bit mapped)
		12 - Russian koi8-r (b)
		13 - ISO-8859-4 Baltic wide
		14 - ISO-8859-5 Cyrillic
		15 - ARMSCII-8 Character set
		16 - ISO-8859-15 West European
		17 - Codepage 850 Multilingual Latin I, (thin)
		18 - Codepage 850 Multilingual Latin I
		19 - Codepage 885 Norwegian, (thin)
		20 - Codepage 1251 Cyrillic
		21 - ISO-8859-7 Greek
		22 - Russian koi8-r (c)
		23 - ISO-8859-4 Baltic
		24 - ISO-8859-1 West European
		25 - Codepage 866 Russian
		26 - Codepage 437 English, (thin)
		27 - Codepage 866 (b) Russian
		28 - Codepage 885 Norwegian
		29 - Ukrainian font cp866u
		30 - ISO-8859-1 West European, (thin)
		31 - Codepage 1131 Belarusian, (swiss)
385
386
387
388
389
		32 - Commodore 64 (UPPER)
		33 - Commodore 64 (Lower)
		34 - Commodore 128 (UPPER)
		35 - Commodore 128 (Lower)
		36 - Atari
deuce's avatar
deuce committed
390
391
		37 - P0T NOoDLE (Amiga)
		38 - mO'sOul (Amiga)
392
		39 - MicroKnight Plus (Amiga)
deuce's avatar
deuce committed
393
		40 - Topaz Plus (Amiga)
394
		41 - MicroKnight (Amiga)
deuce's avatar
deuce committed
395
396
		42 - Topaz (Amiga)

397
398
399
	Not all fonts are supported in all modes.  If a font is not supported
	in the current mode, no action is taken, but there should be a
	non-zero 'Font Selection result' value in the Font State Report.
400

deuce's avatar
deuce committed
401
402
	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

403
CSI Pn E (CNL)
deuce's avatar
deuce committed
404
	Cursor Next Line
deuce's avatar
deuce committed
405
406
	Defaults: Pn = 1
	Moves the cursor to the first column of the line Pn down from the
407
408
409
	current position. Moving past the bottom of the screen scrolls the
	screen up the remaining number of lines filling newly added lines
	with the current attribute.
deuce's avatar
deuce committed
410
411
412

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

413
CSI Pn F (CPL)
414
	Cursor Preceding Line
deuce's avatar
deuce committed
415
	Defaults: Pn = 1
416
	Moves the cursor to the first column of the row Pn up from the
417
418
	current position.  Attempting to move past the screen boundaries
	stops the cursor at the screen boundary.
419
420
421

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

422
CSI Pn G (CHA)
deuce's avatar
deuce committed
423
	Cursor Character Absolute
deuce's avatar
deuce committed
424
425
	Defaults: Pn = 1
	Movies the cursor to column Pn of the current row.
426

deuce's avatar
deuce committed
427
428
	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

429
CSI Pn1 ; Pn2 H (CUP)
430
	Cursor Position
deuce's avatar
deuce committed
431
432
	Defaults: Pn1 = 1  Pn2 = 1
	Moves the cursor to the Pn2th column of the Pn1th line.
deuce's avatar
deuce committed
433
434
435

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

436
CSI Ps J (ED)
deuce's avatar
deuce committed
437
	Erase in Page
deuce's avatar
deuce committed
438
439
	Defaults: Ps = 0
	Erases from the current screen according to the value of Ps
deuce's avatar
deuce committed
440
441
442
443
444
445
446
	0 - Erase from the current position to the end of the screen.
	1 - Erase from the current position to the start of the screen.
	2 - Erase entire screen.  As a violation of ECMA-048, also moves
	    the cursor to position 1/1 as a number of BBS programs assume
	    this behaviour.
	Erased characters are set to the current attribute.

deuce's avatar
deuce committed
447
	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf
deuce's avatar
deuce committed
448
449
	SOURCE BANSI.TXT

450
CSI Ps K (EL)
deuce's avatar
deuce committed
451
	Erase in Line
deuce's avatar
deuce committed
452
453
	Defaults: Ps = 0
	Erases from the current line according to the value pf Ps
deuce's avatar
deuce committed
454
455
456
457
458
459
460
	0 - Erase from the current position to the end of the line.
	1 - Erase from the current position to the start of the line.
	2 - Erase entire line.
	Erased characters are set to the current attribute.

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

461
CSI Pn L (IL)
deuce's avatar
deuce committed
462
	Insert Line(s)
deuce's avatar
deuce committed
463
464
	Defaults: Pn = 1
	Inserts Pn lines at the current line position.  The current line and
465
466
	those after it are scrolled down and the new empty lines are filled
	with the current attribute.
deuce's avatar
deuce committed
467
468
469

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

470
CSI Pn M (DL)
deuce's avatar
deuce committed
471
	Delete Line(s) / "ANSI" Music
deuce's avatar
deuce committed
472
473
	Defaults: Pn = 1
	Deletes the current line and the Pn - 1 lines after it scrolling the
deuce's avatar
deuce committed
474
475
476
477
	first non-deleted line up to the current line and filling the newly
	empty lines at the end of the screen with the current attribute.
	If "ANSI" Music is fully enabled (CSI = 2 M), performs "ANSI" music
	instead.
deuce's avatar
deuce committed
478
479
480
481
482
	See "ANSI" MUSIC section for more details.

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf
	SOURCE: BANSI.TXT

483
484
CSI = Ps M (STERMSAM)
	SyncTERM Set ANSI Music
deuce's avatar
deuce committed
485
486
487
488
489
490
491
492
493
494
	NON-STANDARD EXTENSION.
	Defaults:  Ps = 0
	Sets the current state of ANSI music parsing.
	0 - Only CSI | will introduce an ANSI music string.
	1 - Both CSI | and CSI N will introduce an ANSI music string.
	2 - CSI |, CSI N, and CSI M will all introduce an ANSI music string.
	    In this mode, Delete Line will not be available.

	SOURCE: CTerm only.

495
496
CSI N (BCAM)
	BananaCom ANSI Music
deuce's avatar
deuce committed
497
	"ANSI" Music / Not implemented.
deuce's avatar
deuce committed
498
	If "ANSI" Music is set to BananaCom (CSI = 1 M) or fully enabled
499
	(CSI = 2 M) performs "ANSI" music.  See "ANSI" MUSIC section for more
deuce's avatar
deuce committed
500
	details.
deuce's avatar
deuce committed
501
502
503

	SOURCE: BANSI.TXT

504
CSI Pn P (DCH)
deuce's avatar
deuce committed
505
	Delete Character
deuce's avatar
deuce committed
506
	Defaults: Pn = 1
507
508
509
510
	Deletes the character at the current position by shifting all
	characters from the current column + p1 left to the current column.
	Opened blanks at the end of the line are filled with the current
	attribute.
deuce's avatar
deuce committed
511
512
513

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

514
CSI Pn S (SU)
deuce's avatar
deuce committed
515
	Scroll Up
deuce's avatar
deuce committed
516
517
	Defaults: Pn = 1
	Scrolls all text on the screen up Pn lines.  New lines emptied at the
deuce's avatar
deuce committed
518
	bottom are filled with the current attribute.
deuce's avatar
deuce committed
519
520
521

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

deuce's avatar
deuce committed
522
523
CSI ? Ps1 ; Ps2 S (XTSRGA)
	XTerm Set or Request Graphics Attribute
524
525
526
527
528
529
	If Ps1 is 2, and Ps2 is 1, replies with the graphics screen information
	in the following format: CSI ? 2 ; 0 ; Px ; Py S
	Where Px is the width of the screen in pixels and Py is the height.

	SOURCE: XTerm

deuce's avatar
deuce committed
530
CSI Pn T (SD)
deuce's avatar
deuce committed
531
	Scroll Down
deuce's avatar
deuce committed
532
533
	Defaults: Pn = 1
	Scrolls all text on the screen down Pn lines.  New lines emptied at the
deuce's avatar
deuce committed
534
	top are filled with the current attribute.
deuce's avatar
deuce committed
535
536

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf
537

538
539
540
CSI U
	NON-STANDARD (Disabled in current code)
	Clear screen with default attribute.
deuce's avatar
deuce committed
541
542
	This code is *supposed* to go to the "next page" according to the
	ANSI/ECMA specs with CSI V going to "previous page"
543
544
545

	SOURCE: BANSI.TXT

deuce's avatar
deuce committed
546
CSI Pn X (ECH)
547
	Erase Character
deuce's avatar
deuce committed
548
	Defaults: Pn = 1
549
550
	Erase p1 characters starting at the current character.  Will not erase
	past the end of line.
551
552
553
554
	Erased characters are set to the current attribute.

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

deuce's avatar
deuce committed
555
CSI Pn Y (CVT)
deuce's avatar
deuce committed
556
557
558
559
560
561
562
	Cursor Line Tabulation
	Defaults: Pn = 1
	Move the cursor to the Pn-th next tab stop.
	Basically the same as sending TAB Pn times.

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

deuce's avatar
deuce committed
563
CSI Pn Z (CBT)
564
	Cursor Backward Tabulation
deuce's avatar
deuce committed
565
	Defaults: Pn = 1
566
	Move the cursor to the p1th preceding tab stop.  Will not go past the
deuce's avatar
deuce committed
567
	start of the line.
568
569
570

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

deuce's avatar
deuce committed
571
CSI Pn ` (HPA)
deuce's avatar
deuce committed
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
	Character Position Absolute
	Defaults: Pn = 1
	Move the cursor to the specified position on the current row.
	Will not go past the end of the line.

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

CSI Pn a
	Cursor Position Forward
	Defaults: Pn = 1
	Moves the cursor position forward Pn columns from the current position.
	Attempting to move past the screen boundaries stops the cursor
	at the screen boundary.

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

CSI Pn b
	Repeat
	Defaults: Pn = 1
	Repeats the previous graphic character Pn times.  Will not repeat
	escape sequences.

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

deuce's avatar
deuce committed
596
CSI Ps c
597
	Device Attributes
deuce's avatar
deuce committed
598
599
	Defaults: Ps = 0
	If Ps is 0, CTerm will reply with the sequence:
600
        CSI = 67;84;101;114;109;pN c
deuce's avatar
deuce committed
601
	64;84;101;114;109 is the ASCII values of the "CTerm" string.  pN is the
602
603
604
605
606
	CVS revision ID of CTerm with dots converted to semi-colons
	(e.g. "1;156").  Use the CVS revision to detect if a specific feature
	is available.  If you are adding features to a forked version of cterm,
	please do so by	adding an extra parameter to the end, not by
	incrementing any existing one!
607

deuce's avatar
deuce committed
608
609
	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

deuce's avatar
deuce committed
610
611
612
613
614
615
616
CSI Pn SP c
	Tab Stop Remove
	Defaults: None
	Removes a tab stop at postion Pn.

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

deuce's avatar
deuce committed
617
618
619
620
621
622
623
624
CSI < Ps c
	CTerm Device Attributes

	Defaults: Ps = 0
	If Pn is 0, CTerm will reply with the sequence:
        CSI < 0 ; Ps... c

	Possible values for Ps:
625
	1 - Loadable fonts are availabe via Device Control Strings
deuce's avatar
deuce committed
626
627
628
629
630
631
	2 - Palette entries may be modified via an Operating System Command
	    string
	3 - Pixel operations are supported (currently, sixel graphics)
	4 - The current font may be selected via CSI Ps1 ; Ps2 sp D
	5 - More than the standard 16 colours may by configured via
	    Operating System Command strings
632
633
	6 - Extended palette is available
	7 - Mouse is available
deuce's avatar
deuce committed
634

deuce's avatar
deuce committed
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
CSI Ps d
	Line Position Absolute
	Defaults: Ps = 1
	Moves to row specified by Ps.

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

CSI Ps e
	Line Position Relative
	Defaults: Ps = 1
	Moves forward Ps rows.

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

CSI Pn1 ; Pn2 f
	Cursor Position
	Defaults: Pn1 = 1  Pn2 = 1
	Moves the cursor to the Pn2th column of the Pn1th line.

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

CSI Pn g
	Clear Tab(s)
	Defaults: Pn = 0
	Deletes tab stpos according to the values of P1:
	0 - Deletes tab stop at current position.
	3 - Deletes all tab stops.
	5 - Deletes all tab stops.

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

deuce's avatar
deuce committed
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
CSI = 255 h
	NON-STANDARD EXTENSION
	Enable DoorWay Mode

	SOURCE: BANSI.TXT

CSI ? Ps... h
	NON-STANDARD EXTENSION
	Set Mode
	Sets one or more mode.  The following modes are supported:

	6 -  Enable origin mode.
	     In this mode, position parameters are relative to the top left of
	     the scrolling region, not the screen.  Defaults to reset.
	     SOURCE: Digital VT102 User Guide
	7 -  Enable auto wrap
	     This is the normal mode in which a write to the last column of a
	     row will move the cursor to the start of the next line triggering
	     a scroll if required to create a new line.  Defaults to set.
	     SOURCE: Digital VT102 User Guide
deuce's avatar
deuce committed
686
687
688
689
690
	9 -  X10 compatible mouse reporting
	     Mouse button presses will send a CSI M <button> <x> <y>
	     Where <button> is ' ' + button number (0-based)
	     <x> and <y> are '!' + position (0-based)
	     SOURCE: xterm
deuce's avatar
deuce committed
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
	25 - Display the cursor.  Defaults to set.
	     SOURCE: "Installing and Using the VT320 Video Terminal"
	31 - Enable bright alt character set
	     With this mode set, the bright (1) graphic rendition selects
	     characters from an alternate character set.  Defaults to reset.
	32 - Bright Intensity Disable
	     This makes the bright intensity bit not control the intensity.
	     Mostly for use with CSI ? 31 h to permit fonts in the same
	     colours.  Defaults to reset.
	33 - Blink to Bright Intensity Background
	     With this mode set, the blink (5,6) graphic renditions cause the
	     background colour to be high intensity rather than causing blink.
	     Defaults to reset.
	34 - Enable blink alt character set
	     With this mode set, the blink (5, 6) graphic renditions selects
	     characters from an alternate character set.  Defaults to reset
	35 - Blink Disabled
	     This makes the blink (5, 6) graphic renditions not cause the
	     character to blink.  Mostly for use with CSI ? 34 h to permit
	     fonts to be used without blinking.  Defaults to reset.
711
712
713
	69 - DEC Left Right Margin Mode enabled
	     Enables CSI s to set the left/right margins, and disables CSI s
	     from saving the current cursor position.
deuce's avatar
deuce committed
714
715
716
717
718
719
720
721
722
	80 - Sixel Scrolling Enabled
	     When this is set, the sixel active position begins in the
	     upper-left corner of the currently active text position.
	     When the sixel active position reaches the bottom of the
	     page, the page is scrolled up.  At the end of the sixel
	     string, a sixel newline is appended, and the current cursor
	     position is the one in which the bottom sixel is in.
	     Defaults to set.
	     SOURCE: VT330/VT340 Programmer Reference Manual
deuce's avatar
deuce committed
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
	1000 -  Normal tracking mode mouse reporting
	     Mouse button presses will send a CSI M <button> <x> <y>
	     Where <button> is ' ' + button number (0-based)
	     Mouse button releases will use a button number of 4
	     <x> and <y> are '!' + position (0-based)
	     SOURCE: xterm
	1001 -  Highlight tracking mode mouse reporting
	     (Not supported by SyncTERM)
	     SOURCE: xterm
	1002 -  Button-event tracking mode mouse reporting
	     Mouse button presses and movement when a button is pressed
	     will send a CSI M <button> <x> <y>
	     Where <button> is ' ' + button number (0-based)
	     32 is added to the button number for movement events.
	     Mouse button releases will use a button number of 4
	     <x> and <y> are '!' + position (0-based)
	     SOURCE: xterm
	1003 -  Any-event tracking mode mouse reporting
	     Mouse button presses and movement
	     will send a CSI M <button> <x> <y>
	     Where <button> is ' ' + button number (0-based)
	     32 is added to the button number for movement events.
	     Mouse button releases will use a button number of 4
	     <x> and <y> are '!' + position (0-based)
	     If no button is pressed, it acts as though button 0 is.
	     SOURCE: xterm
	1004 -  Focus-event tracking mode mouse reporting
	     (Not supported by SyncTERM)
	     SOURCE: xterm
	1005 -  UTF-8 encoded extended coordinates
	     (Not supported by SyncTERM)
	     SOURCE: xterm
	1006 -  SGR encoded extended coordinates
	     Instead of the CSI M method, the format of mouse reporting
	     is change to CSI < Pb ; Px ; Py M for presses and
	     CSI < Pb ; Px ; Py m for releases.
	     Instead of CSI M
	     Px and Py are one-based.
	     Pb remains the same (32 added for movement)
	     Button 3 is not used for release (separate code)
	     SOURCE: xterm
	1007 -  Alternate scroll mode
	     (Not supported by SyncTERM)
	     SOURCE: xterm
	1015 -  URXVT encoded extended coordinates
	     (Not supported by SyncTERM)
	     SOURCE: xterm
deuce's avatar
deuce committed
770

deuce's avatar
deuce committed
771
772
773
774
775
776
777
778
779
CSI Pn j
	Character Position Backward
	Defaults: Pn = 1
	Moves the cursor position left Pn columns from the current position.
	Attempting to move past the screen boundaries stops the cursor
	at the screen boundary.

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

deuce's avatar
deuce committed
780
781
782
783
784
785
786
787
788
CSI Pn k
	Line Position Backward
	Defaults: Pn = 1
	Moves the cursor position up Pn lines from the current position.
	Attempting to move past the screen boundaries stops the cursor
	at the screen boundary.

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf

deuce's avatar
deuce committed
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
CSI = 255 l
	NON-STANDARD EXTENSION
	Disable DoorWay Mode

	SOURCE: BANSI.TXT

CSI ? Ps... l
	NON-STANDARD EXTENSION
	Reset Mode
	Resets one or more mode.  The following modes are supported:

	6 -  Origin Mode
	     With this mode reset, position parameters are relative to the
	     top left of the screen, not the scrolling region.  Defaults
	     to reset.
	     SOURCE: Digital VT102 User Guide
	7 -  Disable auto wrap
	     Resetting this mode causes a write to the last column of a to
	     leave the cursor where it was before the write occurred,
	     overwriting anything which was previously written to the same
	     position.
	     SOURCE: Digital VT102 User Guide
deuce's avatar
deuce committed
811
	9 -  Disable X10 compatible mouse reporting
deuce's avatar
deuce committed
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
	25 - Hide the cursor.  Defaults to set.
	     SOURCE: "Installing and Using the VT320 Video Terminal"
	31 - Disable bright alt character set
	     With this mode reset, the bright (1) graphic rendition does not
	     select an alternative font.  Defaults to reset.
	32 - Bright Intensity Enable
	     When reset, bright intensity graphics rendition behaves normally.
	     Defaults to reset.
	33 - Disable Blink to Bright Intensity Background
	     With this mode set, the blink (5,6) graphic renditions do not
	     affect the background colour.  Defaults to reset.
	34 - Disable blink alt character set
	     With this mode reset, the blink (5, 6) graphic renditions do not
	     select characters from an alternate character set.  Defaults to
	     reset.
	35 - Blink Enable
	     With this mode reset, the blink (5,6) graphic renditions behave
	     normally (cause the characters to blink).  Defaults to reset.
830
831
832
833
	69 - DEC Left Right Margin Mode disabled
	     Disables CSI s from setting the left/right margins, and changes
	     it back to saving the current cursor position.  The current
	     left/right margins are maintained.
deuce's avatar
deuce committed
834
835
836
837
838
839
840
841
	80 - Sixel Scrolling Disabled
	     When this is reset, the sixel active position begins in the
	     upper-left corner of the page.  Any commands that attempt to
	     advance the sixel position past the bottom of the page are
	     ignored.  At the end of the sixel string, the current cursor
	     position is unchanged from where it was when the sixel string
	     started.  Defaults to set.
	     SOURCE: VT330/VT340 Programmer Reference Manual
deuce's avatar
deuce committed
842
843
844
845
846
	1000 -  Disable Normal tracking mode mouse reporting
	     SOURCE: xterm
	1001 -  Disable Highlight tracking mode mouse reporting
	     (Not supported by SyncTERM)
	     SOURCE: xterm
847
	1002 -  Disable Button-event tracking mode mouse reporting
deuce's avatar
deuce committed
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
	     SOURCE: xterm
	1003 -  Disable Any-event tracking mode mouse reporting
	     SOURCE: xterm
	1004 -  Disable Focus-event tracking mode mouse reporting
	     (Not supported by SyncTERM)
	     SOURCE: xterm
	1005 -  Disable UTF-8 encoded extended coordinates
	     (Not supported by SyncTERM)
	     SOURCE: xterm
	1006 -  Disable SGR encoded extended coordinates
	     SOURCE: xterm
	1007 -  Disable Alternate scroll mode
	     (Not supported by SyncTERM)
	     SOURCE: xterm
	1015 -  Disable URXVT encoded extended coordinates
	     (Not supported by SyncTERM)
	     SOURCE: xterm
deuce's avatar
deuce committed
865
866

CSI Ps... m
867
	Select Graphic Rendition
deuce's avatar
deuce committed
868
	Defaults: Ps1 = 0
deuce's avatar
deuce committed
869
	Sets or clears one or more text attributes.  Unlimited parameters are
deuce's avatar
deuce committed
870
	supported and are applied in received order.  The following are
871
	supported:
872
873
874
875
876
877
	                                        Blink Bold FG BG TF TB (Modified)
	0 -  Default attribute, white on black     X    X  X  X  X  X
	1 -  Bright Intensity                           X        X
	2 -  Dim intensity                              X        X
	5 -  Blink (By definition, slow blink)     X                X
	6 -  Blink (By definition, fast blink)     X                X
878
	     NOTE: Both blinks are the same speed.
879
880
	7 -  Negative Image - Reverses FG and BG           X  X  X  X
	8 -  Concealed characters, sets the                X     X  X
881
	     foreground colour to the background
882
	     colour.
883
884
885
	22 - Normal intensity                           X        X
	25 - Steady (Not blinking)                 X                X
	27 - Positive Image - Reverses FG and BG           X  X  X  X
886
	     NOTE: This should be a separate
887
888
	           attribute than 7 but this
	           implementation makes them equal
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
	30 - Black foreground                              X     X
	31 - Red foreground                                X     X
	32 - Green foreground                              X     X
	33 - Yellow foreground                             X     X
	34 - Blue foreground                               X     X
	35 - Magenta foreground                            X     X
	36 - Cyan foreground                               X     X
	37 - White foreground                              X     X
	38 - Extended Foreground (see notes)                     X
	39 - Default foreground (same as white)	           X     X
	40 - Black background                                 X     X
	41 - Red background                                   X     X
	42 - Green background                                 X     X
	43 - Yellow background                                X     X
	44 - Blue background                                  X     X
	45 - Magenta background                               X     X
	46 - Cyan background                                  X     X
	47 - White background                                 X     X
	48 - Extended Background (see notes)                        X
	49 - Default background (same as black)               X     X
909
910
911

	All others are ignored.

912
913
914
915
916
917
918
	Blink indicates the blink bit.
	Bold indicates the bold bit.
	FG indicates the foreground colour.
	BG indicates the background colour.
	TF indicates that the Tru Colour foreground is changed.
	TB indicates that the Tru Colour background is changed.

919
920
921
922
923
	NOTE: For 38 and 48, two additional formats are supported, a palette
	selection and a direct colour selection.

	For palette selection, an additional two parameters are required
	after that value.  They are considered part of the 38/48, not separate
deuce's avatar
deuce committed
924
925
926
927
928
929
930
931
932
	values.  The first additional parameter must be a 5.  The second
	additional parameter specified the palette index to use.  To set the
	foreground to orange, and the background to a fairly dark grey, you
	would send:
	CSI 38 ; 5 ; 214 ; 48 ; 5 ; 238 m

	The default palette is the XTerm 256-colour palette.  See here:
	https://jonasjacek.github.io/colors/

933
	For direct colour selection, an additional four parameters are required
934
	after that value.  They are considered part of the 38/48, not separate
935
936
937
938
939
940
	values.  The first additional parameter must be a 2.  The second,
	third, and fourth specify the R/G/B values respectively. CTerm handles
	this with an internal temporary palette, so scrollback may not have the
	correct colours.  The internal palette is large enough for all cells in
	a 132x60 screen to have unique foreground and background colours
	though, so the current screen should always be as expected.
941

942
	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf
deuce's avatar
deuce committed
943
	SOURCE: XTerm
944

deuce's avatar
deuce committed
945
CSI Ps n
946
	Device Status Report
deuce's avatar
deuce committed
947
	Defaults: Ps = 0
deuce's avatar
deuce committed
948
	A request for a status report.  CTerm handles the following three
deuce's avatar
deuce committed
949
950
	requests:
	5	- Request a DSR
951
952
		  CTerm will always reply with CSI 0 n indicating 
		  "ready, no malfunction detected"
deuce's avatar
deuce committed
953
954
955
	6	- Request active cursor position
		  CTerm will reply with CSI y ; x R where y is the current line
		  and x is
956
		  the current row.
deuce's avatar
deuce committed
957
	255	- NON-STANDARD EXTENSION
deuce's avatar
deuce committed
958
		  Replies as though a CSI 6 n was received with the cursor in
959
960
		  the bottom right corner.  i.e.: Returns the terminal size as
		  a position report.
961
962

	SOURCE: http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-048.pdf
deuce's avatar
deuce committed
963
		(parameters 5 and 6 only)
964
965
	SOURCE: BANSI.TXT (parameter 255)

deuce's avatar
deuce committed
966
967
968
969
970
971
CSI = Ps n
	NON-STANDARD EXTENSION
	State/Mode Request/Report
	Defaults: Ps = 1

	When Ps is 1, CTerm will respond with a Font State Report of the form
972
	CSI = 1 ;pF ;pR ;pS0 ;pS1 ;pS2 ;pS3 n
deuce's avatar
deuce committed
973
974
975
	pF is the first available loadable-font slot number
	pR is the result of the previous "Font Selection" request:
		0 = successful font selection
976
		1 = failed font selection
deuce's avatar
deuce committed
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
		99 = no font selection request has been received
	pS0 - pS3 contain the font slots numbers of previously successful
	"Font Selection" requests into the 4 available alternate-font
	style/attribute values:
		pS0 - normal attribute font slot
		PS1 - high intensity foreground attribute font slot
		PS2 - blink attribute font slot
		PS3 - high intensity blink attribute font slot

	When Ps is 2, CTerm will respond with a Mode Report of the form
	CSI = 2[;pN [;pN] [...]] n
	Where pN represent zero or more mode values set previously
	(e.g. via CSI ? pN h).	Mode values cleared (disabled via CSI ? pN l)
	will not be included in the set of values returned in the Mode
	Report.  If no modes are currently set, an empty parameter will be
	included as the first and only pN.

994
995
996
997
998
	When Ps is 3, CTerm will respond with a Mode Report of the form
	CSI = 3 ; pH ; pW n
	Where pH is the height of a character cell in pixels, and pW is
	the width of a character cell in pixels.

999
1000
	When Ps is 62, CTerm will respond with a Mode Report of the form
	CSI 32767 * {
For faster browsing, not all history is shown. View entire blame