1*31058Sminshall/*
2*31058Sminshall *	@(#)termcodes.m4	3.1  10/29/86
3*31058Sminshall */
4*31058Sminshall
5*31058Sminshall/* the following allows us to generate our TC values.  it is a bit painful. */
6*31058Sminshall
7*31058Sminshalldefine(TCvalue, 128)
8*31058Sminshalldefine(TCbump, `define(`TCvalue', eval(TCvalue+1))')
9*31058Sminshalldefine(TCdefine, ``#define'')
10*31058Sminshalldefine(TC, `TCdefine define(`TCstring', TC_$1) TCstring TCvalue TCbump `
11*31058Sminshall		'InitialAscii("$1", TCstring) InitialAids(ifelse($2,,0,0x$2))')
12*31058Sminshalldefine(Is, `TCdefine TC_$1 TCvalue')
13*31058Sminshall
14*31058Sminshall#define IsTc(x) (((x)&0xff) >= TC_LOWEST)
15*31058Sminshall
16*31058Sminshall/* This lists the codes which are output from termin() */
17*31058Sminshall
18*31058Sminshalltypedef char TC_Aids_t;
19*31058Sminshall
20*31058Sminshalltypedef struct {
21*31058Sminshall    char	*tc_name;		/* what the name is */
22*31058Sminshall    char	tc_value;		/* what the value is */
23*31058Sminshall} TC_Ascii_t;
24*31058Sminshall
25*31058Sminshalltypedef struct {
26*31058Sminshall    char	*tc_name;		/* what the name is */
27*31058Sminshall    char	tc_value;		/* what the value is */
28*31058Sminshall    char	tc_aid;			/* what the AID is */
29*31058Sminshall} TC_AsciiAids_t;
30*31058Sminshall
31*31058Sminshall#ifdef DEFINEAIDS
32*31058Sminshall#define InitialAids(x)	x,
33*31058Sminshall#else
34*31058Sminshall#define InitialAids(x)
35*31058Sminshall#endif /* DEFINEAIDS */
36*31058Sminshall#ifdef LETS_SEE_ASCII
37*31058Sminshall#define InitialAscii(x, y) x, y,
38*31058Sminshall#else
39*31058Sminshall#define InitialAscii(x, y)
40*31058Sminshall#endif /* LETS_SEE_ASCII */
41*31058Sminshall
42*31058Sminshall#ifdef LETS_SEE_ASCII
43*31058Sminshall#ifdef DEFINEAIDS
44*31058Sminshallstatic TC_AsciiAids_t TC_AsciiAids[] = {
45*31058Sminshall#else /* so, no aids */
46*31058Sminshallstatic TC_Ascii_t TC_Ascii[] = {
47*31058Sminshall#endif /* DEFINEAIDS */
48*31058Sminshall#else
49*31058Sminshall#ifdef DEFINEAIDS
50*31058Sminshallstatic TC_Aids_t TC_Aids[] = {
51*31058Sminshall#endif /* LETS_SEE_ASCII */
52*31058Sminshall#endif
53*31058Sminshall
54*31058SminshallIs(LOWEST)
55*31058Sminshall
56*31058Sminshall/* the following are internal to the parser and generator */
57*31058Sminshall/* (and, generally, should not be specified by the user...) */
58*31058SminshallTC(CALL)			/* INT: call a state sequence */
59*31058SminshallTC(RETURN)			/* INT: return from TC_CALL */
60*31058SminshallTC(GOTO)			/* INT: goto next entry */
61*31058SminshallTC(NULL)			/* Illegal sequence; bell */
62*31058Sminshall
63*31058Sminshall
64*31058Sminshall
65*31058SminshallIs(LOWEST_USER)			/* lowest code settable by user */
66*31058Sminshall
67*31058SminshallTC(VERTICAL_BAR)
68*31058SminshallTC(CAPS_LOCK)
69*31058SminshallTC(MAKE_SHIFT)
70*31058SminshallTC(BREAK_SHIFT)
71*31058SminshallTC(DVCNL)
72*31058SminshallTC(MAKE_ALT)
73*31058SminshallTC(BREAK_ALT)
74*31058SminshallTC(SPACE)
75*31058SminshallTC(LEFT2)
76*31058SminshallTC(RIGHT2)
77*31058SminshallTC(MONOCASE)
78*31058SminshallTC(ATTN)			/* attention generator */
79*31058SminshallTC(LPRT)			/* local print */
80*31058SminshallTC(DP)				/* dup character */
81*31058SminshallTC(FM)				/* field mark character */
82*31058SminshallTC(CURSEL)			/* cursor select */
83*31058SminshallTC(CENTSIGN)			/* EBCDIC cent sign */
84*31058SminshallTC(RESHOW)			/* redisplay the screen */
85*31058SminshallTC(EINP)			/* erase input */
86*31058SminshallTC(EEOF)			/* erase end of field */
87*31058SminshallTC(DELETE)			/* delete character */
88*31058SminshallTC(INSRT)			/* toggle insert mode */
89*31058SminshallTC(TAB)				/* field tab */
90*31058SminshallTC(BTAB)			/* field back tab */
91*31058SminshallTC(COLTAB)			/* column tab */
92*31058SminshallTC(COLBAK)			/* column back tab */
93*31058SminshallTC(INDENT)			/* indent one tab stop */
94*31058SminshallTC(UNDENT)			/* undent one tab stop */
95*31058SminshallTC(NL)				/* new line */
96*31058SminshallTC(HOME)			/* home the cursor */
97*31058SminshallTC(UP)				/* up cursor */
98*31058SminshallTC(DOWN)			/* down cursor */
99*31058SminshallTC(RIGHT)			/* right cursor */
100*31058SminshallTC(LEFT)			/* left cursor */
101*31058SminshallTC(SETTAB)			/* set a column tab */
102*31058SminshallTC(DELTAB)			/* delete a column tab */
103*31058SminshallTC(SETMRG)			/* set left margin */
104*31058SminshallTC(SETHOM)			/* set home position */
105*31058SminshallTC(CLRTAB)			/* clear all column tabs */
106*31058SminshallTC(APLON)			/* apl on */
107*31058SminshallTC(APLOFF)			/* apl off */
108*31058SminshallTC(APLEND)			/* treat input as ascii */
109*31058SminshallTC(PCON)			/* xon/xoff on */
110*31058SminshallTC(PCOFF)			/* xon/xoff off */
111*31058SminshallTC(DISC)			/* disconnect (suspend) */
112*31058SminshallTC(INIT)			/* new terminal type */
113*31058SminshallTC(ALTK)			/* alternate keyboard dvorak */
114*31058SminshallTC(FLINP)			/* flush input */
115*31058SminshallTC(ERASE)			/* erase last character */
116*31058SminshallTC(WERASE)			/* erase last word */
117*31058SminshallTC(FERASE)			/* erase field */
118*31058SminshallTC(SYNCH)			/* user and us are in synch */
119*31058SminshallTC(RESET)			/* reset key -unlock keyboard */
120*31058SminshallTC(MASTER_RESET)		/* master reset key; flush, reset, repaint */
121*31058SminshallTC(XOFF)			/* please hold output */
122*31058SminshallTC(XON)				/* please give me output */
123*31058SminshallTC(ESCAPE)			/* enter telnet command mode */
124*31058SminshallTC(WORDTAB)			/* Go to first character of next word */
125*31058SminshallTC(WORDBACKTAB)			/* Go to first character of last word */
126*31058SminshallTC(WORDEND)			/* Go to last character of this/next word */
127*31058SminshallTC(FIELDEND)			/* Go to last non-blank of this field */
128*31058Sminshall
129*31058Sminshall
130*31058SminshallIs(LOWEST_AID)			/* lowest attn generator */
131*31058Sminshall
132*31058Sminshall/* the attention generating keys... */
133*31058Sminshall
134*31058SminshallTC(PA1, 6c)
135*31058SminshallTC(PA2, 6e)
136*31058SminshallTC(PA3, 6b)
137*31058SminshallTC(CLEAR, 6d)
138*31058SminshallTC(TREQ, f0)
139*31058SminshallTC(ENTER, 7d)
140*31058SminshallTC(SELPEN, 7e)	/* Really, only SELPEN with DESIGNATOR = space or null */
141*31058SminshallTC(PFK1, f1)
142*31058SminshallTC(PFK2, f2)
143*31058SminshallTC(PFK3, f3)
144*31058SminshallTC(PFK4, f4)
145*31058SminshallTC(PFK5, f5)
146*31058SminshallTC(PFK6, f6)
147*31058SminshallTC(PFK7, f7)
148*31058SminshallTC(PFK8, f8)
149*31058SminshallTC(PFK9, f9)
150*31058SminshallTC(PFK10, 7a)
151*31058SminshallTC(PFK11, 7b)
152*31058SminshallTC(PFK12, 7c)
153*31058SminshallTC(PFK13, c1)
154*31058SminshallTC(PFK14, c2)
155*31058SminshallTC(PFK15, c3)
156*31058SminshallTC(PFK16, c4)
157*31058SminshallTC(PFK17, c5)
158*31058SminshallTC(PFK18, c6)
159*31058SminshallTC(PFK19, c7)
160*31058SminshallTC(PFK20, c8)
161*31058SminshallTC(PFK21, c9)
162*31058SminshallTC(PFK22, 4a)
163*31058SminshallTC(PFK23, 4b)
164*31058SminshallTC(PFK24, 4c)
165*31058SminshallTC(PFK25, d1)
166*31058SminshallTC(PFK26, d2)
167*31058SminshallTC(PFK27, d3)
168*31058SminshallTC(PFK28, d4)
169*31058SminshallTC(PFK29, d5)
170*31058SminshallTC(PFK30, d6)
171*31058SminshallTC(PFK31, d7)
172*31058SminshallTC(PFK32, d8)
173*31058SminshallTC(PFK33, d9)
174*31058SminshallTC(PFK34, 5a)
175*31058SminshallTC(PFK35, 5b)
176*31058SminshallTC(PFK36, 5c)
177*31058Sminshall
178*31058SminshallIs(HIGHEST_AID)-1			/* highest AID value */
179*31058Sminshall#define IsAid(x)	(((x) >= TC_LOWEST_AID) && ((x) <= TC_HIGHEST_AID))
180*31058Sminshall
181*31058SminshallIs(HIGHEST)-1			/* highest TC value */
182*31058Sminshall
183*31058Sminshall#ifdef LETS_SEE_ASCII
184*31058Sminshall};
185*31058Sminshall#else
186*31058Sminshall#ifdef DEFINEAIDS
187*31058Sminshall};
188*31058Sminshall#endif
189*31058Sminshall#endif
190*31058Sminshall
191*31058Sminshall#ifdef DEFINEAIDS
192*31058Sminshall#ifdef LETS_SEE_ASCII
193*31058Sminshall#define TCtoAid(x)	TC_AsciiAids[(x)-TC_LOWEST].tc_aid
194*31058Sminshall#else
195*31058Sminshall#define TCtoAid(x)	TC_Aids[x-TC_LOWEST]
196*31058Sminshall#endif
197*31058Sminshall#endif
198