Add documentation to control codes

Add the documentation from the vt100 manual programmer:

Control 	Octal      Action Taken
Character	Code
-------------------------------------------
NUL		000	Ignored on input (not stored in input buffer;
			see full duplex protocol).
ENQ		005	Transmit answerback message.
BEL		007	Sound bell tone from keyboard.
BS		010	Move the cursor to the left one character position,
			unless it is at the left margin,
			in which case no action occurs.
HT		011	Move the cursor to the next tab stop,
			or to the right margin if no further tab stops
			are present on the line.
LF		012	This code causes a line feed or
			a new line operation. (See new line mode).
VT		013	Interpreted as LF.
FF		014	Interpreted as LF.
CR		015	Move cursor to the left margin on the current line.
SO		016	Invoke G1 character set, as designated by SCS
			control sequence.
SI		017	Select G0 character set, as selected by ESC ( sequence.
XON		021	Causes terminal to resume transmission.
XOFF		023	Causes terminal to stop transmitted all codes
			except XOFF and XON.
CAN		030	If sent during a control sequence, the sequence is
			immediately terminated and not executed. It also causes
			the error character to be displayed.
SUB		032	Interpreted as CAN.
ESC		033	Invokes a control sequence.
DEL		177	Ignored on input (not stored in input buffer).
--------------------------------------------
---
 st.c |   28 +++++++++++++++++++---------
 1 file changed, 19 insertions(+), 9 deletions(-)
This commit is contained in:
Roberto E. Vargas Caballero 2012-10-06 19:12:46 +02:00
parent 02f3b37a2d
commit ac8f05c45a
1 changed files with 19 additions and 9 deletions

28
st.c
View File

@ -1789,32 +1789,42 @@ tputc(char *c, int len) {
write(iofd, c, len); write(iofd, c, len);
switch(ascii) { switch(ascii) {
case '\t': case '\t': /* HT */
tputtab(1); tputtab(1);
return; return;
case '\b': case '\b': /* BS */
tmoveto(term.c.x-1, term.c.y); tmoveto(term.c.x-1, term.c.y);
return; return;
case '\r': case '\r': /* CR */
tmoveto(0, term.c.y); tmoveto(0, term.c.y);
return; return;
case '\f': case '\f': /* LF */
case '\v': case '\v': /* VT */
case '\n': case '\n': /* LF */
/* go to first col if the mode is set */ /* go to first col if the mode is set */
tnewline(IS_SET(MODE_CRLF)); tnewline(IS_SET(MODE_CRLF));
return; return;
case '\a': case '\a': /* BEL */
if(term.esc & ESC_STR) if(term.esc & ESC_STR)
break; break;
if(!(xw.state & WIN_FOCUSED)) if(!(xw.state & WIN_FOCUSED))
xseturgency(1); xseturgency(1);
return; return;
case '\033': case '\033': /* ESC */
csireset(); csireset();
term.esc = ESC_START; term.esc = ESC_START;
return; return;
case '\016': /* XXX: SO */
case '\017': /* XXX: SI */
case '\032': /* XXX: SUB */
case '\030': /* XXX: CAN */
default:
/* case '\005': ENQ (IGNORED) */
/* case '\000': NUL (IGNORED) */
/* case '\021': XON (IGNORED) */
/* case '\023': XOFF (IGNORED) */
/* case 0177: DEL (IGNORED) */
break;
} }
if(term.esc & ESC_START) { if(term.esc & ESC_START) {