|
|
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: `cs' set scroll region. Takes two parameters, the vertical
47: positions of the first line to include in the scroll region
48: and the last line to include in the scroll region.
49: Both parameters are origin-zero. The effect of this
50: should be to cause a following insert-line or delete-line
51: not to move lines below the bottom of the scroll region.
52:
53: This is not the same convention that Emacs version 16 used.
54: That is because I was led astray by unclear documentation
55: of the meaning of %i in termcap strings. Since the termcap
56: documentation for `cs' is also unclear, I had to deduce the
57: correct parameter conventions from what would make the VT-100's
58: `cs' string work properly. From an incorrect assumption about
59: %i, I reached an incorrect conclusion about `cs', but the result
60: worked correctly on the VT100 and ANSII terminals. In Emacs
61: version 17, both `cs' and %i work correctly.
62:
63: The version 16 convention was to pass, for the second parameter,
64: the line number of the first line beyond the end of the
65: scroll region.
66:
67: `cS' set scroll region. Differs from `cs' in taking parameters
68: differently. There are four parameters:
69: 1. Total number of lines on the screen.
70: 2. Number of lines above desired scroll region.
71: 3. Number of lines below (outside of) desired scroll region.
72: 4. Total number of lines on the screen, like #1.
73: This is because an Ambassador needs the parameters like this.
74:
75: `cr', `do', `le'
76: Emacs will not attempt to use ^M, ^J or ^H for cursor motion
77: unless these capabilities are present and say to use those
78: characters.
79:
80: Defining these strings is important for getting maximum performance
81: from your terminal.
82:
83: Make sure that the `ti' string sets all modes needed for editing
84: in Emacs. For example, if your terminal has a mode that controls
85: wrap at the end of the line, you must decide whether to specify
86: the `am' flag in the termcap entry; whichever you decide, the `ti'
87: string should contain commands to set the mode that way.
88: (Emacs also sends the `vs' string after the `ti' string.
89: You can put the mode-setting commands in either one of them.)
90:
91: *** Specific Terminal Types ***
92:
93: Watch out for termcap entries for Ann Arbor Ambassadors that
94: give too little padding for clear-screen. 7.2 msec per line is right.
95: These are the strings whose padding you probably should change:
96: :al=1*\E[L:dl=1*\E[M:cd=7.2*\E[J:cl=7.2*\E[H\E[J:
97: I have sometimes seen `\E[2J' at the front of the `ti' string;
98: this is a clear-screen, very slow, and it can cause you to get
99: Control-s sent by the terminal at startup. I recommend removing
100: the `\E[2J' from the `ti' string.
101: The `ti' or `vs' strings also usually need stuff added to them, such as
102: \E[>33;52;54h\E[>30;37;38;39l
103: You might want to add the following to the `te' or `ve' strings:
104: \E[>52l;\E[>37;h
105: The following additional capabilities will improve performance:
106: :AL=1*\E[%dL:DL=1*\E[%dM:IC=4\E[%d@:DC=4\E[%dP:rp=1*%.\E[%db:
107: If you find that the Meta key does not work, make sure that
108: :km:
109: is present in the termcap entry.
110:
111: Watch out for termcap entries for VT100's that fail to specify
112: the `sf' string, or that omit the padding needed for the `sf' and `sr'
113: strings (2msec per line affected). What you need is
114: :sf=2*^J:sr=2*\EM:cs=\E[%i%d;%dr:
115:
116: The Concept-100 and Concept-108 have many modes that `ti' strings
117: often fail to initialize. If you have problems on one of these
118: terminals, that is probably the place to fix them. These terminals
119: can support an `rp' string.
120:
121: Watch out on HP terminals for problems with standout disappearing on
122: part of the mode line. These problems are due to the absence of
123: :sg#0: which some HP terminals need.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.