|
|
1.1 root 1: This file describes what you must or might want to do to termcap entries
2: to make terminals work properly and efficiently with Emacs. Information
3: on likely problems with specific types of terminals appears at the end
4: of the file.
5:
6: *** What you want in a terminal ***
7:
8: Vital
9: 1. Easy to compute suitable padding for.
10: 2. Never ever sends ^S/^Q unless you type them, at least in one mode.
11:
12: Nice for speed
13: 1. Supports insert/delete of multiple lines in one command.
14: 2. Same for multiple characters, though doing them one by
15: one is usually fast enough except on emulators running on
16: machines with bitmap screens.
17:
18: Nice for usability
19: 1. Considerably more than 24 lines.
20: 2. Meta key (shift-like key that controls the 0200 bit
21: in every character you type).
22:
23: *** New termcap strings ***
24:
25: Emacs supports certain termcap strings that are not described in the
26: 4.2 manual but appear to be standard in system V. The one exception
27: is `cS', which I invented.
28:
29: `AL' insert several lines. Takes one parameter, the number of
30: lines to be inserted. You specify how to send this parameter
31: using a %-construct, just like the cursor positions in the `cm'
32: string.
33:
34: `DL' delete several lines. One parameter.
35:
36: `IC' insert several characters. One parameter.
37:
38: `DC' delete several characters. One parameter.
39:
40: `rp' repeat a character. Takes two parameters, the character
41: to be repeated and the number of times to repeat it.
42: Most likely you will use `%.' for sending the character
43: to be repeated. Emacs interprets a padding spec with a *
44: as giving the amount of padding per repetition.
45:
46: WARNING: Many terminals have a command to repeat the
47: *last character output* N times. This means that the character
48: will appear N+1 times in a row when the command argument is N.
49: However, the `rp' string's parameter is the total number of
50: times wanted, not one less. Therefore, such repeat commands
51: may be used in an `rp' string only if you use Emacs's special
52: termcap operator `%a-c\001' to subtract 1 from the repeat count
53: before substituting it into the string. It is probably safe
54: to use this even though the Unix termcap does not accept it
55: because programs other than Emacs probably won't look for `rp'
56: anyway.
57:
58: `cs' set scroll region. Takes two parameters, the vertical
59: positions of the first line to include in the scroll region
60: and the last line to include in the scroll region.
61: Both parameters are origin-zero. The effect of this
62: should be to cause a following insert-line or delete-line
63: not to move lines below the bottom of the scroll region.
64:
65: This is not the same convention that Emacs version 16 used.
66: That is because I was led astray by unclear documentation
67: of the meaning of %i in termcap strings. Since the termcap
68: documentation for `cs' is also unclear, I had to deduce the
69: correct parameter conventions from what would make the VT-100's
70: `cs' string work properly. From an incorrect assumption about
71: %i, I reached an incorrect conclusion about `cs', but the result
72: worked correctly on the VT100 and ANSII terminals. In Emacs
73: version 17, both `cs' and %i work correctly.
74:
75: The version 16 convention was to pass, for the second parameter,
76: the line number of the first line beyond the end of the
77: scroll region.
78:
79: `cS' set scroll region. Differs from `cs' in taking parameters
80: differently. There are four parameters:
81: 1. Total number of lines on the screen.
82: 2. Number of lines above desired scroll region.
83: 3. Number of lines below (outside of) desired scroll region.
84: 4. Total number of lines on the screen, like #1.
85: This is because an Ambassador needs the parameters like this.
86:
87: `cr', `do', `le'
88: Emacs will not attempt to use ^M, ^J or ^H for cursor motion
89: unless these capabilities are present and say to use those
90: characters.
91:
92: `km' Says the terminal has a Meta key.
93:
94: Defining these strings is important for getting maximum performance
95: from your terminal.
96:
97: Make sure that the `ti' string sets all modes needed for editing
98: in Emacs. For example, if your terminal has a mode that controls
99: wrap at the end of the line, you must decide whether to specify
100: the `am' flag in the termcap entry; whichever you decide, the `ti'
101: string should contain commands to set the mode that way.
102: (Emacs also sends the `vs' string after the `ti' string.
103: You can put the mode-setting commands in either one of them.)
104:
105: *** Specific Terminal Types ***
106:
107: Watch out for termcap entries for Ann Arbor Ambassadors that
108: give too little padding for clear-screen. 7.2 msec per line is right.
109: These are the strings whose padding you probably should change:
110: :al=1*\E[L:dl=1*\E[M:cd=7.2*\E[J:cl=7.2*\E[H\E[J:
111: I have sometimes seen `\E[2J' at the front of the `ti' string;
112: this is a clear-screen, very slow, and it can cause you to get
113: Control-s sent by the terminal at startup. I recommend removing
114: the `\E[2J' from the `ti' string.
115: The `ti' or `vs' strings also usually need stuff added to them, such as
116: \E[>33;52;54h\E[>30;37;38;39l
117: You might want to add the following to the `te' or `ve' strings:
118: \E[>52l\E[>37h
119: The following additional capabilities will improve performance:
120: :AL=1*\E[%dL:DL=1*\E[%dM:IC=4\E[%d@:DC=4\E[%dP:rp=1*%.\E[%a-c\001%db:
121: If you find that the Meta key does not work, make sure that
122: :km:
123: is present in the termcap entry.
124:
125: Watch out for termcap entries for VT100's that fail to specify
126: the `sf' string, or that omit the padding needed for the `sf' and `sr'
127: strings (2msec per line affected). What you need is
128: :sf=2*^J:sr=2*\EM:cs=\E[%i%d;%dr:
129:
130: The Concept-100 and Concept-108 have many modes that `ti' strings
131: often fail to initialize. If you have problems on one of these
132: terminals, that is probably the place to fix them. These terminals
133: can support an `rp' string.
134:
135: Watch out on HP terminals for problems with standout disappearing on
136: part of the mode line. These problems are due to the absence of
137: :sg#0: which some HP terminals need.
138:
139: The vi55 is said to require `ip=2'.
140:
141: The Sun console should have these capabilities for good performance.
142: :AL=\E[%dL:DL=\E[%dM:IC=\E[%d@:DC=\E[%dP:
143:
144: The vt220 needs to be set to vt220 mode, 7 bit, space parity
145: in order to work fully with TERM=vt220.
146:
147: If you are using a LAT terminal concentrator, you need to issue these
148: commands to turn off flow control:
149:
150: set port flow control disable
151: define port flow control disable
152:
153: On System V, in the terminfo database, various terminals may have
154: the `xt' flag that should not have it. `xt' should be present only
155: for the Teleray 1061 or equivalent terminal.
156:
157: In particular, System V for the 386 often has `xt' for terminal type
158: AT386 or AT386-M, which is used for the console. You should delete
159: this flag. Here is how:
160:
161: You can get a copy of the terminfo "source" for at386 using the
162: command: `infocmp at386 >at386.tic'. Edit the file at386.tic and remove
163: the `xt' flag. Then compile the new entry with: `tic at386.tic'.
164:
165: It is also reported that these terminal types sometimes have the wrong
166: reverse-scroll string. It should be \E[T, but sometimes is given as \E[S.
167:
168: Here is what watserv1!maytag!focsys!larry recommends for these terminals:
169:
170: # This copy of the terminfo description has been fixed.
171: # The suggestions came from a number of usenet postings.
172: #
173: # Intel AT/386 for color card with monochrome display
174: #
175: AT386-M|at386-m|386AT-M|386at-m|at/386 console,
176: am, bw, eo, xon,
177: cols#80, lines#25,
178: acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~,
179: bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
180: clear=\E[2J\E[H,
181: cr=\r, cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB,
182: cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C,
183: cup=\E[%i%p1%02d;%p2%02dH, cuu=\E[%p1%dA, cuu1=\E[A,
184: dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[1M,
185: ech=\E[%p1%dX,ed=\E[J, el=\E[K, el1=\E[1K\E[X, flash=^G, home=\E[H,
186: hpa=\E[%i%p1%dG, ich=\E[%p1%d@, ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L,
187: ind=\E[S, indn=\E[%p1%dS, invis=\E[9m,
188: is2=\E[0;10;38m, kbs=\b, kcbt=^], kclr=\E[2J,
189: kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A,
190: kdch1=\E[P, kend=\E[Y, kf1=\EOP, kf10=\EOY, kf11=\EOZ,
191: kf12=\EOA, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOT,
192: kf6=\EOU, kf7=\EOV, kf8=\EOW, kf9=\EOX, khome=\E[H,
193: kich1=\E[@, knp=\E[U, kpp=\E[V, krmir=\E0, rev=\E[7m, ri=\E[T,
194: rin=\E[%p1%dT, rmacs=\E[10m, rmso=\E[m, rmul=\E[m,
195: sgr=\E[10m\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p6%t;1%;%?%p9%t;12%;%?%p7%t;9%;m,
196: sgr0=\E[0;10m, smacs=\E[12m, smso=\E[7m, smul=\E[4m,
197:
198: #
199: # AT&T 386 color console
200: #
201: AT386|at386|386AT|386at|at/386 console,
202: colors#8, ncv#3, pairs#64,
203: is2=\E[0;10;39m,
204: op=\E[0m,
205: setb=\E[%?%p1%{0}%=%t40m
206: %e%p1%{1}%=%t44m
207: %e%p1%{2}%=%t42m
208: %e%p1%{3}%=%t46m
209: %e%p1%{4}%=%t41m
210: %e%p1%{5}%=%t45m
211: %e%p1%{6}%=%t43m
212: %e%p1%{7}%=%t47m%;,
213: setf=\E[%?%p1%{0}%=%t30m
214: %e%p1%{1}%=%t34m
215: %e%p1%{2}%=%t32m
216: %e%p1%{3}%=%t36m
217: %e%p1%{4}%=%t31m
218: %e%p1%{5}%=%t35m
219: %e%p1%{6}%=%t33m
220: %e%p1%{6}%=%t33m
221: %e%p1%{7}%=%t37m%;,
222: use=at386-m,
223: #
224: # Color console version that supports underline but maps blue
225: # foreground color to cyan.
226: #
227: AT386-UL|at386-ul|386AT-UL|386at-ul|at/386 console,
228: is2=\E[0;10;38m,
229: use=at386,
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.