|
|
1.1 root 1: /* Copyright (c) 1979 Regents of the University of California */
2: /*
3: * Capabilities from termcap
4: *
5: * The description of terminals is a difficult business, and we only
6: * attempt to summarize the capabilities here; for a full description
7: * see the paper describing termcap.
8: *
9: * Capabilities from termcap are of three kinds - string valued options,
10: * numeric valued options, and boolean options. The string valued options
11: * are the most complicated, since they may include padding information,
12: * which we describe now.
13: *
14: * Intelligent terminals often require padding on intelligent operations
15: * at high (and sometimes even low) speed. This is specified by
16: * a number before the string in the capability, and has meaning for the
17: * capabilities which have a P at the front of their comment.
18: * This normally is a number of milliseconds to pad the operation.
19: * In the current system which has no true programmible delays, we
20: * do this by sending a sequence of pad characters (normally nulls, but
21: * specifiable as "pc"). In some cases, the pad is better computed
22: * as some number of milliseconds times the number of affected lines
23: * (to bottom of screen usually, except when terminals have insert modes
24: * which will shift several lines.) This is specified as '12*' e.g.
25: * before the capability to say 12 milliseconds per affected whatever
26: * (currently always line). Capabilities where this makes sense say P*.
27: */
28: char tspace[256]; /* Space for capability strings */
29: char *aoftspace; /* Address of tspace for relocation */
30:
31: char *AL; /* P* Add new blank line */
32: char *BC; /* Back cursor */
33: char *BT; /* P Back tab */
34: char *CD; /* P* Clear to end of display */
35: char *CE; /* P Clear to end of line */
36: char *CL; /* P* Clear screen */
37: char *CM; /* P Cursor motion */
38: char *DC; /* P* Delete character */
39: char *DL; /* P* Delete line sequence */
40: char *DM; /* Delete mode (enter) */
41: char *DO; /* Down line sequence */
42: char *ED; /* End delete mode */
43: char *EI; /* End insert mode */
44: char *F0,*F1,*F2,*F3,*F4,*F5,*F6,*F7,*F8,*F9;
45: /* Strings sent by various function keys */
46: char *HO; /* Home cursor */
47: char *IC; /* P Insert character */
48: char *IM; /* Insert mode (give as ':im=:' if 'ic' */
49: char *IP; /* P* Insert pad after char ins'd using IM+IE */
50: char *KD; /* Keypad down arrow */
51: char *KE; /* Keypad don't xmit */
52: char *KH; /* Keypad home key */
53: char *KL; /* Keypad left arrow */
54: char *KR; /* Keypad right arrow */
55: char *KS; /* Keypad start xmitting */
56: char *KU; /* Keypad up arrow */
57: char *LL; /* Quick to last line, column 0 */
58: char *ND; /* Non-destructive space */
59: char PC; /* Pad character */
60: char *SE; /* Standout end (may leave space) */
61: char *SF; /* P Scroll forwards */
62: char *SO; /* Stand out begin (may leave space) */
63: char *SR; /* P Scroll backwards */
64: char *TA; /* P Tab (other than ^I or with padding) */
65: char *TE; /* Terminal end sequence */
66: char *TI; /* Terminal initial sequence */
67: char *UP; /* Upline */
68: char *VB; /* Visible bell */
69: char *VE; /* Visual end sequence */
70: char *VS; /* Visual start sequence */
71: bool AM; /* Automatic margins */
72: bool BS; /* Backspace works */
73: bool CA; /* Cursor addressible */
74: bool DA; /* Display may be retained above */
75: bool DB; /* Display may be retained below */
76: bool EO; /* Can erase overstrikes with ' ' */
77: bool GT; /* Gtty indicates tabs */
78: bool HC; /* Hard copy terminal */
79: bool HZ; /* Hazeltine ~ braindamage */
80: bool IN; /* Insert-null blessing */
81: bool MI; /* can move in insert mode */
82: bool NC; /* No Cr - \r snds \r\n then eats \n (dm2500) */
83: bool OS; /* Overstrike works */
84: bool UL; /* Underlining works even though !os */
85: bool XN; /* A newline gets eaten after wrap (concept) */
86: bool XT; /* Tabs are destructive */
87: /* X? is reserved for severely nauseous glitches */
88: /* If there are enough of these we may need bit masks! */
89:
90: /*
91: * From the tty modes...
92: */
93: bool NONL; /* Terminal can't hack linefeeds doing a CR */
94: bool UPPERCASE; /* Ick! */
95: short LINES; /* Number of lines on screen */
96: short COLUMNS;
97: short OCOLUMNS; /* Save COLUMNS for a hack in open mode */
98:
99: short outcol; /* Where the cursor is */
100: short outline;
101:
102: short destcol; /* Where the cursor should be */
103: short destline;
104:
105: #ifdef TIOCSETC
106: struct tchars ottyc, nttyc; /* For V7 character masking */
107: #endif
108: struct sgttyb tty; /* Always stty/gtty using this one structure */
109: bool normtty; /* Have to restor normal mode from normf */
110: int normf; /* Restore tty flags to this (someday) */
111:
112: short WBOT;
113: short WECHO;
114:
115: short costCM;
116:
117: #define MAXNOMACS 32 /* max number of macros */
118: #define MAXCHARMACS 512 /* max # of chars total in macros */
119: struct maps {
120: char *cap; /* pressing button that sends this.. */
121: char *mapto; /* .. maps to this string */
122: char *descr; /* legible description of key */
123: };
124: struct maps arrows[MAXNOMACS]; /* macro defs - 1st 5 built in */
125: char mapspace[MAXCHARMACS];
126: char *msnext; /* next free location in mapspace */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.