COHERENT manpages
This page displays the COHERENT manpage for terminfo [Terminal-description language].
List of available manpages
Index
terminfo -- System Administration Terminal-description language /usr/lib/terminfo terminfo is a system for describing terminals. Descriptions are collected in the file /usr/lib/terminfo and are read by curses, more, vi, and other utilities. By passing her terminal's terminfo entry to a program, a user can make sure that the program can take full advantage of her terminal's capacities. terminfo resembles the terminal-description language termcap; however, it enjoys a number of features that termcap does not, as follows: -> A termcap entry cannot exceed a predefined limit. terminfo lifts this restriction. -> terminfo entries are compiled; therefore, they are read and loaded more quickly. -> termcap entries are all kept in file /etc/termcap. Each terminfo resides in its own file; thus, a program and find and load an entry more quickly. -> terminfo is a little more easily read by human beings. Whether a program uses termcap or terminfo descriptions depends entirely on that program. For example, MicroEMACS uses termcap descriptions; but vsh (and other curses-based programs) use terminfo. In general, terminfo is regarded as being more flexible and up-to-date. terminfo Entries Directory /usr/lib/terminfo consists of a number of sub-directories, one for each terminal type being described. A terminal type describes a given make of terminal (e.g., the Wyse 150) plus some special attribute, such as the number of characters on a line or a specially defined bank of function keys. A terminfo entry can extend over more than one line by indenting every line after the first. A line that begins with a pound sign `#' is a comment. A terminfo entry consists of an indefinite number of comma-separated fields. White space after each comma is ignored. The first field names the terminal; the remaining fields hold capability codes. (Capability codes are discussed in detail below.) Preceding a field with a period `.' comments out that field, and only that field. Naming Terminals The first field in a terminfo entry names the terminal being described. The name field consists of one or more names, which are separated by vertical-bar characters. The first name given is the most common abbreviation for the terminal. The last name is usually a long name that fully identifies the terminal. All names in between the first and the last give common synonyms for that terminal. All names can contain upper-case characters; the last name can also contain white space. Terminal names (except for the last, verbose entry) should use the following conventions: -> The hardware should have a root name chosen, e.g., ``wyse150''. -> The root name should not contain hyphens, except to prevent synonyms from colliding with other names. -> Modes that the hardware can be in, or user preferences, should be indicated by appending a hyphen and an indicator of the mode. For example, a wyse150 with an old-fashioned 82-key keyboard could be called wyse150-o. Use the following suffixes whenever possible: Suffix Meaning -w Wide (more than 80 columns) -am With automatic margins (usually default) -nam Without automatic margins -n Number of lines on the screen -na No arrow keys -np n pages of memory -rv Reverse video Capability Codes A capability code describes a capability of a terminal. Capability codes come in three varieties: Boolean This indicates whether a terminal has a given feature. If the field is present, the terminal is assumed to have the capability; if not, then it is assumed not to be present. For example, the code am indicates ``automatic margins''. If am appears in a terminal's terminfo entry, then it can execute automatic margins; if not, then it can't. Numeric This gives the size of some aspect of a terminal, such as the number of lines or the number of columns. A numeric code is followed by a number sign `#' and then a string of digits, which set the value for that code For example, the code cols#80 indicates that a terminal has 80 columns per row. String Capabilities This gives a sequence of characters that trigger a terminal operation. For example, a terminal may expect a ``magic sequence'' to wipe the screen clean, to print in reverse video, or to change the shape of its cursor. Likewise, a terminal may send a ``magic sequence'' when a particular function key is pressed. For example, the code klf1=\E5 indicates that this terminal sends the string <esc>5 when the user presses function-key 1. Some terminal capabilities may involve padding -- that is, telling the terminal to delay execution of the capability for a fraction of a second. In some instances, padding may make the difference between a terminal's drawing information correctly, or displaying a jumble. A delay code can appear anywhere in a string capability code. It is introduced by a dollar sign `$' and enclosed in angle brackets `<>'. The numeric value is always in milliseconds. For example, the code el=\EK$<3> indicates that the clear-to-end-of-line code el is invoked by the ``magic sequence'' <esc>K, and that it should involve a three- millisecond delay. Function tputs() provides the delay. The delay can be either a number, e.g., ``20'', or a number followed by an asterisk, e.g., ``3*''. An asterisk indicates that the padding must be proportional to the number of lines affected by the operation; the amount given is the amount of padding required by each line of output. (This is true even in the case of the insert-character code.) When an asterisk is specified, it is sometimes useful to give a delay of the form ``3.5'' to specify a delay-per-unit to tenths of milliseconds. (Only one decimal place is allowed.) The following table gives the commonest terminfo capability codes. The variable is the name by which the programmer (at the terminfo level) accesses the capability. The code is the name used in the terminfo entry. There is no fixed limit to the length of a code, but the convention is to keep them to five characters or fewer. Whenever possible, names are the same as, or similar to, those in the ANSI Standard X3.64-1979. The semantics describe features of the code: + You may specify padding. +* Padding may be based on the number of lines affected. # The string is passed through tparm() with the number of parameters given in the description. #i Indicate the ith parameter. Boolean Codes Code Variable Description am..... auto_right_margin....... Automatic margins bce.... back_color_erase........ Erase screen with background color bw..... auto_left_margin........ cub1 wraps from column 0 to last column ccc.... can_change.............. Terminal can redefine a color chts... hard_cursor............. Cursor is difficult to see cpix... cpi_changes_res......... Changing character pitch also changes resolution crxm... cr_cancels_micro_mode... Carriage return cancels micro mode da..... memory_above............ Display can be retained above the screen daisy.. has_print_wheel......... You must change print wheel on printer db..... memory_below............ Display can be retained below the screen eo..... erase_overstrike........ Erase overstrikes with a blank eslok.. status_line_esc_ok...... Escape can be used on the status line gn..... generic_type............ Generic line type (e.g., dialup, switch). hc..... hard_copy............... Hardcopy terminal hls.... hue_lightness_saturation Terminal uses HLS color notation hs..... has_status_line......... Has an extra ``status line'' hz..... tilde_glitch............ Hazeltine cannot print tildes `~' in..... insert_null_glitch...... Insert mode distinguishes NULs km..... has_meta_key............ Has a metakey (shift sets parity bit) mc5i... prtr_silent............. Printer does not echo on screen mir.... move_insert_mode........ Safe to move while in insert mode msgr... move_standout_mode...... Safe to move in standout modes npc.... no_pad_char............. No padding character nxon... needs_xon_xoff.......... Padding does not work: needs XON/XOFF os..... over_strike............. Terminal overstrikes sam.... semi_auto_right_margin.. Printing in last column returns carriage ul..... transparent_underline... Underline character overstrikes xenl... eat_newline_glitch...... Newline ignored after 80 columns (Concept) xhp.... ceol_standout_glitch.... Standout not erased by overwriting (HP) xhpa... col_addr_glitch......... Only positive motion for HPA/MHPA capitals xon.... xon_xoff................ Terminal uses XON/XOFF handshaking xsb.... no_esc_ctlc............. Beehive terminal (F1=escape, F2=<ctrl-C>) xvpa... row_addr_glitch......... Only positive motion for VPA/MVPA capitals xt..... teleray_glitch.......... Tabs destructive, magic SO char (Teleray 1061) Numeric Codes Code Variable Description bufsz.. buffer_capacity......... Number of bytes buffered before printing colors. max_colors.............. Maximum number of colors on the screen cols... columns................. Number of columns in a line it..... init_tabs............... Tabs initially every n spaces lines.. lines................... Number of lines on screen or page lm..... lines_of_memory......... Lines of memory if greater than lines; zero, variable maddr.. max_micro_address....... Maximum value in micro_ ... _address mjump.. max_micro_jump.......... Maximum value in parm_ ... _micro mls.... micro_line_size......... Line-step size when in micro mode ncv.... no_color_video.......... Video attributes that cannot be used with color nlab... num_labels.............. Number of labels on the screen npins.. number_of_pins.......... Number of pins in the print-head orc.... output_res_char......... Horizontal resolution, units per character orhi... output_res_horz......... Horizontal resolution in units per inch orl.... output_res_line......... Vertical resolution, units per line orvi... output_res_vert......... Vertical resolution, units per inch pairs.. max_pairs............... Maximum number of color_pairs on screen pb..... padding_baud_rate....... Lowest baud rate where CR/NL padding is needed spinh.. dot_horz_spacing........ Spacing of pins horizontally (pins/inch) spinv.. dot_vert_spacing........ Spacing of pins vertically (pins/inch) vt..... virtual_terminal........ Virtual terminal number widcs.. wide_char_size.......... Character step size, double-width mode wsl.... width_status_line....... Number of columns in the status line xmc.... magic_cookie_glitch..... Number of blank characters left by smso or rmso String Capabilities Code Variable Description CC..... command_character....... Terminal-settable command character in prototype acsc... acs_chars............... Pairs of graphical character set (aAbBcC ...) bel.... bell.................... Audible signal (bell)+ blink.. enter_blink_mode........ Turn on blinking bold... enter_bold_mode......... Turn on bold (extra bright) cbt.... back_tab................ Back tab+ ch..... erase_charse............ Erase #1 characters+# chr.... change_res_horz......... Change horizontal resolution civis.. cursor_invisible........ Make cursor invisible clear.. clear_screen............ Clear screen+* cnorm.. cursor_normal........... Make cursor appear normal (undo vs and vi) cpi.... change_char_pitch....... Change number of characters per inch cr..... carriage_return......... Carriage return+* csnm... char_set_names.......... Names of character sets csr.... change_scroll_region.... change to lines #1 through #2 (vt100)+# cub.... parm_left_cursor........ Move cursor left #1 spaces+# cub1... cursor_left............. Move cursor left one space cud.... parm_down_cursor........ Move cursor down #1 lines.+*# cud1... cursor_down............. Move cursor down one line cuf.... parm_right_cursor....... Move cursor right #1 spaces+*# cuf1... cursor_right............ Move cursor right one space cup.... cursor_address.......... Cursor motion relative to row 1 column 2+# cuu.... parm_up_cursor.......... Move cursor up #1 lines+*# cuu1... cursor_up............... Upline (cursor up) cvr.... change_rs_vert.......... Change vertical resolution cvvis.. cursor_visible.......... Make cursor very visible dch.... parm_dch................ Delete #1 chars+*# dch1... delete_character........ Delete character+* defc... define_char............. Define a character in a character set dim.... enter_dim_mode.......... Turn on half-bright mode dl..... parm_delete_line........ Delete #1 lines+*# dl1.... delete_line............. Delete line+* docr... these_cause_cr.......... List of characters that trigger carriage return dsl.... dis_status_line......... Disable status line ech.... erase_chars............. Erase no. 1 characters ed..... clr_eos................. Clear to end of display+* el..... clr_eol................. Clear to end of line+ el1.... clr_bol................. Clear to beginning of line, inclusive enacs.. ena_acs................. Enable alternate character set flash.. flash_screen............ Visible bell (may not move cursor) ff..... form_feed............... Hardcopy terminal page eject+* fsl.... from_status_line........ Return from status line hd..... down_half_line.......... Half-line down (forward 1/2 linefeed) home... cursor_home............. Move cursor to home position (if no cup) hpa.... column_address.......... Set cursor column+# ht..... tab..................... Tab to next eight-space hardware tab stop hts.... set_tab................. Set a tab in all rows, current column. hu..... up_half_line............ Half-line up (reverse 1/2 linefeed) ich.... parm_ich................ Insert #1 blank characters+*# ich1... insert_character........ Insert character+ if..... init_file............... Name of file containing is il..... parm_insert_line........ Add #1 new blank lines+*# il1.... insert_line............. Add new blank line+* ind.... scroll_forward.......... Scroll text up+ indn... parm_index.............. Scroll forward #1 lines+# initc.. initialize_color........ Initialize color definition initp.. initialize_pair......... Initialize color pairs invis.. enter_secure_mode....... Turn on blank mode (characters invisible) ip..... insert_padding.......... Insert pad after character inserted+* iprog.. init_prog............... Full path name of initialization program is1.... init_1string............ Terminal-initialization string is2.... init_2string............ Terminal-initialization string is3.... init_3string............ Terminal-initialization string kBEG... key_sbeg................ Sent by shifted beginning key kCAN... key_scancel............. Sent by shifted cancel key kCMD... key_scommand............ Sent by shifted command key kCPY... key_scopy............... Sent by shifted copy key kCRT... key_screate............. Sent by shifted create key kDC.... key_sdc................. Sent by shifted delete-character key kDL.... key_sdl................. Sent by shifted delete-line key kEND... key_send................ Sent by shifted end key kEOL... key_seol................ Sent by shifted EOL clear-line key kEXT... key_sexit............... Sent by shifted exit key kFND... key_sfind............... Sent by shifted find key kHLP... key_shelp............... Sent by shifted help key kHOM... key_shome............... Sent by shifted home key kIC.... key_sic................. Sent by shifted input key kLFT... key_sleft............... Sent by shifted <- key kMOV... key_smove............... Sent by shifted move key kMSG... key_smessage............ Sent by shifted message key kNXT... key_snext............... Sent by shifted next key kOPT... key_soptions............ Sent by shifted option key kPRT... key_sprint.............. Sent by shifted print key kPRV... key_sprevious........... Sent by shifted previous key kRDO... key_sredo............... Sent by shifted redo key kRES... key_srsume.............. Sent by shifted resume key kRIT... key_sright.............. Sent by shifted -> key kRPL... key_sreplace............ Sent by shifted replace key kSAV... key_ssave............... Sent by shifted save key kSPD... key_ssuspend............ Sent by shifted suspend key kUND... key_sundo............... Sent by shifted undo key ka1.... key_a1.................. Sent by key A1, upper left of keypad ka3.... key_a3.................. Sent by key A3, upper right of keypad kb2.... key_b2.................. Sent by key B2, center of keypad kbeg... key_beg................. Sent by ``begin'' key kbs.... key_backspace........... Sent by backspace key kc1.... key_c1.................. Sent by key C1, lower left of keypad kc3.... key_c3.................. Sent by key C3, lower right of keypad kcan... key_cancel.............. Sent by cancel key kcbt... key_btab................ Sent by back-tab key kclo... key_close............... Sent by close key kclr... key_clear............... Sent by clear-screen or erase key kcmd... key_command............. Sent by ``cmd'' key kcpy... key_copy................ Sent by copy key kcrt... key_create.............. Sent by create key kctab.. key_ctab................ Sent by clear-tab key kcub1.. key_left................ Sent by <- key kcud1.. key_down................ Sent by v key kcuf1.. key_right............... Sent by -> key kcuu1.. key_up.................. Sent by terminal ^ key kdch1.. key_dc.................. Sent by delete-character key kdl1... key_dl.................. Sent by delete-line key ked.... key_eos................. Sent by clear-to-end-of-screen key kel.... key_eol................. Sent by clear-to-end-of-line key kend... key_end................. Sent by end key kent... key_enter............... Sent by <return> key kext... key_exit................ Sent by exit key kf0.... key_f0.................. Sent by function key 0 kf1.... key_f1.................. Sent by function key 1 kf10... key_f10................. Sent by function key 10 kf11... key_f11................. Sent by function key 11 kf12... key_f12................. Sent by function key 12 kf13... key_f13................. Sent by function key 13 kf14... key_f14................. Sent by function key 14 kf15... key_f15................. Sent by function key 15 kf16... key_f16................. Sent by function key 16 kf17... key_f17................. Sent by function key 17 kf18... key_f18................. Sent by function key 18 kf19... key_f19................. Sent by function key 19 kf2.... key_f2.................. Sent by function key 2 kf20... key_f20................. Sent by function key 20 kf21... key_f21................. Sent by function key 21 kf22... key_f22................. Sent by function key 22 kf23... key_f23................. Sent by function key 23 kf24... key_f24................. Sent by function key 24 kf25... key_f25................. Sent by function key 25 kf26... key_f26................. Sent by function key 26 kf27... key_f27................. Sent by function key 27 kf28... key_f28................. Sent by function key 28 kf29... key_f29................. Sent by function key 29 kf3.... key_f3.................. Sent by function key 3 kf30... key_f30................. Sent by function key 30 kf31... key_f31................. Sent by function key 31 kf32... key_f32................. Sent by function key 32 kf33... key_f33................. Sent by function key 33 kf34... key_f34................. Sent by function key 34 kf35... key_f35................. Sent by function key 35 kf36... key_f36................. Sent by function key 36 kf37... key_f37................. Sent by function key 37 kf38... key_f38................. Sent by function key 38 kf39... key_f39................. Sent by function key 39 kf4.... key_f4.................. Sent by function key 4 kf40... key_f40................. Sent by function key 40 kf41... key_f41................. Sent by function key 41 kf42... key_f42................. Sent by function key 42 kf43... key_f43................. Sent by function key 43 kf44... key_f44................. Sent by function key 44 kf45... key_f45................. Sent by function key 45 kf46... key_f46................. Sent by function key 46 kf47... key_f47................. Sent by function key 47 kf48... key_f48................. Sent by function key 48 kf49... key_f49................. Sent by function key 49 kf5.... key_f5.................. Sent by function key 5 kf50... key_f50................. Sent by function key 50 kf51... key_f51................. Sent by function key 51 kf52... key_f52................. Sent by function key 52 kf53... key_f53................. Sent by function key 53 kf54... key_f54................. Sent by function key 54 kf55... key_f55................. Sent by function key 55 kf56... key_f56................. Sent by function key 56 kf57... key_f57................. Sent by function key 57 kf58... key_f58................. Sent by function key 58 kf59... key_f59................. Sent by function key 59 kf6.... key_f6.................. Sent by function key 6 kf60... key_f60................. Sent by function key 60 kf61... key_f61................. Sent by function key 61 kf62... key_f62................. Sent by function key 62 kf63... key_f63................. Sent by function key 63 kf7.... key_f7.................. Sent by function key 7 kf8.... key_f8.................. Sent by function key 8 kf9.... key_f9.................. Sent by function key 9 kfnd... key_find................ Sent by find key khlp... key_help................ Sent by help key khome.. key_home................ Sent by home key khts... key_stab................ Sent by set-tab key kich1.. key_ic.................. Sent by insert char/enter insert-mode key kil1... key_il.................. Sent by insert line kind... key_sf.................. Sent by scroll-forward/down key kll.... key_ll.................. Sent by home-down key kmrk... key_mark................ Sent by mark key kmsg... key_message............. Sent by message key kmov... key_move................ Sent by move key knp.... key_npage............... Sent by next-page key knxt... key_next................ Sent by next-object key kopn... key_open................ Sent by open key kopt... key_options............. Sent by options key kpp.... key_ppage............... Sent by previous-page key kprt... key_print............... Sent by print (copy) key kprv... key_previous............ Sent by previous-object key krdo... key_redo................ Sent by redo key kref... key_reference........... Sent by reference key kres... key_resume.............. Sent by resume key krfr... key_refresh............. Sent by refresh key kri.... key_sr.................. Sent by scroll-backward/up key krmir.. key_eic................. Sent by rmir or smir in insert mode krpl... key_replace............. Sent by replace key krst... key_restart............. Sent by restart key ksav... key_save................ Sent by save key kslt... key_select.............. Sent by select key kspd... key_suspend............. Sent by suspend key ktbc... key_catab............... Sent by clear-all-tabs key kund... key_undo................ Sent by undo key lf0.... label_f0................ Label on function key 0 if not F0 lf1.... label_f1................ Label on function key 1 if not F1 lf10... label_f10............... Label on function key 10 if not F10 lf2.... label_f2................ Label on function key 2 if not F2 lf3.... label_f3................ Label on function key 3 if not F3 lf4.... label_f4................ Label on function key 4 if not F4 lf5.... label_f5................ Label on function key 5 if not F5 lf6.... label_f6................ Label on function key 6 if not F6 lf7.... label_f7................ Label on function key 7 if not F7 lf8.... label_f8................ Label on function key 8 if not F8 lf9.... label_f9................ Label on function key 9 if not F9 ll..... cursor_to_ll............ Last line, first column (if no cup) lpi.... change_line_pitch....... Change number of lines per inch mc0.... print_screen............ Print contents of the screen mc4.... prtr_off................ Turn off printer mc5.... prtr_on................. Turn on printer mcub... parm_left_micro......... Like cub for micro adjustment mcub1.. micro_left.............. Like cub1 for micro adjustment mcud... parm_down_micro......... Like cud for micro adjustment mcud1.. micro_down.............. Like cud1 for micro adjustment mcuf... parm_right_micro........ Like cuf for micro adjustment mcuf1.. micro_right............. Like cuf1 for micro adjustment mcuu... parm_up_micro........... Like cuu for micro adjustment mcuu1.. micro_up................ Like cuu1 for micro adjustment mgc.... clear_margins........... Clear all margins (top, bottom, sides) mhpa... micro_column_address.... Like hpa for micro adjustment mrcup.. cursor_mem_address...... Memory-relative cursor addressing mvpa... micro_row_address....... Like vpa for micro adjustment nel.... newline................. Newline (behaves like CR followed by LF) oc..... orig_colors............. Set all colors to originals op..... orig_pair............... Set default color_pair to original pad.... pad_char................ Pad character (rather than NUL) pfkey.. pkey_key................ Program function key 1 to type string 2 pfloc.. pkey_local.............. Program function key 1 to execute string 2 pfx.... pkey_xmit............... Program function key 1 to transmit string 2 pln.... plab_norm............... Program label 1 to show string 2 porder. order_of_pins........... Match software bits to print-head pins prot... enter_protected_mode.... Turn on protected mode rc..... restore_cursor.......... Restore cursor to position of last sc rep.... repeat_char............. Repeat character #1 #2 times. +*# rev.... enter_reverse_mode...... Turn on reverse-video rf..... reset_file.............. Name of file containing reset string rfi.... reg_for_input........... Send next input character ri..... scroll_reverse.......... Scroll text down+ rin.... parm_rindex............. Scroll backward one line+# ritm... exit_italics_mode....... Disable italics rlm.... exit_leftward_mode...... Enable rightward motion rmacs.. exit_alt_charset_mode... End alternate character set+ rmam... exit_am_mode............ Turn off automatic margins rmcup.. exit_ca_mode............ String to end programs that use cup rmdc... exit_delete_mode........ End delete mode rmicm.. exit_micro_mode......... Disable micro-motion capabilities rmir... exit_insert_mode........ End insert mode rmkx... keypad_local............ Exit ``keypad transmit'' mode rmln... label_off............... Turn off soft labels rmm.... meta_off................ Turn off ``meta mode'' rmp.... char_padding............ Like ip, but in replace mode rmso... exit_standout_mode...... End stand out mode rmul... exit_underline_mode..... End underscore mode rmxon.. exit_xon_mode........... Turn off XON/XOFF handshaking rs1.... reset_1string........... Reset terminal completely to sane modes rs2.... reset_2string........... Reset terminal completely to sane modes rs3.... reset_3string........... Reset terminal completely to sane modes rshm... exit_shadow_mode........ Disable shadow printing rsubm.. exit_subscript_mode..... Disable subscript printing rsupm.. exit_superscript_mode... Disable superscript printing rum.... exit_upward_motion...... Enable downward motion rwidm.. exit_doublewide_mode.... Disable double-width printing sbim... start_bit_margin........ Start printing bit-mapped graphics sc..... save_cursor............. Save cursor position+ scp.... set_color_pair.......... Set current color pair scs.... select_char_set......... Select character set scsd... start_char_set_def...... Start definition of a character set sdrfq.. enter_draft_quality..... Set draft-quality printing setb... set_background.......... Set current background color setf... set_foreground.......... Set current foreground color sgr.... set_attributes.......... Define the nine video attributes+*# sgr0... exit_attribute_mode..... Turn off all attributes sitm... enter_italics_mode...... Enable italics slm.... enter_leftward_mode..... Enable leftward carriage motion smacs.. enter_alt_charset_mode.. Start alternate character set+ smam... enter_am_mode........... Turn on automatic margins smcup.. enter_ca_mode........... String to begin programs that use cup smdc... enter_delete_mode....... Delete mode (enter) smgb... set_bottom_margin....... Set bottom margin to current line smgbp.. set_bottom_margin_parm.. Set bottom margin at lines 1 or 2 smgl... set_left_margin......... Set left margin to current column smglp.. set_left_margin_parm.... Set left margin to columns 1 or 2 smgr... set_right_margin........ Set right margin to current column smgrp.. set_right_margin_parm... Set right margin to columns 1 or 2 smgt... set_top_margin.......... Set top margin to current line smgtp.. set_top_margin_parm..... Set top margin to lines 1 or 2 smicm.. enter_micro_mode........ Enable micro-motion capabilities smir... enter_insert_mode....... Insert mode (enter) smkx... keypad_xmit............. Enter ``keypad transmit'' mode smln... label_on................ Turn on soft labels smm.... meta_on................. Turn on ``meta mode'' (eighth bit) smso... enter_standout_mode..... Begin stand-out mode smul... enter_underline_mode.... Start underscore mode smxon.. enter_xon_mode.......... Turn on XON/XOFF handshaking snlq... enter_near_letter_qualitySet near-letter-quality printing snrmq.. enter_normal_quality.... Set normal-quality print sshm... enter_shadow_mode....... Enable shadow printing ssubm.. enter_subscript_mode.... Enable subscript printing ssupm.. enter_superscript_mode.. Enable superscript printing subcs.. subscript_characters.... List of ``subscript-able'' characters sum.... enter_upward_mode....... Enable upward carriage motion supcs.. superscript_characters.. List of ``superscript-able'' characters swidm.. enter_doublewide_mode... Enable double-wide printing tbc.... clear_all_tabs.......... Clear all tab stops+ tsl.... to_status_line.......... Go to status line, column 1 uc..... underline_char.......... Underscore one char and move past it vpa.... row_address............. Vertical position absolute (set row)+# wind... set_window.............. Current window is lines #1-#2, columns 3--4 xoffc.. xoff_character.......... XOFF character xonc... xon_character........... XON character zerom.. zero_motion............. No motion for subsequent character Escape Sequences You can use the following escape sequences with any string-capability entry: \E <esc> character \e <esc> character ^X <ctrl-X> for any appropriate X \n Newline \r Carriage return \t Horizontal tab \b Backspace \f Formfeed \s Space \000 Value of a character in three octal digits \^ Literal carat \, Literal comma \\ Literal backslash Parameterized Strings Cursor-addressing and other strings requiring parameters in the terminal are described by a parameterized string capability, with printf()-like escape sequences in it. Each escape sequence is introduced with a percent sign `%', followed by one character that described the type of formatting to be performed, as follows: %% Literal `%' %d Decimal integer %2d Decimal integer with at least two places %02d Decimal integer, two places, zero padding %3d Decimal integer with at least three places %03d Decimal integer, three places, zero padding %c Character %s String %p[i] Push ith parameter %P[a-z] Set variable [a-z] to pop() %g[a-z] Push variable [a-z] %'c' Character constant c %{nn} Integer constant nn %+ Addition: push(pop() + pop()) %- Subtraction: push(pop() - pop()) %* Multiplication: push(pop() * pop()) %/ Division: push(pop() / pop()) %m Modulo: push(pop() % pop()) %& Bitwise AND: push(pop() op pop()) %| Bitwise OR: push(pop() op pop()) %^ Bitwise NOR: push(pop() op pop()) %= Logical AND: push(pop() op pop()) %> Logical OR: push(pop() op pop()) %< Logical NOR: push(pop() op pop()) %! Unary NOT: push(op pop()) %~ Unary complement: push(op pop()) %i Add one to first two parmameters (for ANSI terminals) The parameterized mechanism is based on a stack. % operations push parameters and constants onto the stack, do arithmetic and other operations on the top of the stack, and print out values in various formats. Up to nine parameters can be used at once. If-then-else testing is possible, as is storage in a limited number of variables. There is no provision for loops or printing strings in any format other than %s. For example, compare the termcap entry cm and the terminfo entry cup. %+ (add space and print as a character) cm would be treated as %p1%' '%+%c, that is, push the first parameter, push space, add the top two numbers onto the stack, and output the top item on the stack using character (%c) format. For the second parameter, change %p1 to %p2. %. (print as a character) becomes %p1%c. %d (print in decimal) becomes %p1%d. As with tgoto(), characters standing by themselves (no `%' sign) are output as is. Alternate Characters The instruction acsc defines a set of alternate characters. These alternate characters define, among other things, the characters used to draw boxes. acsc is set to a string composed of pairs of characters. The first character in each pair gives the character used by a VT100 in graphics mode to display; the second character is the one for the terminal in use. The following table shows the VT100 graphic-character set: Arrow right + Arrow left , Arrow down . Full block (inverted space)0 Lantern I Arrow up - Diamond ' Checkboard a Degree f +/- Sign g Centered rectangles h Lower right corner j Upper right corner k Upper left corner l Lower left corner m Cross n Upper horizontal lineo Middle horizontal lineq Lower horizontal lines Left tee t Right tee u Lower tee v Upper tee w Vertical line x Centered dot ~ Changes from termcap to terminfo This section describes features of terminfo that termcap does not contain. Defaults terminfo does not contain every default found in termcap. termcap, for example, assumed that \r was a carriage return unless nc was present, indicating that it did not work, or cr was present, indicating an alternative. In terminfo, if cr is present, the string so given works; otherwise it should be assumed not to work. The bs and bc capabilities are replaced by cub and cub1. (The former takes a parameter, moving left that many spaces. The latter is probably more common in terminals and moves left one space.) nl (linefeed) has been split into two functions: cud1 (moves the cursor down one line) and ind (scroll forward). cud1 applies when the cursor is not on the bottom line, ind applies when it is on the bottom line. The bell capability is now explicitly given as bel. The terminfo data base is compiled, unlike termcap. This means that a terminfo source file (describing some set of terminals) is processed by the terminfo compiler, producing a binary description of the terminal in a file under /usr/lib/terminfo. The function setupterm() reads this file. The advantage to compilation is that starting up a program using terminfo is faster. The increase in speed comes partly from not having to skip past other terminal descriptions, and partly from the compiler having sorted the capabilities into order so that a linear scan can read them in. The terminfo compiler tic uses the environment variable TERMINFO to be the destination directory of the new object files. It is also used by setupterm() to find an entry for a given terminal. First it looks in the directory given in TERMINFO and, if not found there, checks /usr/lib/terminfo. Basic Example The following gives the terminfo description for a simple terminal, the Lear-Siegler ADM-3: adm3|3|lsi adm3, cr=^M, cud1=^J, ind=^J, bel=^G, am, cub1=^H, clear=^Z, lines#24, cols#80 As you can see, the description is divided into comma-separated fields. The following discusses each field in detail. adm3|3|lsi adm3, The first field names the terminal. This field is unique in that it is divided into a number of sub-fields, which are separated by vertical bar characters. The first sub-field gives the name by which the terminal is normally addressed in a program; the last gives a longer, descriptive name. cr=^M, To move the cursor to the left margin, send <ctrl-M>. cud1=^J, To move the cursor down one row, send <ctrl-J>. ind=^J, To scroll the screen up, send <ctrl-J>. Note that the ADM-3, like most terminals, does not scroll unless the cursor is on the last row. bel=^G, To ring the terminal's bell, send <ctrl-G>. am, This boolean code indicates that the ADM-3 wraps to the leftmost column of the of the next row when the cursor reaches the rightmost column. cub1=^H, To move the cursor nondestructively one column to the left, send <ctrl-H>. clear=^Z, To clear the screen, send <ctrl-Z>. lines#24, The ADM-3 has 24 rows (lines). cols#80, The ADM-3 has 80 columns. Modifying an Entry A full discussion of how to modify a terminfo entry is beyond the scope of this article. The references, below, name several volumes that discuss this topic at length. In brief, modifying a terminfo entry requires that you use the command infocmp to de-compile the entry for a given terminal, modify the text by hand, then use the command tic to recompile and re-install the entry. C-Level Routines The library /usr/lib/libcurses.a contains a suite of C functions with which you can read a given terminal's terminfo capabilities. You must reference the terminfo capabilities in your program as global variables whose names are identical to the full names of the capabilities themselves; e.g., auto_left_margin. These functions are declared in the header files <curses.h> <term.h>, and <terminfo.h>; note that you must #include all three header files in your C program. You can call the following functions from within a C program to read a terminfo entry: fixterm() Set the terminal into program mode putp() Write a string into stdwin resetterm() Reset the terminal into a saved mode setupterm() Initialize terminal capabilities tparm() Output a parameterized string tputs() Process a capability string vidattr() Set the terminal's video attributes vidputs() Set video attributes into a function setupterm() initializes a terminal. It inhales all terminal capabilities at once, and performs all other system-dependent initialization. A program should call resetterm() when it exits or calls a shell escape, to restore the tty modes. When it returns from a shell escape, the program should call fixterm() to set the tty modes back to their internal settings. tparm() is a more powerful, parameterized string mechanism. It resembles the termcap function tgoto(). tgoto() is still available for compatibility. tputs() is unchanged. Files /usr/lib/libcurses.a -- Routines for reading terminfo descriptions /usr/lib/terminfo/?/* -- Directories containing compiled descriptions See Also Administering COHERENT, captoinfo, curses, fixterm(), infocmp, putp(), resetterm(), setupterm(), term, termcap, tic, tparm(), tputs(), vi, vidputs() Strang, J., Mui, L., O'Reilly, T.: Termcap and Terminfo. Sebastopol, CA: O'Reilly & Associates, Inc., 1991. Highly recommended. Notes As mentioned above, each terminfo description is kept in its own file, in a subdirectory of directory /usr/lib/terminfo. Each file is named after the device it describes. Thus, to see what terminal devices have terminfo descriptions, type the command: ls -laR /usr/lib/terminfo You may wish to redirect the output of this command into a file, for further study later on. This implementation of terminfo was written by Pavel Curtis of Cornell University. It was ported to COHERENT by Udo Munk.