1This is Info file ./termcap.info, produced by Makeinfo-1.55 from the
2input file ./termcap.texi.
3
4   This file documents the termcap library of the GNU system.
5
6   Copyright (C) 1988 Free Software Foundation, Inc.
7
8   Permission is granted to make and distribute verbatim copies of this
9manual provided the copyright notice and this permission notice are
10preserved on all copies.
11
12   Permission is granted to copy and distribute modified versions of
13this manual under the conditions for verbatim copying, provided that
14the entire resulting derived work is distributed under the terms of a
15permission notice identical to this one.
16
17   Permission is granted to copy and distribute translations of this
18manual into another language, under the above conditions for modified
19versions, except that this permission notice may be stated in a
20translation approved by the Foundation.
21
22
23File: termcap.info,  Node: Insdel Char,  Next: Standout,  Prev: Insdel Line,  Up: Capabilities
24
25Insert/Delete Character
26=======================
27
28   "Inserting a character" means creating a blank space in the middle
29of a line, and pushing the rest of the line rightward.  The character
30in the rightmost column is lost.
31
32   "Deleting a character" means causing the character to disappear from
33the screen, closing up the gap by moving the rest of the line leftward.
34A blank space appears in the rightmost column.
35
36   Insertion and deletion of characters is useful in programs that
37maintain an updating display some parts of which may get longer or
38shorter.  It is also useful in editors for redisplaying the results of
39editing within a line.
40
41   Many terminals provide commands to insert or delete a single
42character at the cursor position.  Some provide the ability to insert
43or delete several characters with one command, using the number of
44characters to insert or delete as a parameter.
45
46   Many terminals provide an insert mode in which outputting a graphic
47character has the added effect of inserting a position for that
48character.  A special command string is used to enter insert mode and
49another is used to exit it.  The reason for designing a terminal with
50an insert mode rather than an insert command is that inserting
51character positions is usually followed by writing characters into
52them.  With insert mode, this is as fast as simply writing the
53characters, except for the fixed overhead of entering and leaving
54insert mode.  However, when the line speed is great enough, padding may
55be required for the graphic characters output in insert mode.
56
57   Some terminals require you to enter insert mode and then output a
58special command for each position to be inserted.  Or they may require
59special commands to be output before or after each graphic character to
60be inserted.
61
62   Deletion of characters is usually accomplished by a straightforward
63command to delete one or several positions; but on some terminals, it
64is necessary to enter a special delete mode before using the delete
65command, and leave delete mode afterward.  Sometimes delete mode and
66insert mode are the same mode.
67
68   Some terminals make a distinction between character positions in
69which a space character has been output and positions which have been
70cleared.  On these terminals, the effect of insert or delete character
71runs to the first cleared position rather than to the end of the line.
72In fact, the effect may run to more than one line if there is no
73cleared position to stop the shift on the first line.  These terminals
74are identified by the `in' flag capability.
75
76   On terminals with the `in' flag, the technique of skipping over
77characters that you know were cleared, and then outputting text later
78on in the same line, causes later insert and delete character
79operations on that line to do nonstandard things.  A program that has
80any chance of doing this must check for the `in' flag and must be
81careful to write explicit space characters into the intermediate
82columns when `in' is present.
83
84   A plethora of terminal capabilities are needed to describe all of
85this complexity.  Here is a list of them all.  Following the list, we
86present an algorithm for programs to use to take proper account of all
87of these capabilities.
88
89`im'
90     String of commands to enter insert mode.
91
92     If the terminal has no special insert mode, but it can insert
93     characters with a special command, `im' should be defined with a
94     null value, because the `vi' editor assumes that insertion of a
95     character is impossible if `im' is not provided.
96
97     New programs should not act like `vi'.  They should pay attention
98     to `im' only if it is defined.
99
100`ei'
101     String of commands to leave insert mode.  This capability must be
102     present if `im' is.
103
104     On a few old terminals the same string is used to enter and exit
105     insert mode.  This string turns insert mode on if it was off, and
106     off it it was on.  You can tell these terminals because the `ei'
107     string equals the `im' string.  If you want to support these
108     terminals, you must always remember accurately whether insert mode
109     is in effect.  However, these terminals are obsolete, and it is
110     reasonable to refuse to support them.  On all modern terminals, you
111     can safely output `ei' at any time to ensure that insert mode is
112     turned off.
113
114`ic'
115     String of commands to insert one character position at the cursor.
116     The cursor does not move.
117
118     If outputting a graphic character while in insert mode is
119     sufficient to insert the character, then the `ic' capability
120     should be defined with a null value.
121
122     If your terminal offers a choice of ways to insert--either use
123     insert mode or use a special command--then define `im' and do not
124     define `ic', since this gives the most efficient operation when
125     several characters are to be inserted.  *Do not* define both
126     strings, for that means that *both* must be used each time
127     insertion is done.
128
129`ip'
130     String of commands to output following an inserted graphic
131     character in insert mode.  Often it is used just for a padding
132     spec, when padding is needed after an inserted character (*note
133     Padding::.).
134
135`IC'
136     String of commands to insert N character positions at and after
137     the cursor.  It has the same effect as repeating the `ic' string
138     and a space, N times.
139
140     If `IC' is provided, application programs may use it without first
141     entering insert mode.
142
143`mi'
144     Flag whose presence means it is safe to move the cursor while in
145     insert mode and assume the terminal remains in insert mode.
146
147`in'
148     Flag whose presence means that the terminal distinguishes between
149     character positions in which space characters have been output and
150     positions which have been cleared.
151
152   An application program can assume that the terminal can do character
153insertion if *any one of* the capabilities `IC', `im', `ic' or `ip' is
154provided.
155
156   To insert N blank character positions, move the cursor to the place
157to insert them and follow this algorithm:
158
159  1. If an `IC' string is provided, output it with parameter N and you
160     are finished.  Otherwise (or if you don't want to bother to look
161     for an `IC' string) follow the remaining steps.
162
163  2. Output the `im' string, if there is one, unless the terminal is
164     already in insert mode.
165
166  3. Repeat steps 4 through 6, N times.
167
168  4. Output the `ic' string if any.
169
170  5. Output a space.
171
172  6. Output the `ip' string if any.
173
174  7. Output the `ei' string, eventually, to exit insert mode.  There is
175     no need to do this right away.  If the `mi' flag is present, you
176     can move the cursor and the cursor will remain in insert mode;
177     then you can do more insertion elsewhere without reentering insert
178     mode.
179
180   To insert N graphic characters, position the cursor and follow this
181algorithm:
182
183  1. If an `IC' string is provided, output it with parameter N, then
184     output the graphic characters, and you are finished.  Otherwise
185     (or if you don't want to bother to look for an `IC' string) follow
186     the remaining steps.
187
188  2. Output the `im' string, if there is one, unless the terminal is
189     already in insert mode.
190
191  3. For each character to be output, repeat steps 4 through 6.
192
193  4. Output the `ic' string if any.
194
195  5. Output the next graphic character.
196
197  6. Output the `ip' string if any.
198
199  7. Output the `ei' string, eventually, to exit insert mode.  There is
200     no need to do this right away.  If the `mi' flag is present, you
201     can move the cursor and the cursor will remain in insert mode;
202     then you can do more insertion elsewhere without reentering insert
203     mode.
204
205   Note that this is not the same as the original Unix termcap
206specifications in one respect: it assumes that the `IC' string can be
207used without entering insert mode.  This is true as far as I know, and
208it allows you be able to avoid entering and leaving insert mode, and
209also to be able to avoid the inserted-character padding after the
210characters that go into the inserted positions.
211
212   Deletion of characters is less complicated; deleting one column is
213done by outputting the `dc' string.  However, there may be a delete
214mode that must be entered with `dm' in order to make `dc' work.
215
216`dc'
217     String of commands to delete one character position at the cursor.
218     If `dc' is not present, the terminal cannot delete characters.
219
220`DC'
221     String of commands to delete N characters starting at the cursor.
222     It has the same effect as repeating the `dc' string N times.  Any
223     terminal description that has `DC' also has `dc'.
224
225`dm'
226     String of commands to enter delete mode.  If not present, there is
227     no delete mode, and `dc' can be used at any time (assuming there is
228     a `dc').
229
230`ed'
231     String of commands to exit delete mode.  This must be present if
232     `dm' is.
233
234   To delete N character positions, position the cursor and follow these
235steps:
236
237  1. If the `DC' string is present, output it with parameter N and you
238     are finished.  Otherwise, follow the remaining steps.
239
240  2. Output the `dm' string, unless you know the terminal is already in
241     delete mode.
242
243  3. Output the `dc' string N times.
244
245  4. Output the `ed' string eventually.  If the flag capability `mi' is
246     present, you can move the cursor and do more deletion without
247     leaving and reentering delete mode.
248
249   As with the `IC' string, we have departed from the original termcap
250specifications by assuming that `DC' works without entering delete mode
251even though `dc' would not.
252
253   If the `dm' and `im' capabilities are both present and have the same
254value, it means that the terminal has one mode for both insertion and
255deletion.  It is useful for a program to know this, because then it can
256do insertions after deletions, or vice versa, without leaving
257insert/delete mode and reentering it.
258
259
260File: termcap.info,  Node: Standout,  Next: Underlining,  Prev: Insdel Char,  Up: Capabilities
261
262Standout and Appearance Modes
263=============================
264
265   "Appearance modes" are modifications to the ways characters are
266displayed.  Typical appearance modes include reverse video, dim, bright,
267blinking, underlined, invisible, and alternate character set.  Each
268kind of terminal supports various among these, or perhaps none.
269
270   For each type of terminal, one appearance mode or combination of
271them that looks good for highlighted text is chosen as the "standout
272mode".  The capabilities `so' and `se' say how to enter and leave
273standout mode.  Programs that use appearance modes only to highlight
274some text generally use the standout mode so that they can work on as
275many terminals as possible.  Use of specific appearance modes other
276than "underlined" and "alternate character set" is rare.
277
278   Terminals that implement appearance modes fall into two general
279classes as to how they do it.
280
281   In some terminals, the presence or absence of any appearance mode is
282recorded separately for each character position.  In these terminals,
283each graphic character written is given the appearance modes current at
284the time it is written, and keeps those modes until it is erased or
285overwritten.  There are special commands to turn the appearance modes
286on or off for characters to be written in the future.
287
288   In other terminals, the change of appearance modes is represented by
289a marker that belongs to a certain screen position but affects all
290following screen positions until the next marker.  These markers are
291traditionally called "magic cookies".
292
293   The same capabilities (`so', `se', `mb' and so on) for turning
294appearance modes on and off are used for both magic-cookie terminals
295and per-character terminals.  On magic cookie terminals, these give the
296commands to write the magic cookies.  On per-character terminals, they
297change the current modes that affect future output and erasure.  Some
298simple applications can use these commands without knowing whether or
299not they work by means of cookies.
300
301   However, a program that maintains and updates a display needs to know
302whether the terminal uses magic cookies, and exactly what their effect
303is.  This information comes from the `sg' capability.
304
305   The `sg' capability is a numeric capability whose presence indicates
306that the terminal uses magic cookies for appearance modes.  Its value is
307the number of character positions that a magic cookie occupies.  Usually
308the cookie occupies one or more character positions on the screen, and
309these character positions are displayed as blank, but in some terminals
310the cookie has zero width.
311
312   The `sg' capability describes both the magic cookie to turn standout
313on and the cookie to turn it off.  This makes the assumption that both
314kinds of cookie have the same width on the screen.  If that is not true,
315the narrower cookie must be "widened" with spaces until it has the same
316width as the other.
317
318   On some magic cookie terminals, each line always starts with normal
319display; in other words, the scope of a magic cookie never extends over
320more than one line.  But on other terminals, one magic cookie affects
321all the lines below it unless explicitly canceled.  Termcap does not
322define any way to distinguish these two ways magic cookies can work.
323To be safe, it is best to put a cookie at the beginning of each line.
324
325   On some per-character terminals, standout mode or other appearance
326modes may be canceled by moving the cursor.  On others, moving the
327cursor has no effect on the state of the appearance modes.  The latter
328class of terminals are given the flag capability `ms' ("can move in
329standout").  All programs that might have occasion to move the cursor
330while appearance modes are turned on must check for this flag; if it is
331not present, they should reset appearance modes to normal before doing
332cursor motion.
333
334   A program that has turned on only standout mode should use `se' to
335reset the standout mode to normal.  A program that has turned on only
336alternate character set mode should use `ae' to return it to normal.
337If it is possible that any other appearance modes are turned on, use the
338`me' capability to return them to normal.
339
340   Note that the commands to turn on one appearance mode, including `so'
341and `mb' ... `mr', if used while some other appearance modes are turned
342on, may combine the two modes on some terminals but may turn off the
343mode previously enabled on other terminals.  This is because some
344terminals do not have a command to set or clear one appearance mode
345without changing the others.  Programs should not attempt to use
346appearance modes in combination except with `sa', and when switching
347from one single mode to another should always turn off the previously
348enabled mode and then turn on the new desired mode.
349
350   On some old terminals, the `so' and `se' commands may be the same
351command, which has the effect of turning standout on if it is off, or
352off it is on.  It is therefore risky for a program to output extra `se'
353commands for good measure.  Fortunately, all these terminals are
354obsolete.
355
356   Programs that update displays in which standout-text may be replaced
357with non-standout text must check for the `xs' flag.  In a per-character
358terminal, this flag says that the only way to remove standout once
359written is to clear that portion of the line with the `ce' string or
360something even more powerful (*note Clearing::.); just writing new
361characters at those screen positions will not change the modes in
362effect there.  In a magic cookie terminal, `xs' says that the only way
363to remove a cookie is to clear a portion of the line that includes the
364cookie; writing a different cookie at the same position does not work.
365
366   Such programs must also check for the `xt' flag, which means that the
367terminal is a Teleray 1061.  On this terminal it is impossible to
368position the cursor at the front of a magic cookie, so the only two
369ways to remove a cookie are (1) to delete the line it is on or (2) to
370position the cursor at least one character before it (possibly on a
371previous line) and output the `se' string, which on these terminals
372finds and removes the next `so' magic cookie on the screen.  (It may
373also be possible to remove a cookie which is not at the beginning of a
374line by clearing that line.)  The `xt' capability also has implications
375for the use of tab characters, but in that regard it is obsolete (*Note
376Cursor Motion::).
377
378`so'
379     String of commands to enter standout mode.
380
381`se'
382     String of commands to leave standout mode.
383
384`sg'
385     Numeric capability, the width on the screen of the magic cookie.
386     This capability is absent in terminals that record appearance modes
387     character by character.
388
389`ms'
390     Flag whose presence means that it is safe to move the cursor while
391     the appearance modes are not in the normal state.  If this flag is
392     absent, programs should always reset the appearance modes to
393     normal before moving the cursor.
394
395`xs'
396     Flag whose presence means that the only way to reset appearance
397     modes already on the screen is to clear to end of line.  On a
398     per-character terminal, you must clear the area where the modes
399     are set.  On a magic cookie terminal, you must clear an area
400     containing the cookie.  See the discussion above.
401
402`xt'
403     Flag whose presence means that the cursor cannot be positioned
404     right in front of a magic cookie, and that `se' is a command to
405     delete the next magic cookie following the cursor.  See discussion
406     above.
407
408`mb'
409     String of commands to enter blinking mode.
410
411`md'
412     String of commands to enter double-bright mode.
413
414`mh'
415     String of commands to enter half-bright mode.
416
417`mk'
418     String of commands to enter invisible mode.
419
420`mp'
421     String of commands to enter protected mode.
422
423`mr'
424     String of commands to enter reverse-video mode.
425
426`me'
427     String of commands to turn off all appearance modes, including
428     standout mode and underline mode.  On some terminals it also turns
429     off alternate character set mode; on others, it may not.  This
430     capability must be present if any of `mb' ... `mr' is present.
431
432`as'
433     String of commands to turn on alternate character set mode.  This
434     mode assigns some or all graphic characters an alternate picture
435     on the screen.  There is no standard as to what the alternate
436     pictures look like.
437
438`ae'
439     String of commands to turn off alternate character set mode.
440
441`sa'
442     String of commands to turn on an arbitrary combination of
443     appearance modes.  It accepts 9 parameters, each of which controls
444     a particular kind of appearance mode.  A parameter should be 1 to
445     turn its appearance mode on, or zero to turn that mode off.  Most
446     terminals do not support the `sa' capability, even among those
447     that do have various appearance modes.
448
449     The nine parameters are, in order, STANDOUT, UNDERLINE, REVERSE,
450     BLINK, HALF-BRIGHT, DOUBLE-BRIGHT, BLANK, PROTECT, ALT CHAR SET.
451
452
453File: termcap.info,  Node: Underlining,  Next: Cursor Visibility,  Prev: Standout,  Up: Capabilities
454
455Underlining
456===========
457
458   Underlining on most terminals is a kind of appearance mode, much like
459standout mode.  Therefore, it may be implemented using magic cookies or
460as a flag in the terminal whose current state affects each character
461that is output.  *Note Standout::, for a full explanation.
462
463   The `ug' capability is a numeric capability whose presence indicates
464that the terminal uses magic cookies for underlining.  Its value is the
465number of character positions that a magic cookie for underlining
466occupies; it is used for underlining just as `sg' is used for standout.
467Aside from the simplest applications, it is impossible to use
468underlining correctly without paying attention to the value of `ug'.
469
470`us'
471     String of commands to turn on underline mode or to output a magic
472     cookie to start underlining.
473
474`ue'
475     String of commands to turn off underline mode or to output a magic
476     cookie to stop underlining.
477
478`ug'
479     Width of magic cookie that represents a change of underline mode;
480     or missing, if the terminal does not use a magic cookie for this.
481
482`ms'
483     Flag whose presence means that it is safe to move the cursor while
484     the appearance modes are not in the normal state.  Underlining is
485     an appearance mode.  If this flag is absent, programs should
486     always turn off underlining before moving the cursor.
487
488   There are two other, older ways of doing underlining: there can be a
489command to underline a single character, or the output of `_', the
490ASCII underscore character, as an overstrike could cause a character to
491be underlined.  New programs need not bother to handle these
492capabilities unless the author cares strongly about the obscure
493terminals which support them.  However, terminal descriptions should
494provide these capabilities when appropriate.
495
496`uc'
497     String of commands to underline the character under the cursor, and
498     move the cursor right.
499
500`ul'
501     Flag whose presence means that the terminal can underline by
502     overstriking an underscore character (`_'); some terminals can do
503     this even though they do not support overstriking in general.  An
504     implication of this flag is that when outputting new text to
505     overwrite old text, underscore characters must be treated
506     specially lest they underline the old text instead.
507
508
509File: termcap.info,  Node: Cursor Visibility,  Next: Bell,  Prev: Underlining,  Up: Capabilities
510
511Cursor Visibility
512=================
513
514   Some terminals have the ability to make the cursor invisible, or to
515enhance it.  Enhancing the cursor is often done by programs that plan
516to use the cursor to indicate to the user a position of interest that
517may be anywhere on the screen--for example, the Emacs editor enhances
518the cursor on entry.  Such programs should always restore the cursor to
519normal on exit.
520
521`vs'
522     String of commands to enhance the cursor.
523
524`vi'
525     String of commands to make the cursor invisible.
526
527`ve'
528     String of commands to return the cursor to normal.
529
530   If you define either `vs' or `vi', you must also define `ve'.
531
532
533File: termcap.info,  Node: Bell,  Next: Keypad,  Prev: Cursor Visibility,  Up: Capabilities
534
535Bell
536====
537
538   Here we describe commands to make the terminal ask for the user to
539pay attention to it.
540
541`bl'
542     String of commands to cause the terminal to make an audible sound.
543     If this capability is absent, the terminal has no way to make a
544     suitable sound.
545
546`vb'
547     String of commands to cause the screen to flash to attract
548     attention ("visible bell").  If this capability is absent, the
549     terminal has no way to do such a thing.
550
551
552File: termcap.info,  Node: Keypad,  Next: Meta Key,  Prev: Bell,  Up: Capabilities
553
554Keypad and Function Keys
555========================
556
557   Many terminals have arrow and function keys that transmit specific
558character sequences to the computer.  Since the precise sequences used
559depend on the terminal, termcap defines capabilities used to say what
560the sequences are.  Unlike most termcap string-valued capabilities,
561these are not strings of commands to be sent to the terminal, rather
562strings that are received from the terminal.
563
564   Programs that expect to use keypad keys should check, initially, for
565a `ks' capability and send it, to make the keypad actually transmit.
566Such programs should also send the `ke' string when exiting.
567
568`ks'
569     String of commands to make the keypad keys transmit.  If this
570     capability is not provided, but the others in this section are,
571     programs may assume that the keypad keys always transmit.
572
573`ke'
574     String of commands to make the keypad keys work locally.  This
575     capability is provided only if `ks' is.
576
577`kl'
578     String of input characters sent by typing the left-arrow key.  If
579     this capability is missing, you cannot expect the terminal to have
580     a left-arrow key that transmits anything to the computer.
581
582`kr'
583     String of input characters sent by typing the right-arrow key.
584
585`ku'
586     String of input characters sent by typing the up-arrow key.
587
588`kd'
589     String of input characters sent by typing the down-arrow key.
590
591`kh'
592     String of input characters sent by typing the "home-position" key.
593
594`K1' ... `K5'
595     Strings of input characters sent by the five other keys in a 3-by-3
596     array that includes the arrow keys, if the keyboard has such a
597     3-by-3 array.  Note that one of these keys may be the
598     "home-position" key, in which case one of these capabilities will
599     have the same value as the `kh' key.
600
601`k0'
602     String of input characters sent by function key 10 (or 0, if the
603     terminal has one labeled 0).
604
605`k1' ... `k9'
606     Strings of input characters sent by function keys 1 through 9,
607     provided for those function keys that exist.
608
609`kn'
610     Number: the number of numbered function keys, if there are more
611     than 10.
612
613`l0' ... `l9'
614     Strings which are the labels appearing on the keyboard on the keys
615     described by the capabilities `k0' ... `l9'.  These capabilities
616     should be left undefined if the labels are `f0' or `f10' and `f1'
617     ... `f9'.
618
619`kH'
620     String of input characters sent by the "home down" key, if there is
621     one.
622
623`kb'
624     String of input characters sent by the "backspace" key, if there is
625     one.
626
627`ka'
628     String of input characters sent by the "clear all tabs" key, if
629     there is one.
630
631`kt'
632     String of input characters sent by the "clear tab stop this column"
633     key, if there is one.
634
635`kC'
636     String of input characters sent by the "clear screen" key, if
637     there is one.
638
639`kD'
640     String of input characters sent by the "delete character" key, if
641     there is one.
642
643`kL'
644     String of input characters sent by the "delete line" key, if there
645     is one.
646
647`kM'
648     String of input characters sent by the "exit insert mode" key, if
649     there is one.
650
651`kE'
652     String of input characters sent by the "clear to end of line" key,
653     if there is one.
654
655`kS'
656     String of input characters sent by the "clear to end of screen"
657     key, if there is one.
658
659`kI'
660     String of input characters sent by the "insert character" or "enter
661     insert mode" key, if there is one.
662
663`kA'
664     String of input characters sent by the "insert line" key, if there
665     is one.
666
667`kN'
668     String of input characters sent by the "next page" key, if there is
669     one.
670
671`kP'
672     String of input characters sent by the "previous page" key, if
673     there is one.
674
675`kF'
676     String of input characters sent by the "scroll forward" key, if
677     there is one.
678
679`kR'
680     String of input characters sent by the "scroll reverse" key, if
681     there is one.
682
683`kT'
684     String of input characters sent by the "set tab stop in this
685     column" key, if there is one.
686
687`ko'
688     String listing the other function keys the terminal has.  This is a
689     very obsolete way of describing the same information found in the
690     `kH' ... `kT' keys.  The string contains a list of two-character
691     termcap capability names, separated by commas.  The meaning is
692     that for each capability name listed, the terminal has a key which
693     sends the string which is the value of that capability.  For
694     example, the value `:ko=cl,ll,sf,sr:' says that the terminal has
695     four function keys which mean "clear screen", "home down", "scroll
696     forward" and "scroll reverse".
697
698
699File: termcap.info,  Node: Meta Key,  Next: Initialization,  Prev: Keypad,  Up: Capabilities
700
701Meta Key
702========
703
704   A Meta key is a key on the keyboard that modifies each character you
705type by controlling the 0200 bit.  This bit is on if and only if the
706Meta key is held down when the character is typed.  Characters typed
707using the Meta key are called Meta characters.  Emacs uses Meta
708characters as editing commands.
709
710`km'
711     Flag whose presence means that the terminal has a Meta key.
712
713`mm'
714     String of commands to enable the functioning of the Meta key.
715
716`mo'
717     String of commands to disable the functioning of the Meta key.
718
719   If the terminal has `km' but does not have `mm' and `mo', it means
720that the Meta key always functions.  If it has `mm' and `mo', it means
721that the Meta key can be turned on or off.  Send the `mm' string to
722turn it on, and the `mo' string to turn it off.  I do not know why one
723would ever not want it to be on.
724
725
726File: termcap.info,  Node: Initialization,  Next: Pad Specs,  Prev: Meta Key,  Up: Capabilities
727
728Initialization
729==============
730
731`ti'
732     String of commands to put the terminal into whatever special modes
733     are needed or appropriate for programs that move the cursor
734     nonsequentially around the screen.  Programs that use termcap to do
735     full-screen display should output this string when they start up.
736
737`te'
738     String of commands to undo what is done by the `ti' string.
739     Programs that output the `ti' string on entry should output this
740     string when they exit.
741
742`is'
743     String of commands to initialize the terminal for each login
744     session.
745
746`if'
747     String which is the name of a file containing the string of
748     commands to initialize the terminal for each session of use.
749     Normally `is' and `if' are not both used.
750
751`i1'
752`i3'
753     Two more strings of commands to initialize the terminal for each
754     login session.  The `i1' string (if defined) is output before `is'
755     or `if', and the `i3' string (if defined) is output after.
756
757     The reason for having three separate initialization strings is to
758     make it easier to define a group of related terminal types with
759     slightly different initializations.  Define two or three of the
760     strings in the basic type; then the other types can override one
761     or two of the strings.
762
763`rs'
764     String of commands to reset the terminal from any strange mode it
765     may be in.  Normally this includes the `is' string (or other
766     commands with the same effects) and more.  What would go in the
767     `rs' string but not in the `is' string are annoying or slow
768     commands to bring the terminal back from strange modes that nobody
769     would normally use.
770
771`it'
772     Numeric value, the initial spacing between hardware tab stop
773     columns when the terminal is powered up.  Programs to initialize
774     the terminal can use this to decide whether there is a need to set
775     the tab stops.  If the initial width is 8, well and good; if it is
776     not 8, then the tab stops should be set; if they cannot be set,
777     the kernel is told to convert tabs to spaces, and other programs
778     will observe this and do likewise.
779
780`ct'
781     String of commands to clear all tab stops.
782
783`st'
784     String of commands to set tab stop at current cursor column on all
785     lines.
786
787`NF'
788     Flag whose presence means that the terminal does not support
789     XON/XOFF flow control.  Programs should not send XON (`C-q') or
790     XOFF (`C-s') characters to the terminal.
791
792
793File: termcap.info,  Node: Pad Specs,  Next: Status Line,  Prev: Initialization,  Up: Capabilities
794
795Padding Capabilities
796====================
797
798   There are two terminal capabilities that exist just to explain the
799proper way to obey the padding specifications in all the command string
800capabilities.  One, `pc', must be obeyed by all termcap-using programs.
801
802`pb'
803     Numeric value, the lowest baud rate at which padding is actually
804     needed.  Programs may check this and refrain from doing any
805     padding at lower speeds.
806
807`pc'
808     String of commands for padding.  The first character of this
809     string is to be used as the pad character, instead of using null
810     characters for padding.  If `pc' is not provided, use null
811     characters.  Every program that uses termcap must look up this
812     capability and use it to set the variable `PC' that is used by
813     `tputs'.  *Note Padding::.
814
815   Some termcap capabilities exist just to specify the amount of
816padding that the kernel should give to cursor motion commands used in
817ordinary sequential output.
818
819`dC'
820     Numeric value, the number of msec of padding needed for the
821     carriage-return character.
822
823`dN'
824     Numeric value, the number of msec of padding needed for the newline
825     (linefeed) character.
826
827`dB'
828     Numeric value, the number of msec of padding needed for the
829     backspace character.
830
831`dF'
832     Numeric value, the number of msec of padding needed for the
833     formfeed character.
834
835`dT'
836     Numeric value, the number of msec of padding needed for the tab
837     character.
838
839   In some systems, the kernel uses the above capabilities; in other
840systems, the kernel uses the paddings specified in the string
841capabilities `cr', `sf', `le', `ff' and `ta'.  Descriptions of
842terminals which require such padding should contain the `dC' ...  `dT'
843capabilities and also specify the appropriate padding in the
844corresponding string capabilities.  Since no modern terminals require
845padding for ordinary sequential output, you probably won't need to do
846either of these things.
847
848
849File: termcap.info,  Node: Status Line,  Next: Half-Line,  Prev: Pad Specs,  Up: Capabilities
850
851Status Line
852===========
853
854   A "status line" is a line on the terminal that is not used for
855ordinary display output but instead used for a special message.  The
856intended use is for a continuously updated description of what the
857user's program is doing, and that is where the name "status line" comes
858from, but in fact it could be used for anything.  The distinguishing
859characteristic of a status line is that ordinary output to the terminal
860does not affect it; it changes only if the special status line commands
861of this section are used.
862
863`hs'
864     Flag whose presence means that the terminal has a status line.  If
865     a terminal description specifies that there is a status line, it
866     must provide the `ts' and `fs' capabilities.
867
868`ts'
869     String of commands to move the terminal cursor into the status
870     line.  Usually these commands must specifically record the old
871     cursor position for the sake of the `fs' string.
872
873`fs'
874     String of commands to move the cursor back from the status line to
875     its previous position (outside the status line).
876
877`es'
878     Flag whose presence means that other display commands work while
879     writing the status line.  In other words, one can clear parts of
880     it, insert or delete characters, move the cursor within it using
881     `ch' if there is a `ch' capability, enter and leave standout mode,
882     and so on.
883
884`ds'
885     String of commands to disable the display of the status line.  This
886     may be absent, if there is no way to disable the status line
887     display.
888
889`ws'
890     Numeric value, the width of the status line.  If this capability is
891     absent in a terminal that has a status line, it means the status
892     line is the same width as the other lines.
893
894     Note that the value of `ws' is sometimes as small as 8.
895
896
897File: termcap.info,  Node: Half-Line,  Next: Printer,  Prev: Status Line,  Up: Capabilities
898
899Half-Line Motion
900================
901
902   Some terminals have commands for moving the cursor vertically by
903half-lines, useful for outputting subscripts and superscripts.  Mostly
904it is hardcopy terminals that have such features.
905
906`hu'
907     String of commands to move the cursor up half a line.  If the
908     terminal is a display, it is your responsibility to avoid moving
909     up past the top line; however, most likely the terminal that
910     supports this is a hardcopy terminal and there is nothing to be
911     concerned about.
912
913`hd'
914     String of commands to move the cursor down half a line.  If the
915     terminal is a display, it is your responsibility to avoid moving
916     down past the bottom line, etc.
917
918
919File: termcap.info,  Node: Printer,  Prev: Half-Line,  Up: Capabilities
920
921Controlling Printers Attached to Terminals
922==========================================
923
924   Some terminals have attached hardcopy printer ports.  They may be
925able to copy the screen contents to the printer; they may also be able
926to redirect output to the printer.  Termcap does not have anything to
927tell the program whether the redirected output appears also on the
928screen; it does on some terminals but not all.
929
930`ps'
931     String of commands to cause the contents of the screen to be
932     printed.  If it is absent, the screen contents cannot be printed.
933
934`po'
935     String of commands to redirect further output to the printer.
936
937`pf'
938     String of commands to terminate redirection of output to the
939     printer.  This capability must be present in the description if
940     `po' is.
941
942`pO'
943     String of commands to redirect output to the printer for next N
944     characters of output, regardless of what they are.  Redirection
945     will end automatically after N characters of further output.  Until
946     then, nothing that is output can end redirection, not even the
947     `pf' string if there is one.  The number N should not be more than
948     255.
949
950     One use of this capability is to send non-text byte sequences
951     (such as bit-maps) to the printer.
952
953   Most terminals with printers do not support all of `ps', `po' and
954`pO'; any one or two of them may be supported.  To make a program that
955can send output to all kinds of printers, it is necessary to check for
956all three of these capabilities, choose the most convenient of the ones
957that are provided, and use it in its own appropriate fashion.
958
959
960File: termcap.info,  Node: Summary,  Next: Var Index,  Prev: Capabilities,  Up: Top
961
962Summary of Capability Names
963***************************
964
965   Here are all the terminal capability names in alphabetical order
966with a brief description of each.  For cross references to their
967definitions, see the index of capability names (*note Cap Index::.).
968
969`ae'
970     String to turn off alternate character set mode.
971
972`al'
973     String to insert a blank line before the cursor.
974
975`AL'
976     String to insert N blank lines before the cursor.
977
978`am'
979     Flag: output to last column wraps cursor to next line.
980
981`as'
982     String to turn on alternate character set mode.like.
983
984`bc'
985     Very obsolete alternative name for the `le' capability.
986
987`bl'
988     String to sound the bell.
989
990`bs'
991     Obsolete flag: ASCII backspace may be used for leftward motion.
992
993`bt'
994     String to move the cursor left to the previous hardware tab stop
995     column.
996
997`bw'
998     Flag: `le' at left margin wraps to end of previous line.
999
1000`CC'
1001     String to change terminal's command character.
1002
1003`cd'
1004     String to clear the line the cursor is on, and following lines.
1005
1006`ce'
1007     String to clear from the cursor to the end of the line.
1008
1009`ch'
1010     String to position the cursor at column C in the same line.
1011
1012`cl'
1013     String to clear the entire screen and put cursor at upper left
1014     corner.
1015
1016`cm'
1017     String to position the cursor at line L, column C.
1018
1019`CM'
1020     String to position the cursor at line L, column C, relative to
1021     display memory.
1022
1023`co'
1024     Number: width of the screen.
1025
1026`cr'
1027     String to move cursor sideways to left margin.
1028
1029`cs'
1030     String to set the scroll region.
1031
1032`cS'
1033     Alternate form of string to set the scroll region.
1034
1035`ct'
1036     String to clear all tab stops.
1037
1038`cv'
1039     String to position the cursor at line L in the same column.
1040
1041`da'
1042     Flag: data scrolled off top of screen may be scrolled back.
1043
1044`db'
1045     Flag: data scrolled off bottom of screen may be scrolled back.
1046
1047`dB'
1048     Obsolete number: msec of padding needed for the backspace
1049     character.
1050
1051`dc'
1052     String to delete one character position at the cursor.
1053
1054`dC'
1055     Obsolete number: msec of padding needed for the carriage-return
1056     character.
1057
1058`DC'
1059     String to delete N characters starting at the cursor.
1060
1061`dF'
1062     Obsolete number: msec of padding needed for the formfeed character.
1063
1064`dl'
1065     String to delete the line the cursor is on.
1066
1067`DL'
1068     String to delete N lines starting with the cursor's line.
1069
1070`dm'
1071     String to enter delete mode.
1072
1073`dN'
1074     Obsolete number: msec of padding needed for the newline character.
1075
1076`do'
1077     String to move the cursor vertically down one line.
1078
1079`DO'
1080     String to move cursor vertically down N lines.
1081
1082`ds'
1083     String to disable the display of the status line.
1084
1085`dT'
1086     Obsolete number: msec of padding needed for the tab character.
1087
1088`ec'
1089     String of commands to clear N characters at cursor.
1090
1091`ed'
1092     String to exit delete mode.
1093
1094`ei'
1095     String to leave insert mode.
1096
1097`eo'
1098     Flag: output of a space can erase an overstrike.
1099
1100`es'
1101     Flag: other display commands work while writing the status line.
1102
1103`ff'
1104     String to advance to the next page, for a hardcopy terminal.
1105
1106`fs'
1107     String to move the cursor back from the status line to its
1108     previous position (outside the status line).
1109
1110`gn'
1111     Flag: this terminal type is generic, not real.
1112
1113`hc'
1114     Flag: hardcopy terminal.
1115
1116`hd'
1117     String to move the cursor down half a line.
1118
1119`ho'
1120     String to position cursor at upper left corner.
1121
1122`hs'
1123     Flag: the terminal has a status line.
1124
1125`hu'
1126     String to move the cursor up half a line.
1127
1128`hz'
1129     Flag: terminal cannot accept `~' as output.
1130
1131`i1'
1132     String to initialize the terminal for each login session.
1133
1134`i3'
1135     String to initialize the terminal for each login session.
1136
1137`ic'
1138     String to insert one character position at the cursor.
1139
1140`IC'
1141     String to insert N character positions at the cursor.
1142
1143`if'
1144     String naming a file of commands to initialize the terminal.
1145
1146`im'
1147     String to enter insert mode.
1148
1149`in'
1150     Flag: outputting a space is different from moving over empty
1151     positions.
1152
1153`ip'
1154     String to output following an inserted character in insert mode.
1155
1156`is'
1157     String to initialize the terminal for each login session.
1158
1159`it'
1160     Number: initial spacing between hardware tab stop columns.
1161
1162`k0'
1163     String of input sent by function key 0 or 10.
1164
1165`k1 ... k9'
1166     Strings of input sent by function keys 1 through 9.
1167
1168`K1 ... K5'
1169     Strings sent by the five other keys in 3-by-3 array with arrows.
1170
1171`ka'
1172     String of input sent by the "clear all tabs" key.
1173
1174`kA'
1175     String of input sent by the "insert line" key.
1176
1177`kb'
1178     String of input sent by the "backspace" key.
1179
1180`kC'
1181     String of input sent by the "clear screen" key.
1182
1183`kd'
1184     String of input sent by typing the down-arrow key.
1185
1186`kD'
1187     String of input sent by the "delete character" key.
1188
1189`ke'
1190     String to make the function keys work locally.
1191
1192`kE'
1193     String of input sent by the "clear to end of line" key.
1194
1195`kF'
1196     String of input sent by the "scroll forward" key.
1197
1198`kh'
1199     String of input sent by typing the "home-position" key.
1200
1201`kH'
1202     String of input sent by the "home down" key.
1203
1204`kI'
1205     String of input sent by the "insert character" or "enter insert
1206     mode" key.
1207
1208`kl'
1209     String of input sent by typing the left-arrow key.
1210
1211`kL'
1212     String of input sent by the "delete line" key.
1213
1214`km'
1215     Flag: the terminal has a Meta key.
1216
1217`kM'
1218     String of input sent by the "exit insert mode" key.
1219
1220`kn'
1221     Numeric value, the number of numbered function keys.
1222
1223`kN'
1224     String of input sent by the "next page" key.
1225
1226`ko'
1227     Very obsolete string listing the terminal's named function keys.
1228
1229`kP'
1230     String of input sent by the "previous page" key.
1231
1232`kr'
1233     String of input sent by typing the right-arrow key.
1234
1235`kR'
1236     String of input sent by the "scroll reverse" key.
1237
1238`ks'
1239     String to make the function keys transmit.
1240
1241`kS'
1242     String of input sent by the "clear to end of screen" key.
1243
1244`kt'
1245     String of input sent by the "clear tab stop this column" key.
1246
1247`kT'
1248     String of input sent by the "set tab stop in this column" key.
1249
1250`ku'
1251     String of input sent by typing the up-arrow key.
1252
1253`l0'
1254     String on keyboard labelling function key 0 or 10.
1255
1256`l1 ... l9'
1257     Strings on keyboard labelling function keys 1 through 9.
1258
1259`le'
1260     String to move the cursor left one column.
1261
1262`LE'
1263     String to move cursor left N columns.
1264
1265`li'
1266     Number: height of the screen.
1267
1268`ll'
1269     String to position cursor at lower left corner.
1270
1271`lm'
1272     Number: lines of display memory.
1273
1274`LP'
1275     Flag: writing to last column of last line will not scroll.
1276
1277`mb'
1278     String to enter blinking mode.
1279
1280`md'
1281     String to enter double-bright mode.
1282
1283`me'
1284     String to turn off all appearance modes
1285
1286`mh'
1287     String to enter half-bright mode.
1288
1289`mi'
1290     Flag: cursor motion in insert mode is safe.
1291
1292`mk'
1293     String to enter invisible mode.
1294
1295`mm'
1296     String to enable the functioning of the Meta key.
1297
1298`mo'
1299     String to disable the functioning of the Meta key.
1300
1301`mp'
1302     String to enter protected mode.
1303
1304`mr'
1305     String to enter reverse-video mode.
1306
1307`ms'
1308     Flag: cursor motion in standout mode is safe.
1309
1310`nc'
1311     Obsolete flag: do not use ASCII carriage-return on this terminal.
1312
1313`nd'
1314     String to move the cursor right one column.
1315
1316`NF'
1317     Flag: do not use XON/XOFF flow control.
1318
1319`nl'
1320     Obsolete alternative name for the `do' and `sf' capabilities.
1321
1322`ns'
1323     Flag: the terminal does not normally scroll for sequential output.
1324
1325`nw'
1326     String to move to start of next line, possibly clearing rest of
1327     old line.
1328
1329`os'
1330     Flag: terminal can overstrike.
1331
1332`pb'
1333     Number: the lowest baud rate at which padding is actually needed.
1334
1335`pc'
1336     String containing character for padding.
1337
1338`pf'
1339     String to terminate redirection of output to the printer.
1340
1341`po'
1342     String to redirect further output to the printer.
1343
1344`pO'
1345     String to redirect N characters ofoutput to the printer.
1346
1347`ps'
1348     String to print the screen on the attached printer.
1349
1350`rc'
1351     String to move to last saved cursor position.
1352
1353`RI'
1354     String to move cursor right N columns.
1355
1356`rp'
1357     String to output character C repeated N times.
1358
1359`rs'
1360     String to reset the terminal from any strange modes.
1361
1362`sa'
1363     String to turn on an arbitrary combination of appearance modes.
1364
1365`sc'
1366     String to save the current cursor position.
1367
1368`se'
1369     String to leave standout mode.
1370
1371`sf'
1372     String to scroll the screen one line up.
1373
1374`SF'
1375     String to scroll the screen N lines up.
1376
1377`sg'
1378     Number: width of magic standout cookie.  Absent if magic cookies
1379     are not used.
1380
1381`so'
1382     String to enter standout mode.
1383
1384`sr'
1385     String to scroll the screen one line down.
1386
1387`SR'
1388     String to scroll the screen N line down.
1389
1390`st'
1391     String to set tab stop at current cursor column on all lines.
1392     programs.
1393
1394`ta'
1395     String to move the cursor right to the next hardware tab stop
1396     column.
1397
1398`te'
1399     String to return terminal to settings for sequential output.
1400
1401`ti'
1402     String to initialize terminal for random cursor motion.
1403
1404`ts'
1405     String to move the terminal cursor into the status line.
1406
1407`uc'
1408     String to underline one character and move cursor right.
1409
1410`ue'
1411     String to turn off underline mode
1412
1413`ug'
1414     Number: width of underlining magic cookie.  Absent if underlining
1415     doesn't use magic cookies.
1416
1417`ul'
1418     Flag: underline by overstriking with an underscore.
1419
1420`up'
1421     String to move the cursor vertically up one line.
1422
1423`UP'
1424     String to move cursor vertically up N lines.
1425
1426`us'
1427     String to turn on underline mode
1428
1429`vb'
1430     String to make the screen flash.
1431
1432`ve'
1433     String to return the cursor to normal.
1434
1435`vi'
1436     String to make the cursor invisible.
1437
1438`vs'
1439     String to enhance the cursor.
1440
1441`wi'
1442     String to set the terminal output screen window.
1443
1444`ws'
1445     Number: the width of the status line.
1446
1447`xb'
1448     Flag: superbee terminal.
1449
1450`xn'
1451     Flag: cursor wraps in a strange way.
1452
1453`xs'
1454     Flag: clearing a line is the only way to clear the appearance
1455     modes of positions in that line (or, only way to remove magic
1456     cookies on that line).
1457
1458`xt'
1459     Flag: Teleray 1061; several strange characteristics.
1460
1461
1462File: termcap.info,  Node: Var Index,  Next: Cap Index,  Prev: Summary,  Up: Top
1463
1464Variable and Function Index
1465***************************
1466
1467* Menu:
1468
1469* BC:                                   tgoto.
1470* ospeed:                               Output Padding.
1471* PC:                                   Output Padding.
1472* tgetent:                              Find.
1473* tgetflag:                             Interrogate.
1474* tgetnum:                              Interrogate.
1475* tgetstr:                              Interrogate.
1476* tgoto:                                tgoto.
1477* tparam:                               tparam.
1478* tputs:                                Output Padding.
1479* UP:                                   tgoto.
1480
1481