terminfo man page on MirBSD

Man page or keyword search:  
man Server   6113 pages
apropos Keyword Search (all sections)
Output format
MirBSD logo
[printable version]



TERMINFO(5)		   File Formats		      TERMINFO(5)

NAME
     terminfo - terminal capability data base

SYNOPSIS
     /usr/share/misc/terminfo.db
     /usr/share/terminfo/*/*

DESCRIPTION
     Terminfo is a data base describing terminals, used by
     screen-oriented programs such as vi(1), rogue(1) and
     libraries such as curses(3).  Terminfo describes terminals
     by giving a set of capabilities which they have, by specify-
     ing how to perform screen operations, and by specifying pad-
     ding requirements and initialization sequences.

     Entries in terminfo consist of a sequence of `,' separated
     fields (embedded commas may be escaped with a backslash or
     notated as \054).	White space after the `,' separator is
     ignored.  The first entry for each terminal gives the names
     which are known for the terminal, separated by `|' charac-
     ters.  The first name given is the most common abbreviation
     for the terminal, the last name given should be a long name
     fully identifying the terminal, and all others are under-
     stood as synonyms for the terminal name.  All names but the
     last should be in lower case and contain no blanks; the last
     name may well contain upper case and blanks for readability.

     Lines beginning with a `#' in the first column are treated
     as comments.  While comment lines are legal at any point,
     the output of captoinfo and infotocap (aliases for tic) will
     move comments so they occur only between entries.

     Newlines and leading tabs may be used for formatting entries
     for readability.  These are removed from parsed entries.
     The infocmp -f option relies on this to format if-then-else
     expressions: the result can be read by tic.

     Terminal names (except for the last, verbose entry) should
     be chosen using the following conventions.	 The particular
     piece of hardware making up the terminal should have a root
     name, thus ``hp2621''.  This name should not contain
     hyphens.  Modes that the hardware can be in, or user prefer-
     ences, should be indicated by appending a hyphen and a mode
     suffix.  Thus, a vt100 in 132 column mode would be vt100-w.
     The following suffixes should be used where possible:

     Suffix		     Meaning		       Example
     -nn      Number of lines on the screen	       aaa-60
     -np      Number of pages of memory		       c100-4p
     -am      With automargins (usually the default)   vt100-am
     -m	      Mono mode; suppress color		       ansi-m

MirOS BSD #9-current	Printed 27.10.2006			1

TERMINFO(5)		   File Formats		      TERMINFO(5)

     -mc      Magic cookie; spaces when highlighting   wy30-mc
     -na      No arrow keys (leave them in local)      c100-na
     -nam     Without automatic margins		       vt100-nam
     -nl      No status line			       att4415-nl
     -ns      No status line			       hp2626-ns
     -rv      Reverse video			       c100-rv
     -s	      Enable status line		       vt100-s
     -vb      Use visible bell instead of beep	       wy370-vb
     -w	      Wide mode (> 80 columns, usually 132)    vt100-w

     For more on terminal naming conventions, see the term(7)
     manual page.

     Capabilities
     The following is a complete table of the capabilities
     included in a terminfo description block and available to
     terminfo-using code.  In each line of the table,

     The variable is the name by which the programmer (at the
     terminfo level) accesses the capability.

     The capname is the short name used in the text of the data-
     base, and is used by a person updating the database.  When-
     ever possible, capnames are chosen to be the same as or sim-
     ilar to the ANSI X3.64-1979 standard (now superseded by
     ECMA-48, which uses identical or very similar names).
     Semantics are also intended to match those of the specifica-
     tion.

     The termcap code is the old termcap capability name (some
     capabilities are new, and have names which termcap did not
     originate).

     Capability names have no hard length limit, but an informal
     limit of 5 characters has been adopted to keep them short
     and to allow the tabs in the source file Caps to line up
     nicely.

     Finally, the description field attempts to convey the seman-
     tics of the capability.  You may find some codes in the
     description field:

     (P)  indicates that padding may be specified

     #[1-9]
	  in the description field indicates that the string is
	  passed through tparm with parms as given (#i).

     (P*) indicates that padding may vary in proportion to the
	  number of lines affected

     (#i) indicates the ith parameter.

MirOS BSD #9-current	Printed 27.10.2006			2

TERMINFO(5)		   File Formats		      TERMINFO(5)

     These are the boolean capabilities:

	     Variable	       Cap-   TCap	 Description
	     Booleans	       name   Code
     auto_left_margin	       bw     bw     cub1 wraps from col-
					     umn 0 to last column
     auto_right_margin	       am     am     terminal has auto-
					     matic margins
     back_color_erase	       bce    ut     screen erased with
					     background color
     can_change		       ccc    cc     terminal can re-
					     define existing col-
					     ors
     ceol_standout_glitch      xhp    xs     standout not erased
					     by overwriting (hp)
     col_addr_glitch	       xhpa   YA     only positive motion
					     for hpa/mhpa caps
     cpi_changes_res	       cpix   YF     changing character
					     pitch changes reso-
					     lution
     cr_cancels_micro_mode     crxm   YB     using cr turns off
					     micro mode
     dest_tabs_magic_smso      xt     xt     tabs destructive,
					     magic so char
					     (t1061)
     eat_newline_glitch	       xenl   xn     newline ignored
					     after 80 cols (con-
					     cept)
     erase_overstrike	       eo     eo     can erase over-
					     strikes with a blank
     generic_type	       gn     gn     generic line type
     hard_copy		       hc     hc     hardcopy terminal
     hard_cursor	       chts   HC     cursor is hard to
					     see
     has_meta_key	       km     km     Has a meta key
					     (i.e., sets 8th-bit)
     has_print_wheel	       daisy  YC     printer needs opera-
					     tor to change char-
					     acter set
     has_status_line	       hs     hs     has extra status
					     line
     hue_lightness_saturation  hls    hl     terminal uses only
					     HLS color notation
					     (Tektronix)
     insert_null_glitch	       in     in     insert mode distin-
					     guishes nulls
     lpi_changes_res	       lpix   YG     changing line pitch
					     changes resolution
     memory_above	       da     da     display may be
					     retained above the
					     screen

MirOS BSD #9-current	Printed 27.10.2006			3

TERMINFO(5)		   File Formats		      TERMINFO(5)

     memory_below	       db     db     display may be
					     retained below the
					     screen
     move_insert_mode	       mir    mi     safe to move while
					     in insert mode
     move_standout_mode	       msgr   ms     safe to move while
					     in standout mode
     needs_xon_xoff	       nxon   nx     padding will not
					     work, xon/xoff
					     required
     no_esc_ctlc	       xsb    xb     beehive (f1=escape,
					     f2=ctrl C)
     no_pad_char	       npc    NP     pad character does
					     not exist
     non_dest_scroll_region    ndscr  ND     scrolling region is
					     non-destructive
     non_rev_rmcup	       nrrmc  NR     smcup does not
					     reverse rmcup
     over_strike	       os     os     terminal can over-
					     strike
     prtr_silent	       mc5i   5i     printer will not
					     echo on screen
     row_addr_glitch	       xvpa   YD     only positive motion
					     for vpa/mvpa caps
     semi_auto_right_margin    sam    YE     printing in last
					     column causes cr
     status_line_esc_ok	       eslok  es     escape can be used
					     on the status line
     tilde_glitch	       hz     hz     cannot print ~'s
					     (hazeltine)
     transparent_underline     ul     ul     underline character
					     overstrikes
     xon_xoff		       xon    xo     terminal uses
					     xon/xoff handshaking

     These are the numeric capabilities:

	  Variable	    Cap-     TCap	 Description
	   Numeric	    name     Code
     columns		    cols     co	     number of columns in
					     a line
     init_tabs		    it	     it	     tabs initially every
					     # spaces
     label_height	    lh	     lh	     rows in each label
     label_width	    lw	     lw	     columns in each
					     label
     lines		    lines    li	     number of lines on
					     screen or page
     lines_of_memory	    lm	     lm	     lines of memory if >
					     line. 0 means varies

MirOS BSD #9-current	Printed 27.10.2006			4

TERMINFO(5)		   File Formats		      TERMINFO(5)

     magic_cookie_glitch    xmc	     sg	     number of blank
					     characters left by
					     smso or rmso
     max_attributes	    ma	     ma	     maximum combined
					     attributes terminal
					     can handle
     max_colors		    colors   Co	     maximum number of
					     colors on screen
     max_pairs		    pairs    pa	     maximum number of
					     color-pairs on the
					     screen
     maximum_windows	    wnum     MW	     maximum number of
					     defineable windows
     no_color_video	    ncv	     NC	     video attributes
					     that cannot be used
					     with colors
     num_labels		    nlab     Nl	     number of labels on
					     screen
     padding_baud_rate	    pb	     pb	     lowest baud rate
					     where padding needed
     virtual_terminal	    vt	     vt	     virtual terminal
					     number (CB/unix)
     width_status_line	    wsl	     ws	     number of columns in
					     status line

     The following numeric capabilities are present in the SVr4.0
     term  structure, but are not yet documented in the man page.
     They came in with SVr4's printer support.

	   Variable	    Cap-     TCap	 Description
	   Numeric	    name     Code
     bit_image_entwining    bitwin   Yo	     number of passes for
					     each bit-image row
     bit_image_type	    bitype   Yp	     type of bit-image
					     device
     buffer_capacity	    bufsz    Ya	     numbers of bytes
					     buffered before
					     printing
     buttons		    btns     BT	     number of buttons on
					     mouse
     dot_horz_spacing	    spinh    Yc	     spacing of dots hor-
					     izontally in dots
					     per inch
     dot_vert_spacing	    spinv    Yb	     spacing of pins ver-
					     tically in pins per
					     inch
     max_micro_address	    maddr    Yd	     maximum value in
					     micro_..._address
     max_micro_jump	    mjump    Ye	     maximum value in
					     parm_..._micro

MirOS BSD #9-current	Printed 27.10.2006			5

TERMINFO(5)		   File Formats		      TERMINFO(5)

     micro_col_size	    mcs	     Yf	     character step size
					     when in micro mode
     micro_line_size	    mls	     Yg	     line step size when
					     in micro mode
     number_of_pins	    npins    Yh	     numbers of pins in
					     print-head
     output_res_char	    orc	     Yi	     horizontal resolu-
					     tion in units per
					     line
     output_res_horz_inch   orhi     Yk	     horizontal resolu-
					     tion in units per
					     inch
     output_res_line	    orl	     Yj	     vertical resolution
					     in units per line
     output_res_vert_inch   orvi     Yl	     vertical resolution
					     in units per inch
     print_rate		    cps	     Ym	     print rate in char-
					     acters per second
     wide_char_size	    widcs    Yn	     character step size
					     when in double wide
					     mode

     These are the string capabilities:

	     Variable		Cap-   TCap	 Description
	      String		name   Code
     acs_chars			acsc   ac    graphics charset
					     pairs, based on
					     vt100
     back_tab			cbt    bt    back tab (P)
     bell			bel    bl    audible signal
					     (bell) (P)
     carriage_return		cr     cr    carriage return (P*)
					     (P*)
     change_char_pitch		cpi    ZA    Change number of
					     characters per inch
					     to #1
     change_line_pitch		lpi    ZB    Change number of
					     lines per inch to #1
     change_res_horz		chr    ZC    Change horizontal
					     resolution to #1
     change_res_vert		cvr    ZD    Change vertical res-
					     olution to #1
     change_scroll_region	csr    cs    change region to
					     line #1 to line #2
					     (P)
     char_padding		rmp    rP    like ip but when in
					     insert mode
     clear_all_tabs		tbc    ct    clear all tab stops
					     (P)

MirOS BSD #9-current	Printed 27.10.2006			6

TERMINFO(5)		   File Formats		      TERMINFO(5)

     clear_margins		mgc    MC    clear right and left
					     soft margins
     clear_screen		clear  cl    clear screen and
					     home cursor (P*)
     clr_bol			el1    cb    Clear to beginning
					     of line
     clr_eol			el     ce    clear to end of line
					     (P)
     clr_eos			ed     cd    clear to end of
					     screen (P*)
     column_address		hpa    ch    horizontal position
					     #1, absolute (P)
     command_character		cmdch  CC    terminal settable
					     cmd character in
					     prototype !?
     create_window		cwin   CW    define a window #1
					     from #2,#3 to #4,#5
     cursor_address		cup    cm    move to row #1 col-
					     umns #2
     cursor_down		cud1   do    down one line
     cursor_home		home   ho    home cursor (if no
					     cup)
     cursor_invisible		civis  vi    make cursor invisi-
					     ble
     cursor_left		cub1   le    move left one space
     cursor_mem_address		mrcup  CM    memory relative cur-
					     sor addressing, move
					     to row #1 columns #2
     cursor_normal		cnorm  ve    make cursor appear
					     normal (undo
					     civis/cvvis)
     cursor_right		cuf1   nd    non-destructive
					     space (move right
					     one space)
     cursor_to_ll		ll     ll    last line, first
					     column (if no cup)
     cursor_up			cuu1   up    up one line
     cursor_visible		cvvis  vs    make cursor very
					     visible
     define_char		defc   ZE    Define a character
					     #1, #2 dots wide,
					     descender #3
     delete_character		dch1   dc    delete character
					     (P*)
     delete_line		dl1    dl    delete line (P*)
     dial_phone			dial   DI    dial number #1
     dis_status_line		dsl    ds    disable status line
     display_clock		dclk   DK    display clock
     down_half_line		hd     hd    half a line down
     ena_acs			enacs  eA    enable alternate
					     char set

MirOS BSD #9-current	Printed 27.10.2006			7

TERMINFO(5)		   File Formats		      TERMINFO(5)

     enter_alt_charset_mode	smacs  as    start alternate
					     character set (P)
     enter_am_mode		smam   SA    turn on automatic
					     margins
     enter_blink_mode		blink  mb    turn on blinking
     enter_bold_mode		bold   md    turn on bold (extra
					     bright) mode
     enter_ca_mode		smcup  ti    string to start pro-
					     grams using cup
     enter_delete_mode		smdc   dm    enter delete mode
     enter_dim_mode		dim    mh    turn on half-bright
					     mode
     enter_doublewide_mode	swidm  ZF    Enter double-wide
					     mode
     enter_draft_quality	sdrfq  ZG    Enter draft-quality
					     mode
     enter_insert_mode		smir   im    enter insert mode
     enter_italics_mode		sitm   ZH    Enter italic mode
     enter_leftward_mode	slm    ZI    Start leftward car-
					     riage motion
     enter_micro_mode		smicm  ZJ    Start micro-motion
					     mode
     enter_near_letter_quality	snlq   ZK    Enter NLQ mode
     enter_normal_quality	snrmq  ZL    Enter normal-quality
					     mode
     enter_protected_mode	prot   mp    turn on protected
					     mode
     enter_reverse_mode		rev    mr    turn on reverse
					     video mode
     enter_secure_mode		invis  mk    turn on blank mode
					     (characters invisi-
					     ble)
     enter_shadow_mode		sshm   ZM    Enter shadow-print
					     mode
     enter_standout_mode	smso   so    begin standout mode
     enter_subscript_mode	ssubm  ZN    Enter subscript mode
     enter_superscript_mode	ssupm  ZO    Enter superscript
					     mode
     enter_underline_mode	smul   us    begin underline mode
     enter_upward_mode		sum    ZP    Start upward car-
					     riage motion
     enter_xon_mode		smxon  SX    turn on xon/xoff
					     handshaking
     erase_chars		ech    ec    erase #1 characters
					     (P)
     exit_alt_charset_mode	rmacs  ae    end alternate char-
					     acter set (P)
     exit_am_mode		rmam   RA    turn off automatic
					     margins
     exit_attribute_mode	sgr0   me    turn off all
					     attributes

MirOS BSD #9-current	Printed 27.10.2006			8

TERMINFO(5)		   File Formats		      TERMINFO(5)

     exit_ca_mode		rmcup  te    strings to end pro-
					     grams using cup
     exit_delete_mode		rmdc   ed    end delete mode
     exit_doublewide_mode	rwidm  ZQ    End double-wide mode
     exit_insert_mode		rmir   ei    exit insert mode
     exit_italics_mode		ritm   ZR    End italic mode
     exit_leftward_mode		rlm    ZS    End left-motion mode
     exit_micro_mode		rmicm  ZT    End micro-motion
					     mode
     exit_shadow_mode		rshm   ZU    End shadow-print
					     mode
     exit_standout_mode		rmso   se    exit standout mode
     exit_subscript_mode	rsubm  ZV    End subscript mode
     exit_superscript_mode	rsupm  ZW    End superscript mode
     exit_underline_mode	rmul   ue    exit underline mode
     exit_upward_mode		rum    ZX    End reverse charac-
					     ter motion
     exit_xon_mode		rmxon  RX    turn off xon/xoff
					     handshaking
     fixed_pause		pause  PA    pause for 2-3 sec-
					     onds
     flash_hook			hook   fh    flash switch hook
     flash_screen		flash  vb    visible bell (may
					     not move cursor)
     form_feed			ff     ff    hardcopy terminal
					     page eject (P*)
     from_status_line		fsl    fs    return from status
					     line
     goto_window		wingo  WG    go to window #1
     hangup			hup    HU    hang-up phone
     init_1string		is1    i1    initialization
					     string
     init_2string		is2    is    initialization
					     string
     init_3string		is3    i3    initialization
					     string
     init_file			if     if    name of initializa-
					     tion file
     init_prog			iprog  iP    path name of program
					     for initialization
     initialize_color		initc  Ic    initialize color #1
					     to (#2,#3,#4)
     initialize_pair		initp  Ip    Initialize color
					     pair #1 to
					     fg=(#2,#3,#4),
					     bg=(#5,#6,#7)
     insert_character		ich1   ic    insert character (P)
     insert_line		il1    al    insert line (P*)
     insert_padding		ip     ip    insert padding after
					     inserted character
     key_a1			ka1    K1    upper left of keypad

MirOS BSD #9-current	Printed 27.10.2006			9

TERMINFO(5)		   File Formats		      TERMINFO(5)

     key_a3			ka3    K3    upper right of key-
					     pad
     key_b2			kb2    K2    center of keypad
     key_backspace		kbs    kb    backspace key
     key_beg			kbeg   @1    begin key
     key_btab			kcbt   kB    back-tab key
     key_c1			kc1    K4    lower left of keypad
     key_c3			kc3    K5    lower right of key-
					     pad
     key_cancel			kcan   @2    cancel key
     key_catab			ktbc   ka    clear-all-tabs key
     key_clear			kclr   kC    clear-screen or
					     erase key
     key_close			kclo   @3    close key
     key_command		kcmd   @4    command key
     key_copy			kcpy   @5    copy key
     key_create			kcrt   @6    create key
     key_ctab			kctab  kt    clear-tab key
     key_dc			kdch1  kD    delete-character key
     key_dl			kdl1   kL    delete-line key
     key_down			kcud1  kd    down-arrow key
     key_eic			krmir  kM    sent by rmir or smir
					     in insert mode
     key_end			kend   @7    end key
     key_enter			kent   @8    enter/send key
     key_eol			kel    kE    clear-to-end-of-line
					     key
     key_eos			ked    kS    clear-to-end-of-
					     screen key
     key_exit			kext   @9    exit key
     key_f0			kf0    k0    F0 function key
     key_f1			kf1    k1    F1 function key
     key_f10			kf10   k;    F10 function key
     key_f11			kf11   F1    F11 function key
     key_f12			kf12   F2    F12 function key
     key_f13			kf13   F3    F13 function key
     key_f14			kf14   F4    F14 function key
     key_f15			kf15   F5    F15 function key
     key_f16			kf16   F6    F16 function key
     key_f17			kf17   F7    F17 function key
     key_f18			kf18   F8    F18 function key
     key_f19			kf19   F9    F19 function key
     key_f2			kf2    k2    F2 function key
     key_f20			kf20   FA    F20 function key
     key_f21			kf21   FB    F21 function key
     key_f22			kf22   FC    F22 function key
     key_f23			kf23   FD    F23 function key
     key_f24			kf24   FE    F24 function key
     key_f25			kf25   FF    F25 function key
     key_f26			kf26   FG    F26 function key
     key_f27			kf27   FH    F27 function key

MirOS BSD #9-current	Printed 27.10.2006		       10

TERMINFO(5)		   File Formats		      TERMINFO(5)

     key_f28			kf28   FI    F28 function key
     key_f29			kf29   FJ    F29 function key
     key_f3			kf3    k3    F3 function key
     key_f30			kf30   FK    F30 function key
     key_f31			kf31   FL    F31 function key
     key_f32			kf32   FM    F32 function key
     key_f33			kf33   FN    F33 function key
     key_f34			kf34   FO    F34 function key
     key_f35			kf35   FP    F35 function key
     key_f36			kf36   FQ    F36 function key
     key_f37			kf37   FR    F37 function key
     key_f38			kf38   FS    F38 function key
     key_f39			kf39   FT    F39 function key
     key_f4			kf4    k4    F4 function key
     key_f40			kf40   FU    F40 function key
     key_f41			kf41   FV    F41 function key
     key_f42			kf42   FW    F42 function key
     key_f43			kf43   FX    F43 function key
     key_f44			kf44   FY    F44 function key
     key_f45			kf45   FZ    F45 function key
     key_f46			kf46   Fa    F46 function key
     key_f47			kf47   Fb    F47 function key
     key_f48			kf48   Fc    F48 function key
     key_f49			kf49   Fd    F49 function key
     key_f5			kf5    k5    F5 function key
     key_f50			kf50   Fe    F50 function key
     key_f51			kf51   Ff    F51 function key
     key_f52			kf52   Fg    F52 function key
     key_f53			kf53   Fh    F53 function key
     key_f54			kf54   Fi    F54 function key
     key_f55			kf55   Fj    F55 function key
     key_f56			kf56   Fk    F56 function key
     key_f57			kf57   Fl    F57 function key
     key_f58			kf58   Fm    F58 function key
     key_f59			kf59   Fn    F59 function key
     key_f6			kf6    k6    F6 function key
     key_f60			kf60   Fo    F60 function key
     key_f61			kf61   Fp    F61 function key
     key_f62			kf62   Fq    F62 function key
     key_f63			kf63   Fr    F63 function key
     key_f7			kf7    k7    F7 function key
     key_f8			kf8    k8    F8 function key
     key_f9			kf9    k9    F9 function key
     key_find			kfnd   @0    find key
     key_help			khlp   %1    help key
     key_home			khome  kh    home key
     key_ic			kich1  kI    insert-character key
     key_il			kil1   kA    insert-line key
     key_left			kcub1  kl    left-arrow key
     key_ll			kll    kH    lower-left key (home
					     down)

MirOS BSD #9-current	Printed 27.10.2006		       11

TERMINFO(5)		   File Formats		      TERMINFO(5)

     key_mark			kmrk   %2    mark key
     key_message		kmsg   %3    message key
     key_move			kmov   %4    move key
     key_next			knxt   %5    next key
     key_npage			knp    kN    next-page key
     key_open			kopn   %6    open key
     key_options		kopt   %7    options key
     key_ppage			kpp    kP    previous-page key
     key_previous		kprv   %8    previous key
     key_print			kprt   %9    print key
     key_redo			krdo   %0    redo key
     key_reference		kref   &1    reference key
     key_refresh		krfr   &2    refresh key
     key_replace		krpl   &3    replace key
     key_restart		krst   &4    restart key
     key_resume			kres   &5    resume key
     key_right			kcuf1  kr    right-arrow key
     key_save			ksav   &6    save key
     key_sbeg			kBEG   &9    shifted begin key
     key_scancel		kCAN   &0    shifted cancel key
     key_scommand		kCMD   *1    shifted command key
     key_scopy			kCPY   *2    shifted copy key
     key_screate		kCRT   *3    shifted create key
     key_sdc			kDC    *4    shifted delete-char-
					     acter key
     key_sdl			kDL    *5    shifted delete-line
					     key
     key_select			kslt   *6    select key
     key_send			kEND   *7    shifted end key
     key_seol			kEOL   *8    shifted clear-to-
					     end-of-line key
     key_sexit			kEXT   *9    shifted exit key
     key_sf			kind   kF    scroll-forward key
     key_sfind			kFND   *0    shifted find key
     key_shelp			kHLP   #1    shifted help key
     key_shome			kHOM   #2    shifted home key
     key_sic			kIC    #3    shifted insert-char-
					     acter key
     key_sleft			kLFT   #4    shifted left-arrow
					     key
     key_smessage		kMSG   %a    shifted message key
     key_smove			kMOV   %b    shifted move key
     key_snext			kNXT   %c    shifted next key
     key_soptions		kOPT   %d    shifted options key
     key_sprevious		kPRV   %e    shifted previous key
     key_sprint			kPRT   %f    shifted print key
     key_sr			kri    kR    scroll-backward key
     key_sredo			kRDO   %g    shifted redo key
     key_sreplace		kRPL   %h    shifted replace key
     key_sright			kRIT   %i    shifted right-arrow
					     key

MirOS BSD #9-current	Printed 27.10.2006		       12

TERMINFO(5)		   File Formats		      TERMINFO(5)

     key_srsume			kRES   %j    shifted resume key
     key_ssave			kSAV   !1    shifted save key
     key_ssuspend		kSPD   !2    shifted suspend key
     key_stab			khts   kT    set-tab key
     key_sundo			kUND   !3    shifted undo key
     key_suspend		kspd   &7    suspend key
     key_undo			kund   &8    undo key
     key_up			kcuu1  ku    up-arrow key
     keypad_local		rmkx   ke    leave 'key-
					     board_transmit' mode
     keypad_xmit		smkx   ks    enter 'key-
					     board_transmit' mode
     lab_f0			lf0    l0    label on function
					     key f0 if not f0
     lab_f1			lf1    l1    label on function
					     key f1 if not f1
     lab_f10			lf10   la    label on function
					     key f10 if not f10
     lab_f2			lf2    l2    label on function
					     key f2 if not f2
     lab_f3			lf3    l3    label on function
					     key f3 if not f3
     lab_f4			lf4    l4    label on function
					     key f4 if not f4
     lab_f5			lf5    l5    label on function
					     key f5 if not f5
     lab_f6			lf6    l6    label on function
					     key f6 if not f6
     lab_f7			lf7    l7    label on function
					     key f7 if not f7
     lab_f8			lf8    l8    label on function
					     key f8 if not f8
     lab_f9			lf9    l9    label on function
					     key f9 if not f9
     label_format		fln    Lf    label format
     label_off			rmln   LF    turn off soft labels
     label_on			smln   LO    turn on soft labels
     meta_off			rmm    mo    turn off meta mode
     meta_on			smm    mm    turn on meta mode
					     (8th-bit on)
     micro_column_address	mhpa   ZY    Like column_address
					     in micro mode
     micro_down			mcud1  ZZ    Like cursor_down in
					     micro mode
     micro_left			mcub1  Za    Like cursor_left in
					     micro mode
     micro_right		mcuf1  Zb    Like cursor_right in
					     micro mode
     micro_row_address		mvpa   Zc    Like row_address #1
					     in micro mode

MirOS BSD #9-current	Printed 27.10.2006		       13

TERMINFO(5)		   File Formats		      TERMINFO(5)

     micro_up			mcuu1  Zd    Like cursor_up in
					     micro mode
     newline			nel    nw    newline (behave like
					     cr followed by lf)
     order_of_pins		porder Ze    Match software bits
					     to print-head pins
     orig_colors		oc     oc    Set all color pairs
					     to the original ones
     orig_pair			op     op    Set default pair to
					     its original value
     pad_char			pad    pc    padding char
					     (instead of null)
     parm_dch			dch    DC    delete #1 characters
					     (P*)
     parm_delete_line		dl     DL    delete #1 lines (P*)
     parm_down_cursor		cud    DO    down #1 lines (P*)
     parm_down_micro		mcud   Zf    Like parm_down_cur-
					     sor in micro mode
     parm_ich			ich    IC    insert #1 characters
					     (P*)
     parm_index			indn   SF    scroll forward #1
					     lines (P)
     parm_insert_line		il     AL    insert #1 lines (P*)
     parm_left_cursor		cub    LE    move #1 characters
					     to the left (P)
     parm_left_micro		mcub   Zg    Like parm_left_cur-
					     sor in micro mode
     parm_right_cursor		cuf    RI    move #1 characters
					     to the right (P*)
     parm_right_micro		mcuf   Zh    Like parm_right_cur-
					     sor in micro mode
     parm_rindex		rin    SR    scroll back #1 lines
					     (P)
     parm_up_cursor		cuu    UP    up #1 lines (P*)
     parm_up_micro		mcuu   Zi    Like parm_up_cursor
					     in micro mode
     pkey_key			pfkey  pk    program function key
					     #1 to type string #2
     pkey_local			pfloc  pl    program function key
					     #1 to execute string
					     #2
     pkey_xmit			pfx    px    program function key
					     #1 to transmit
					     string #2
     plab_norm			pln    pn    program label #1 to
					     show string #2
     print_screen		mc0    ps    print contents of
					     screen
     prtr_non			mc5p   pO    turn on printer for
					     #1 bytes
     prtr_off			mc4    pf    turn off printer

MirOS BSD #9-current	Printed 27.10.2006		       14

TERMINFO(5)		   File Formats		      TERMINFO(5)

     prtr_on			mc5    po    turn on printer
     pulse			pulse  PU    select pulse dialing
     quick_dial			qdial  QD    dial number #1 with-
					     out checking
     remove_clock		rmclk  RC    remove clock
     repeat_char		rep    rp    repeat char #1 #2
					     times (P*)
     req_for_input		rfi    RF    send next input char
					     (for ptys)
     reset_1string		rs1    r1    reset string
     reset_2string		rs2    r2    reset string
     reset_3string		rs3    r3    reset string
     reset_file			rf     rf    name of reset file
     restore_cursor		rc     rc    restore cursor to
					     position of last
					     save_cursor
     row_address		vpa    cv    vertical position #1
					     absolute (P)
     save_cursor		sc     sc    save current cursor
					     position (P)
     scroll_forward		ind    sf    scroll text up (P)
     scroll_reverse		ri     sr    scroll text down (P)
     select_char_set		scs    Zj    Select character
					     set, #1
     set_attributes		sgr    sa    define video
					     attributes #1-#9
					     (PG9)
     set_background		setb   Sb    Set background color
					     #1
     set_bottom_margin		smgb   Zk    Set bottom margin at
					     current line
     set_bottom_margin_parm	smgbp  Zl    Set bottom margin at
					     line #1 or (if smgtp
					     is not given) #2
					     lines from bottom
     set_clock			sclk   SC    set clock, #1 hrs #2
					     mins #3 secs
     set_color_pair		scp    sp    Set current color
					     pair to #1
     set_foreground		setf   Sf    Set foreground color
					     #1
     set_left_margin		smgl   ML    set left soft margin
					     at current column.
					     See smgl. (ML is not
					     in BSD termcap).
     set_left_margin_parm	smglp  Zm    Set left (right)
					     margin at column #1
     set_right_margin		smgr   MR    set right soft mar-
					     gin at current col-
					     umn

MirOS BSD #9-current	Printed 27.10.2006		       15

TERMINFO(5)		   File Formats		      TERMINFO(5)

     set_right_margin_parm	smgrp  Zn    Set right margin at
					     column #1
     set_tab			hts    st    set a tab in every
					     row, current columns
     set_top_margin		smgt   Zo    Set top margin at
					     current line
     set_top_margin_parm	smgtp  Zp    Set top (bottom)
					     margin at row #1
     set_window			wind   wi    current window is
					     lines #1-#2 cols
					     #3-#4
     start_bit_image		sbim   Zq    Start printing bit
					     image graphics
     start_char_set_def		scsd   Zr    Start character set
					     definition #1, with
					     #2 characters in the
					     set
     stop_bit_image		rbim   Zs    Stop printing bit
					     image graphics
     stop_char_set_def		rcsd   Zt    End definition of
					     character set #1
     subscript_characters	subcs  Zu    List of subscript-
					     able characters
     superscript_characters	supcs  Zv    List of superscript-
					     able characters
     tab			ht     ta    tab to next 8-space
					     hardware tab stop
     these_cause_cr		docr   Zw    Printing any of
					     these characters
					     causes CR
     to_status_line		tsl    ts    move to status line,
					     column #1
     tone			tone   TO    select touch tone
					     dialing
     underline_char		uc     uc    underline char and
					     move past it
     up_half_line		hu     hu    half a line up
     user0			u0     u0    User string #0
     user1			u1     u1    User string #1
     user2			u2     u2    User string #2
     user3			u3     u3    User string #3
     user4			u4     u4    User string #4
     user5			u5     u5    User string #5
     user6			u6     u6    User string #6
     user7			u7     u7    User string #7
     user8			u8     u8    User string #8
     user9			u9     u9    User string #9
     wait_tone			wait   WA    wait for dial-tone
     xoff_character		xoffc  XF    XOFF character
     xon_character		xonc   XN    XON character

MirOS BSD #9-current	Printed 27.10.2006		       16

TERMINFO(5)		   File Formats		      TERMINFO(5)

     zero_motion		zerom  Zx    No motion for subse-
					     quent character

     The  following string capabilities are present in the SVr4.0
     term structure, but were originally not  documented  in  the
     man page.

	     Variable		Cap-	 TCap	  Description
	      String		name	 Code
     alt_scancode_esc		scesa	 S8    Alternate escape
					       for scancode emu-
					       lation
     bit_image_carriage_return	bicr	 Yv    Move to beginning
					       of same row
     bit_image_newline		binel	 Zz    Move to next row
					       of the bit image
     bit_image_repeat		birep	 Xy    Repeat bit image
					       cell #1 #2 times
     char_set_names		csnm	 Zy    Produce #1'th item
					       from list of char-
					       acter set names
     code_set_init		csin	 ci    Init sequence for
					       multiple codesets
     color_names		colornm	 Yw    Give name for
					       color #1
     define_bit_image_region	defbi	 Yx    Define rectan-
					       gualar bit image
					       region
     device_type		devt	 dv    Indicate lan-
					       guage/codeset sup-
					       port
     display_pc_char		dispc	 S1    Display PC charac-
					       ter #1
     end_bit_image_region	endbi	 Yy    End a bit-image
					       region
     enter_pc_charset_mode	smpch	 S2    Enter PC character
					       display mode
     enter_scancode_mode	smsc	 S4    Enter PC scancode
					       mode
     exit_pc_charset_mode	rmpch	 S3    Exit PC character
					       display mode
     exit_scancode_mode		rmsc	 S5    Exit PC scancode
					       mode
     get_mouse			getm	 Gm    Curses should get
					       button events,
					       parameter #1 not
					       documented.
     key_mouse			kmous	 Km    Mouse event has
					       occurred
     mouse_info			minfo	 Mi    Mouse status
					       information

MirOS BSD #9-current	Printed 27.10.2006		       17

TERMINFO(5)		   File Formats		      TERMINFO(5)

     pc_term_options		pctrm	 S6    PC terminal
					       options
     pkey_plab			pfxl	 xl    Program function
					       key #1 to type
					       string #2 and show
					       string #3
     req_mouse_pos		reqmp	 RQ    Request mouse
					       position
     scancode_escape		scesc	 S7    Escape for scan-
					       code emulation
     set0_des_seq		s0ds	 s0    Shift to codeset 0
					       (EUC set 0, ASCII)
     set1_des_seq		s1ds	 s1    Shift to codeset 1
     set2_des_seq		s2ds	 s2    Shift to codeset 2
     set3_des_seq		s3ds	 s3    Shift to codeset 3
     set_a_background		setab	 AB    Set background
					       color to #1, using
					       ANSI escape
     set_a_foreground		setaf	 AF    Set foreground
					       color to #1, using
					       ANSI escape
     set_color_band		setcolor Yz    Change to ribbon
					       color #1
     set_lr_margin		smglr	 ML    Set both left and
					       right margins to
					       #1, #2.	(ML is
					       not in BSD term-
					       cap).
     set_page_length		slines	 YZ    Set page length to
					       #1 lines
     set_tb_margin		smgtb	 MT    Sets both top and
					       bottom margins to
					       #1, #2

	The XSI Curses	standard  added	 these.	  They	are  some
	post-4.1  versions  of System V curses, e.g., Solaris 2.5
	and IRIX 6.x.  The ncurses termcap  names  for	them  are
	invented; according to the XSI Curses standard, they have
	no termcap names.  If your compiled terminfo entries  use
	these,	they  may  not be binary-compatible with System V
	terminfo entries after SVr4.1; beware!

		Variable	 Cap-	TCap	 Description
		 String		 name	Code
	enter_horizontal_hl_mode ehhlm	Xh   Enter horizontal
					     highlight mode
	enter_left_hl_mode	 elhlm	Xl   Enter left highlight
					     mode
	enter_low_hl_mode	 elohlm Xo   Enter low highlight
					     mode

MirOS BSD #9-current	Printed 27.10.2006		       18

TERMINFO(5)		   File Formats		      TERMINFO(5)

	enter_right_hl_mode	 erhlm	Xr   Enter right high-
					     light mode
	enter_top_hl_mode	 ethlm	Xt   Enter top highlight
					     mode
	enter_vertical_hl_mode	 evhlm	Xv   Enter vertical high-
					     light mode
	set_a_attributes	 sgr1	sA   Define second set of
					     video attributes
					     #1-#6
	set_pglen_inch		 slengthsL   YI Set page length
					     to #1 hundredth of
					     an inch

     A Sample Entry

     The following entry, describing an	 ANSI-standard	terminal,
     is representative of what a terminfo entry for a modern ter-
     minal typically looks like.

   ansi|ansi/pc-term compatible with color,
	   mc5i,
	   colors#8, ncv#3, pairs#64,
	   cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
	   cuu=\E[%p1%dA, dch=\E[%p1%dP, dl=\E[%p1%dM,
	   ech=\E[%p1%dX, el1=\E[1K, hpa=\E[%p1%dG, ht=\E[I,
	   ich=\E[%p1%d@, il=\E[%p1%dL, indn=\E[%p1%dS, .indn=\E[%p1%dT,
	   kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B,
	   kcuf1=\E[C, kcuu1=\E[A, kf1=\E[M, kf10=\E[V,
	   kf11=\E[W, kf12=\E[X, kf2=\E[N, kf3=\E[O, kf4=\E[P,
	   kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, kf9=\E[U,
	   kich1=\E[L, mc4=\E[4i, mc5=\E[5i, nel=\r\E[S,
	   op=\E[37;40m, rep=%p1%c\E[%p2%{1}%-%db,
	   rin=\E[%p1%dT, s0ds=\E(B, s1ds=\E)B, s2ds=\E*B,
	   s3ds=\E+B, setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
	   setb=\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
	   setf=\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m,
	   sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p8%t;11%;%?%p9%t;12%;m,
	   sgr0=\E[0;10m, tbc=\E[2g, u6=\E[%d;%dR, u7=\E[6n,
	   u8=\E[?%[;0123456789]c, u9=\E[c, vpa=\E[%p1%dd,

     Entries may continue onto multiple lines  by  placing  white
     space  at the beginning of each line except the first.  Com-
     ments may be included on lines beginning with ``#''.   Capa-
     bilities  in  terminfo are of three types: Boolean capabili-
     ties which indicate that the terminal  has	 some  particular
     feature,  numeric capabilities giving the size of the termi-
     nal or the size of particular delays, and	string	capabili-
     ties,  which  give	 a  sequence which can be used to perform
     particular terminal operations.

     Types of Capabilities

MirOS BSD #9-current	Printed 27.10.2006		       19

TERMINFO(5)		   File Formats		      TERMINFO(5)

     All capabilities have names.  For instance,  the  fact  that
     ANSI-standard  terminals  have  automatic	margins (i.e., an
     automatic return and line-feed when the end  of  a	 line  is
     reached)  is  indicated  by  the  capability  am.	Hence the
     description of ansi includes am.  Numeric	capabilities  are
     followed  by  the	character  `#' and then a positive value.
     Thus cols, which indicates the number of columns the  termi-
     nal  has, gives the value `80' for ansi.  Values for numeric
     capabilities may be specified in decimal, octal or hexadeci-
     mal,  using  the  C  programming language conventions (e.g.,
     255, 0377 and 0xff or 0xFF).

     Finally, string valued capabilities, such as  el  (clear  to
     end  of  line sequence) are given by the two-character code,
     an `=', and then a string ending at the next following  `,'.

     A number of escape sequences are provided in the string val-
     ued capabilities for  easy	 encoding  of  characters  there.
     Both \E and \e map to an ESCAPE character, ^x maps to a con-
     trol-x for any appropriate x, and the sequences \n \l \r  \t
     \b	 \f \s give a newline, line-feed, return, tab, backspace,
     form-feed, and space.  Other escapes include \^  for  ^,  \\
     for  \,  \,  for comma, \: for :, and \0 for null.	 (\0 will
     produce \200, which does not terminate a string but  behaves
     as	 a  null  character  on	 most terminals, providing CS7 is
     specified.	 See stty(1).)	Finally, characters may be  given
     as three octal digits after a \.

     A	delay  in  milliseconds	 may  appear anywhere in a string
     capability, enclosed in $<..> brackets,  as  in  el=\EK$<5>,
     and padding characters are supplied by tputs to provide this
     delay.  The delay must be a number with at most one  decimal
     place  of	precision;  it may be followed by suffixes `*' or
     '/' or both.  A `*' indicates that the padding  required  is
     proportional  to  the number of lines affected by the opera-
     tion, and the amount given is the per-affected-unit  padding
     required.	 (In  the case of insert character, the factor is
     still the number of lines affected.)  Normally,  padding  is
     advisory  if  the	device has the xon capability; it is used
     for cost computation but does not	trigger	 delays.   A  `/'
     suffix  indicates that the padding is mandatory and forces a
     delay of the given number of milliseconds	even  on  devices
     for which xon is present to indicate flow control.

     Sometimes individual capabilities must be commented out.  To
     do this, put a period before the capability name.	For exam-
     ple, see the second ind in the example above.

     Fetching Compiled Descriptions

     If	 the  environment  variable TERMINFO is set, it is inter-
     preted  as	 the  pathname	of  a  directory  containing  the

MirOS BSD #9-current	Printed 27.10.2006		       20

TERMINFO(5)		   File Formats		      TERMINFO(5)

     compiled  description  you are working on.	 Only that direc-
     tory is searched.

     If TERMINFO is not set, the ncurses version of the	 terminfo
     reader  code  will instead look in the directory $HOME/.ter-
     minfo for a compiled description.	If it fails to	find  one
     there, and the environment variable TERMINFO_DIRS is set, it
     will interpret the contents of that variable as  a	 list  of
     colon-  separated directories to be searched (an empty entry
     is interpreted as a command to search  /usr/share/terminfo).
     If	 no  description  is  found  in	 any of the TERMINFO_DIRS
     directories, the fetch fails.

     If neither TERMINFO nor TERMINFO_DIRS is set, the last place
     tried will be the system terminfo directory, /usr/share/ter-
     minfo.

     (Neither  the  $HOME/.terminfo  lookups  nor   TERMINFO_DIRS
     extensions	  are	supported   under  stock  System  V  ter-
     minfo/curses.)

     Preparing Descriptions

     We now outline how to  prepare  descriptions  of  terminals.
     The  most effective way to prepare a terminal description is
     by imitating the description of a similar terminal	 in  ter-
     minfo and to build up a description gradually, using partial
     descriptions with vi or some other	 screen-oriented  program
     to	 check	that  they  are	 correct.   Be	aware that a very
     unusual terminal may expose deficiencies in the  ability  of
     the  terminfo file to describe it or bugs in the screen-han-
     dling code of the test program.

     To get the padding for insert line right  (if  the	 terminal
     manufacturer did not document it) a severe test is to edit a
     large file at 9600 baud, delete 16 or so lines from the mid-
     dle  of  the  screen,  then  hit  the  `u' key several times
     quickly.  If the terminal messes up, more padding is usually
     needed.  A similar test can be used for insert character.

     Basic Capabilities

     The number of columns on each line for the terminal is given
     by the cols numeric capability.  If the terminal is  a  CRT,
     then the number of lines on the screen is given by the lines
     capability.  If the terminal wraps around to  the	beginning
     of	 the  next line when it reaches the right margin, then it
     should have the am capability.  If the  terminal  can  clear
     its  screen,  leaving  the cursor in the home position, then
     this is given by the clear string capability.  If the termi-
     nal  overstrikes  (rather	than  clearing	a position when a
     character is  struck  over)  then	it  should  have  the  os

MirOS BSD #9-current	Printed 27.10.2006		       21

TERMINFO(5)		   File Formats		      TERMINFO(5)

     capability.  If the terminal is a printing terminal, with no
     soft copy unit, give it both hc  and  os.	 (os  applies  to
     storage  scope  terminals, such as TEKTRONIX 4010 series, as
     well as hard copy and APL terminals.)  If there is a code to
     move  the	cursor	to the left edge of the current row, give
     this as cr.  (Normally this will be carriage return, control
     M.)   If there is a code to produce an audible signal (bell,
     beep, etc) give this as bel.

     If there is a code to move the cursor one	position  to  the
     left  (such as backspace) that capability should be given as
     cub1.  Similarly, codes to move to the right, up,	and  down
     should be given as cuf1, cuu1, and cud1.  These local cursor
     motions should not alter the text they pass over, for  exam-
     ple,  you	would not normally use `cuf1= ' because the space
     would erase the character moved over.

     A very important point here is that the local cursor motions
     encoded  in terminfo are undefined at the left and top edges
     of	 a  CRT	 terminal.   Programs  should  never  attempt  to
     backspace	around	the  left  edge,  unless bw is given, and
     never attempt to go up locally off the  top.   In	order  to
     scroll  text up, a program will go to the bottom left corner
     of the screen and send the ind (index) string.

     To scroll text down, a program goes to the top  left  corner
     of	 the screen and sends the ri (reverse index) string.  The
     strings ind and ri are undefined when not on  their  respec-
     tive corners of the screen.

     Parameterized  versions  of the scrolling sequences are indn
     and rin which have the same semantics as ind and  ri  except
     that  they	 take  one parameter, and scroll that many lines.
     They are also undefined except at the  appropriate	 edge  of
     the screen.

     The  am  capability  tells	 whether the cursor sticks at the
     right edge of the screen when text is output, but this  does
     not  necessarily  apply to a cuf1 from the last column.  The
     only local motion which is defined from the left edge is  if
     bw is given, then a cub1 from the left edge will move to the
     right edge of the previous row.  If bw  is	 not  given,  the
     effect  is	 undefined.   This  is	useful	for drawing a box
     around the edge of the screen, for example.  If the terminal
     has  switch  selectable automatic margins, the terminfo file
     usually assumes that this is on; i.e., am.	 If the	 terminal
     has  a  command  which moves to the first column of the next
     line, that command can be given as nel (newline).	 It  does
     not  matter  if the command clears the remainder of the cur-
     rent line, so if the terminal has no cr and lf it may  still
     be	 possible  to  craft  a working nel out of one or both of
     them.

MirOS BSD #9-current	Printed 27.10.2006		       22

TERMINFO(5)		   File Formats		      TERMINFO(5)

     These capabilities suffice to describe hard-copy and "glass-
     tty" terminals.  Thus the model 33 teletype is described as

     33|tty33|tty|model 33 teletype,
	  bel=^G, cols#72, cr=^M, cud1=^J, hc, ind=^J, os,

     while the Lear Siegler ADM-3 is described as

     adm3|3|lsi adm3,
	  am, bel=^G, clear=^Z, cols#80, cr=^M, cub1=^H, cud1=^J,
	  ind=^J, lines#24,

     Parameterized Strings

     Cursor  addressing and other strings requiring parameters in
     the terminal are described by a parameterized  string  capa-
     bility,  with printf(3) like escapes %x in it.  For example,
     to address the cursor, the cup capability	is  given,  using
     two parameters: the row and column to address to.	(Rows and
     columns are numbered from zero and	 refer	to  the	 physical
     screen  visible  to the user, not to any unseen memory.)  If
     the terminal has memory relative cursor addressing, that can
     be indicated by mrcup.

     The  parameter mechanism uses a stack and special % codes to
     manipulate it.  Typically a sequence will push  one  of  the
     parameters	 onto the stack and then print it in some format.
     Print (e.g., "%d") is a  special  case.   Other  operations,
     including	"%t"  pop  their  operand  from the stack.  It is
     noted that more  complex  operations  are	often  necessary,
     e.g., in the sgr string.

     The % encodings have the following meanings:

     %%	  outputs `%'

     %[[:]flags][width[.precision]][doxXs]
	  as in printf, flags are [-+#] and space

     %c	  print pop() like %c in printf

     %s	  print pop() like %s in printf

     %p[1-9]
	  push i'th parameter

     %P[a-z]
	  set dynamic variable [a-z] to pop()

     %g[a-z]
	  get dynamic variable [a-z] and push it

MirOS BSD #9-current	Printed 27.10.2006		       23

TERMINFO(5)		   File Formats		      TERMINFO(5)

     %P[A-Z]
	  set static variable [a-z] to pop()

     %g[A-Z]
	  get static variable [a-z] and push it

	  The  terms "static" and "dynamic" are misleading.  His-
	  torically, these are simply two different sets of vari-
	  ables,  whose	 values	 are  not  reset between calls to
	  tparm.  However, that fact is not documented	in  other
	  implementations.   Relying  on it will adversely impact
	  portability to other implementations.

     %'c' char constant c

     %{nn}
	  integer constant nn

     %l	  push strlen(pop)

     %+ %- %* %/ %m
	  arithmetic (%m is mod): push(pop() op pop())

     %& %| %^
	  bit operations (AND, OR and  exclusive-OR):  push(pop()
	  op pop())

     %= %> %<
	  logical operations: push(pop() op pop())

     %A, %O
	  logical AND and OR operations (for conditionals)

     %! %~
	  unary	 operations (logical and bit complement): push(op
	  pop())

     %i	  add 1 to first two parameters (for ANSI terminals)

     %? expr %t thenpart %e elsepart %;
	  This	forms  an  if-then-else.   The	%e  elsepart   is
	  optional.  Usually the %? expr part pushes a value onto
	  the stack, and %t pops it from the stack, testing if it
	  is  nonzero  (true).	 If  it	 is zero (false), control
	  passes to the %e (else) part.

	  It is possible to form else-if's a la Algol 68:
	  %? c1 %t b1 %e c2 %t b2 %e c3 %t b3 %e c4 %t b4 %e %;

	  where ci are conditions, bi are bodies.

	  Use the  -f  option  of  tic	or  infocmp  to	 see  the

MirOS BSD #9-current	Printed 27.10.2006		       24

TERMINFO(5)		   File Formats		      TERMINFO(5)

	  structure  of	 if-the-else's.	  Some strings, e.g., sgr
	  can be very complicated when written on one line.   The
	  -f  option  splits the string into lines with the parts
	  indented.

     Binary operations are in postfix form with the  operands  in
     the  usual	 order.	  That	is,  to	 get  x-5  one	would use
     "%gx%{5}%-".  %P and  %g  variables  are  persistent  across
     escape-string evaluations.

     Consider  the  HP2645, which, to get to row 3 and column 12,
     needs to be sent \E&a12c03Y padded for 6 milliseconds.  Note
     that the order of the rows and columns is inverted here, and
     that the row and column are printed as two digits.	 Thus its
     cup capability is "cup=6\E&%p2%2dc%p1%2dY".

     The  Microterm  ACT-IV needs the current row and column sent
     preceded by a ^T, with the row and column simply encoded  in
     binary,  "cup=^T%p1%c%p2%c".   Terminals which use "%c" need
     to be able to backspace the cursor (cub1), and to	move  the
     cursor  up one line on the screen (cuu1).	This is necessary
     because it is not always safe to transmit \n ^D and  \r,  as
     the  system  may  change or discard them.	(The library rou-
     tines dealing with terminfo set tty modes so that	tabs  are
     never expanded, so \t is safe to send.  This turns out to be
     essential for the Ann Arbor 4080.)

     A final example is the LSI ADM-3a, which uses row and column
     offset  by	 a blank character, thus "cup=\E=%p1%' '%+%c%p2%'
     '%+%c".  After sending `\E=', this pushes the first  parame-
     ter,  pushes  the	ASCII  value  for a space (32), adds them
     (pushing the sum on the stack in place of the  two	 previous
     values)  and  outputs  that  value as a character.	 Then the
     same is done for the second parameter.  More complex  arith-
     metic is possible using the stack.

     Cursor Motions

     If	 the  terminal has a fast way to home the cursor (to very
     upper left corner of screen) then this can be given as home;
     similarly	a fast way of getting to the lower left-hand cor-
     ner can be given as ll; this may involve going up with  cuu1
     from  the	home position, but a program should never do this
     itself (unless ll does) because it can  make  no  assumption
     about  the effect of moving up from the home position.  Note
     that the home position is the same as addressing  to  (0,0):
     to the top left corner of the screen, not of memory.  (Thus,
     the \EH sequence on HP terminals cannot be used for home.)

     If the terminal has row or column absolute	 cursor	 address-
     ing, these can be given as single parameter capabilities hpa
     (horizontal position absolute) and	 vpa  (vertical	 position

MirOS BSD #9-current	Printed 27.10.2006		       25

TERMINFO(5)		   File Formats		      TERMINFO(5)

     absolute).	  Sometimes  these are shorter than the more gen-
     eral two parameter sequence (as with the hp2645) and can  be
     used in preference to cup.	 If there are parameterized local
     motions (e.g., move n spaces to  the  right)  these  can  be
     given  as	cud,  cub,  cuf,  and cuu with a single parameter
     indicating how many spaces to  move.   These  are	primarily
     useful  if	 the terminal does not have cup, such as the TEK-
     TRONIX 4025.

     If the terminal needs to be in a special mode when running a
     program that uses these capabilities, the codes to enter and
     exit this mode can	 be  given  as	smcup  and  rmcup.   This
     arises,  for  example,  from terminals like the Concept with
     more than one page of memory.  If the terminal has only mem-
     ory  relative cursor addressing and not screen relative cur-
     sor addressing, a one screen-sized window must be fixed into
     the  terminal  for cursor addressing to work properly.  This
     is also used for the TEKTRONIX 4025, where	 smcup	sets  the
     command  character	 to  be the one used by terminfo.  If the
     smcup sequence will not restore the screen	 after	an  rmcup
     sequence is output (to the state prior to outputting rmcup),
     specify nrrmc.

     Area Clears

     If the terminal can clear from the current position  to  the
     end of the line, leaving the cursor where it is, this should
     be given as el.  If the terminal can clear from  the  begin-
     ning  of the line to the current position inclusive, leaving
     the cursor where it is, this should be given as el1.  If the
     terminal  can  clear from the current position to the end of
     the display, then this should be given as ed.   Ed	 is  only
     defined  from  the first column of a line.	 (Thus, it can be
     simulated by a request to delete a large number of lines, if
     a true ed is not available.)

     Insert/delete line and vertical motions

     If	 the  terminal	can open a new blank line before the line
     where the cursor is, this should be given as  il1;	 this  is
     done  only	 from  the  first position of a line.  The cursor
     must then appear on the newly blank line.	If  the	 terminal
     can delete the line which the cursor is on, then this should
     be given as dl1; this is done only from the  first	 position
     on	 the  line  to be deleted.  Versions of il1 and dl1 which
     take a single parameter and insert or delete that many lines
     can be given as il and dl.

     If	 the  terminal	has a settable scrolling region (like the
     vt100) the command to set this can be described with the csr
     capability,  which	 takes two parameters: the top and bottom
     lines of the scrolling  region.   The  cursor  position  is,

MirOS BSD #9-current	Printed 27.10.2006		       26

TERMINFO(5)		   File Formats		      TERMINFO(5)

     alas, undefined after using this command.

     It	 is  possible  to get the effect of insert or delete line
     using csr on a properly chosen region; the sc and	rc  (save
     and restore cursor) commands may be useful for ensuring that
     your synthesized insert/delete string does not move the cur-
     sor.   (Note that the ncurses(3) library does this synthesis
     automatically, so you need not compose insert/delete strings
     for an entry with csr).

     Yet  another  way to construct insert and delete might be to
     use a combination of  index  with	the  memory-lock  feature
     found  on	some  terminals (like the HP-700/90 series, which
     however also has insert/delete).

     Inserting lines at the top or bottom of the screen can  also
     be	 done  using  ri  or ind on many terminals without a true
     insert/delete line, and is often faster  even  on	terminals
     with those features.

     The  boolean  non_dest_scroll_region  should  be set if each
     scrolling window is effectively a view  port  on  a  screen-
     sized  canvas.   To  test	for  this  capability,	create	a
     scrolling region in the middle of the  screen,  write  some-
     thing  to the bottom line, move the cursor to the top of the
     region, and do ri followed by  dl1	 or  ind.   If	the  data
     scrolled  off the bottom of the region by the ri re-appears,
     then scrolling is non-destructive.	 System V and XSI  Curses
     expect that ind, ri, indn, and rin will simulate destructive
     scrolling; their documentation cautions you  not  to  define
     csr unless this is true.  This curses implementation is more
     liberal and will do explicit erases after scrolling if ndstr
     is defined.

     If	 the  terminal has the ability to define a window as part
     of memory, which all commands affect, it should be given  as
     the  parameterized string wind.  The four parameters are the
     starting and ending lines in memory  and  the  starting  and
     ending columns in memory, in that order.

     If the terminal can retain display memory above, then the da
     capability	 should	 be  given;  if	 display  memory  can  be
     retained  below,  then  db	 should be given.  These indicate
     that deleting a line or scrolling may bring non-blank  lines
     up	 from below or that scrolling back with ri may bring down
     non-blank lines.

     Insert/Delete Character

     There are two basic  kinds	 of  intelligent  terminals  with
     respect  to  insert/delete	 character which can be described
     using terminfo.  The  most	 common	 insert/delete	character

MirOS BSD #9-current	Printed 27.10.2006		       27

TERMINFO(5)		   File Formats		      TERMINFO(5)

     operations	 affect	 only  the characters on the current line
     and shift characters off the end of the line rigidly.  Other
     terminals, such as the Concept 100 and the Perkin Elmer Owl,
     make a distinction between typed and untyped blanks  on  the
     screen, shifting upon an insert or delete only to an untyped
     blank on the screen which is either eliminated, or	 expanded
     to two untyped blanks.  You can determine the kind of termi-
     nal you have by clearing the screen  and  then  typing  text
     separated	by cursor motions.  Type "abc	 def" using local
     cursor motions (not spaces) between the "abc" and the "def".
     Then position the cursor before the "abc" and put the termi-
     nal in insert mode.  If typing characters causes the rest of
     the  line	to  shift  rigidly and characters to fall off the
     end, then your terminal does not distinguish between  blanks
     and  untyped  positions.	If  the	 "abc" shifts over to the
     "def" which then move together around the end of the current
     line  and	onto  the next as you insert, you have the second
     type of terminal, and should give the capability  in,  which
     stands  for  "insert  null".   While these are two logically
     separate attributes (one line versus multi-line insert mode,
     and  special  treatment  of  untyped spaces) we have seen no
     terminals whose insert mode cannot	 be  described	with  the
     single attribute.

     Terminfo  can  describe  both terminals which have an insert
     mode, and terminals which send a simple sequence to  open	a
     blank  position  on  the  current	line.	Give  as smir the
     sequence to get into insert mode.	Give as rmir the sequence
     to	 leave insert mode.  Now give as ich1 any sequence needed
     to be sent just before sending the character to be inserted.
     Most  terminals  with a true insert mode will not give ich1;
     terminals which send a sequence to open  a	 screen	 position
     should give it here.

     If your terminal has both, insert mode is usually preferable
     to ich1.  Technically, you should not give both  unless  the
     terminal  actually	 requires both to be used in combination.
     Accordingly, some non-curses applications	get  confused  if
     both  are	present;  the symptom is doubled characters in an
     update using insert.  This requirement is now rare; most ich
     sequences do not require previous smir, and most smir insert
     modes do not require ich1 before each character.  Therefore,
     the  new  curses  actually assumes this is the case and uses
     either rmir/smir or ich/ich1 as appropriate (but not  both).
     If	 you  have  to write an entry to be used under new curses
     for  a  terminal  old  enough  to	need  both,  include  the
     rmir/smir sequences in ich1.

     If	 post  insert padding is needed, give this as a number of
     milliseconds in ip (a string option).   Any  other	 sequence
     which  may need to be sent after an insert of a single char-
     acter may also be given in ip.  If your terminal needs  both

MirOS BSD #9-current	Printed 27.10.2006		       28

TERMINFO(5)		   File Formats		      TERMINFO(5)

     to	 be  placed  into  an `insert mode' and a special code to
     precede each inserted character,  then  both  smir/rmir  and
     ich1  can be given, and both will be used.	 The ich capabil-
     ity, with one parameter, n, will repeat the effects of  ich1
     n times.

     If	 padding  is necessary between characters typed while not
     in insert mode, give this as a number of  milliseconds  pad-
     ding in rmp.

     It	 is occasionally necessary to move around while in insert
     mode to delete characters on the same line (e.g.,	if  there
     is	 a  tab	 after the insertion position).	 If your terminal
     allows motion while in insert mode you can give the capabil-
     ity  mir  to  speed up inserting in this case.  Omitting mir
     will affect only speed.   Some  terminals	(notably  Datame-
     dia's)  must  not	have  mir because of the way their insert
     mode works.

     Finally, you can specify dch1 to delete a single  character,
     dch  with	one  parameter,	 n,  to	 delete n characters, and
     delete mode by giving smdc and rmdc to enter and exit delete
     mode  (any	 mode the terminal needs to be placed in for dch1
     to work).

     A command to erase n characters (equivalent to outputting	n
     blanks  without  moving the cursor) can be given as ech with
     one parameter.

     Highlighting, Underlining, and Visible Bells

     If	 your  terminal	 has  one  or  more  kinds   of	  display
     attributes,  these can be represented in a number of differ-
     ent ways.	You should choose one display  form  as	 standout
     mode,  representing a good, high contrast, easy-on-the-eyes,
     format for highlighting error messages and	 other	attention
     getters.	(If  you  have a choice, reverse video plus half-
     bright is good, or reverse video alone.)  The  sequences  to
     enter  and	 exit  standout	 mode are given as smso and rmso,
     respectively.  If the code to change into or out of standout
     mode  leaves  one or even two blank spaces on the screen, as
     the TVI 912 and Teleray 1061 do, then xmc should be given to
     tell how many spaces are left.

     Codes  to begin underlining and end underlining can be given
     as smul and rmul respectively.  If the terminal has  a  code
     to	 underline  the current character and move the cursor one
     space to the right, such as the Microterm Mime, this can  be
     given as uc.

     Other  capabilities  to  enter  various  highlighting  modes
     include blink (blinking) bold (bold  or  extra  bright)  dim

MirOS BSD #9-current	Printed 27.10.2006		       29

TERMINFO(5)		   File Formats		      TERMINFO(5)

     (dim or half-bright) invis (blanking or invisible text) prot
     (protected) rev (reverse video) sgr0 (turn off all attribute
     modes)  smacs (enter alternate character set mode) and rmacs
     (exit alternate character set  mode).   Turning  on  any  of
     these modes singly may or may not turn off other modes.

     If	 there	is  a  sequence	 to set arbitrary combinations of
     modes, this should be given as sgr (set attributes),  taking
     9 parameters.  Each parameter is either 0 or nonzero, as the
     corresponding attribute is on or off.  The 9 parameters are,
     in	 order:	 standout,  underline, reverse, blink, dim, bold,
     blank, protect, alternate character set.  Not all modes need
     be supported by sgr, only those for which corresponding sep-
     arate attribute commands exist.

     For example, the DEC vt220 supports most of the modes:

	  tparm parameter   attribute	 escape sequence

	  none		    none	 \E[0m
	  p1		    standout	 \E[0;1;7m
	  p2		    underline	 \E[0;4m
	  p3		    reverse	 \E[0;7m
	  p4		    blink	 \E[0;5m
	  p5		    dim		 not available
	  p6		    bold	 \E[0;1m
	  p7		    invis	 \E[0;8m
	  p8		    protect	 not used
	  p9		    altcharset	 ^O (off) ^N (on)

     We begin each escape sequence by turning  off  any	 existing
     modes, since there is no quick way to determine whether they
     are active.  Standout is set up to	 be  the  combination  of
     reverse  and  bold.   The vt220 terminal has a protect mode,
     though it is not commonly used in sgr  because  it	 protects
     characters	 on  the  screen  from	the host's erasures.  The
     altcharset mode also is different in that it is either ^O or
     ^N,  depending on whether it is off or on.	 If all modes are
     turned on, the resulting sequence is \E[0;1;4;5;7;8m^N.

     Some sequences are common to different modes.  For	 example,
     ;7	 is  output  when  either  p1  or p3 is true, that is, if
     either standout or reverse modes are turned on.

     Writing out the above sequences, along with their	dependen-
     cies yields

	sequence    when to output     terminfo translation

	\E[0	   always	       \E[0
	;1	   if p1 or p6	       %?%p1%p6%|%t;1%;

MirOS BSD #9-current	Printed 27.10.2006		       30

TERMINFO(5)		   File Formats		      TERMINFO(5)

	;4	   if p2	       %?%p2%|%t;4%;
	;5	   if p4	       %?%p4%|%t;5%;
	;7	   if p1 or p3	       %?%p1%p3%|%t;7%;
	;8	   if p7	       %?%p7%|%t;8%;
	m	   always	       m
	^N or ^O   if p9 ^N, else ^O   %?%p9%t^N%e^O%;

     Putting this all together into the sgr sequence gives:

	 sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;
	     %?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,

     Remember  that  if	 you  specify  sgr, you must also specify
     sgr0.  Also, some implementations rely on sgr being given if
     sgr0  is,	Not  all terminfo entries necessarily have an sgr
     string, however.  Many terminfo  entries  are  derived  from
     termcap entries which have no sgr string.	The only drawback
     to adding an sgr string is that termcap  also  assumes  that
     sgr0 does not exit alternate character set mode.

     Terminals	with  the  ``magic  cookie'' glitch (xmc) deposit
     special   ``cookies''   when   they   receive   mode-setting
     sequences,	 which	affect	the display algorithm rather than
     having extra bits for each character.  Some terminals,  such
     as	 the HP 2621, automatically leave standout mode when they
     move to a new line or the	cursor	is  addressed.	 Programs
     using  standout mode should exit standout mode before moving
     the cursor or sending a newline, unless the msgr capability,
     asserting	that  it  is  safe  to	move in standout mode, is
     present.

     If the terminal has a way of flashing the screen to indicate
     an error quietly (a bell replacement) then this can be given
     as flash; it must not move the cursor.

     If the cursor needs to be made more visible than normal when
     it	 is  not on the bottom line (to make, for example, a non-
     blinking underline into an easier to find block or	 blinking
     underline)	 give  this sequence as cvvis.	If there is a way
     to make the cursor completely invisible, give that as civis.
     The  capability  cnorm  should  be	 given	which  undoes the
     effects of both of these modes.

     If your terminal correctly generates  underlined  characters
     (with no special codes needed) even though it does not over-
     strike, then you should give the capability ul.  If a  char-
     acter  overstriking  another  leaves  both characters on the
     screen, specify  the  capability  os.   If	 overstrikes  are
     erasable with a blank, then this should be indicated by giv-
     ing eo.

MirOS BSD #9-current	Printed 27.10.2006		       31

TERMINFO(5)		   File Formats		      TERMINFO(5)

     Keypad and Function Keys

     If the terminal has a keypad that transmits codes	when  the
     keys  are pressed, this information can be given.	Note that
     it is not possible to handle terminals where the keypad only
     works  in local (this applies, for example, to the unshifted
     HP 2621 keys).  If the keypad can be set to transmit or  not
     transmit,	give these codes as smkx and rmkx.  Otherwise the
     keypad is assumed to always transmit.  The codes sent by the
     left arrow, right arrow, up arrow, down arrow, and home keys
     can be given  as  kcub1,  kcuf1,  kcuu1,  kcud1,  and  khome
     respectively.   If	 there	are function keys such as f0, f1,
     ..., f10, the codes they send can be given as kf0, kf1, ...,
     kf10.   If	 these keys have labels other than the default f0
     through f10, the labels can be given as lf0, lf1, ..., lf10.
     The  codes	 transmitted by certain other special keys can be
     given: kll (home down), kbs  (backspace),	ktbc  (clear  all
     tabs),  kctab  (clear  the	 tab  stop  in this column), kclr
     (clear screen or erase key), kdch1 (delete character),  kdl1
     (delete  line),  krmir (exit insert mode), kel (clear to end
     of line), ked (clear to end of screen), kich1 (insert  char-
     acter  or	enter insert mode), kil1 (insert line), knp (next
     page), kpp (previous page), kind (scroll forward/down),  kri
     (scroll  backward/up), khts (set a tab stop in this column).
     In addition, if the keypad has  a	3  by  3  array	 of  keys
     including	the  four  arrow keys, the other five keys can be
     given as ka1, ka3, kb2, kc1, and kc3.  These keys are useful
     when the effects of a 3 by 3 directional pad are needed.

     Strings  to  program  function  keys  can be given as pfkey,
     pfloc, and pfx.  A string to program screen labels should be
     specified	as  pln.  Each of these strings takes two parame-
     ters: the function key number to program (from 0 to 10)  and
     the  string to program it with.  Function key numbers out of
     this range may program undefined keys in a	 terminal  depen-
     dent  manner.   The  difference  between the capabilities is
     that pfkey causes pressing the given key to be the	 same  as
     the user typing the given string; pfloc causes the string to
     be executed by the terminal in local;  and	 pfx  causes  the
     string to be transmitted to the computer.

     The  capabilities	nlab, lw and lh define the number of pro-
     grammable screen labels and  their	 width	and  height.   If
     there  are commands to turn the labels on and off, give them
     in smln and rmln.	smln is normally output after one or more
     pln  sequences to make sure that the change becomes visible.

     Tabs and Initialization

     If the terminal has hardware tabs, the command to advance to
     the next tab stop can be given as ht (usually control I).	A
     ``back-tab'' command which moves leftward to  the	preceding

MirOS BSD #9-current	Printed 27.10.2006		       32

TERMINFO(5)		   File Formats		      TERMINFO(5)

     tab  stop	can be given as cbt.  By convention, if the tele-
     type modes indicate that tabs are being expanded by the com-
     puter  rather  than  being	 sent  to  the terminal, programs
     should not use ht or cbt even if they are present, since the
     user may not have the tab stops properly set.  If the termi-
     nal has hardware tabs which are initially set every n spaces
     when the terminal is powered up, the numeric parameter it is
     given, showing the number of spaces the  tabs  are	 set  to.
     This  is  normally	 used  by  the	tset command to determine
     whether to set the mode  for  hardware  tab  expansion,  and
     whether to set the tab stops.  If the terminal has tab stops
     that can be  saved	 in  non-volatile  memory,  the	 terminfo
     description can assume that they are properly set.

     Other capabilities include is1, is2, and is3, initialization
     strings for the terminal, iprog, the path name of a  program
     to	 be run to initialize the terminal, and if, the name of a
     file containing long initialization strings.  These  strings
     are  expected to set the terminal into modes consistent with
     the rest of the terminfo  description.   They  are	 normally
     sent  to  the  terminal, by the init option of the tput pro-
     gram, each time the user logs in.	They will be  printed  in
     the following order: run the program iprog; output is1; is2;
     set the margins using mgc, smgl and smgr; set tabs using tbc
     and hts; print the file if; and finally output is3.

     Most  initialization  is  done  with  is2.	 Special terminal
     modes can be set up without duplicating strings  by  putting
     the  common  sequences  in	 is2 and special cases in is1 and
     is3.  A pair of sequences that does a harder  reset  from	a
     totally  unknown state can be analogously given as rs1, rs2,
     rf, and rs3, analogous to is2 and	if.   These  strings  are
     output by the reset program, which is used when the terminal
     gets into a wedged state.	Commands are normally  placed  in
     rs1, rs2 rs3 and rf only if they produce annoying effects on
     the screen and are not necessary when logging in.	For exam-
     ple,  the command to set the vt100 into 80-column mode would
     normally be part of is2, but it causes an annoying glitch of
     the  screen and is not normally needed since the terminal is
     usually already in 80 column mode.

     If there are commands to set and clear tab stops,	they  can
     be	 given	as  tbc	 (clear all tab stops) and hts (set a tab
     stop in the current column of every row).	If a more complex
     sequence  is needed to set the tabs than can be described by
     this, the sequence can be placed in is2 or if.

     Delays and Padding

     Many older	 and  slower  terminals	 do  not  support  either
     XON/XOFF  or  DTR handshaking, including hard copy terminals
     and some very archaic  CRTs  (including,  for  example,  DEC

MirOS BSD #9-current	Printed 27.10.2006		       33

TERMINFO(5)		   File Formats		      TERMINFO(5)

     VT100s).  These may require padding characters after certain
     cursor motions and screen changes.

     If the terminal uses xon/xoff handshaking for  flow  control
     (that  is,	 it  automatically emits ^S back to the host when
     its input buffers are close to full), set xon.   This  capa-
     bility suppresses the emission of padding.	 You can also set
     it for memory-mapped console devices effectively that do not
     have  a  speed  limit.   Padding information should still be
     included so that routines can make	 better	 decisions  about
     relative costs, but actual pad characters will not be trans-
     mitted.

     If pb (padding baud rate) is given, padding is suppressed at
     baud  rates below the value of pb.	 If the entry has no pad-
     ding baud rate, then whether padding is emitted  or  not  is
     completely controlled by xon.

     If	 the terminal requires other than a null (zero) character
     as a pad, then this can be given as  pad.	 Only  the  first
     character of the pad string is used.

     Status Lines
     Some terminals have an extra `status line' which is not nor-
     mally used by software (and thus not counted in  the  termi-
     nal's lines capability).

     The  simplest case is a status line which is cursor-address-
     able but not part	of  the	 main  scrolling  region  on  the
     screen;  the Heathkit H19 has a status line of this kind, as
     would a 24-line VT100 with a 23-line scrolling region set up
     on	 initialization.   This	 situation is indicated by the hs
     capability.

     Some terminals with status lines need special  sequences  to
     access  the status line.  These may be expressed as a string
     with single parameter tsl which takes the cursor to a  given
     zero-origin  column  on the status line.  The capability fsl
     must return to the main-screen cursor positions  before  the
     last  tsl.	  You  may  need to embed the string values of sc
     (save cursor) and rc (restore cursor)  in	tsl  and  fsl  to
     accomplish this.

     The  status line is normally assumed to be the same width as
     the width of the terminal.	 If this is untrue, you can spec-
     ify it with the numeric capability wsl.

     A command to erase or blank the status line may be specified
     as dsl.

     The  boolean  capability	eslok	specifies   that   escape
     sequences, tabs, etc., work ordinarily in the status line.

MirOS BSD #9-current	Printed 27.10.2006		       34

TERMINFO(5)		   File Formats		      TERMINFO(5)

     The  ncurses  implementation  does	 not yet use any of these
     capabilities.  They are documented here in	 case  they  ever
     become important.

     Line Graphics

     Many  terminals  have  alternate  character  sets useful for
     forms-drawing.  Terminfo and curses build in support for the
     drawing characters supported by the VT100, with some charac-
     ters from the AT&T 4410v1 added.  This  alternate	character
     set may be specified by the acsc capability.

	      Glyph		 ACS		 Ascii	    VT100
	       Name		 Name		 Default    Name
     UK pound sign		 ACS_STERLING	 f	    }
     arrow pointing down	 ACS_DARROW	 v	    .
     arrow pointing left	 ACS_LARROW	 <	    ,
     arrow pointing right	 ACS_RARROW	 >	    +
     arrow pointing up		 ACS_UARROW	 ^	    -
     board of squares		 ACS_BOARD	 #	    h
     bullet			 ACS_BULLET	 o	    ~
     checker board (stipple)	 ACS_CKBOARD	 :	    a
     degree symbol		 ACS_DEGREE	 \	    f
     diamond			 ACS_DIAMOND	 +	    `
     greater-than-or-equal-to	 ACS_GEQUAL	 >	    z
     greek pi			 ACS_PI		 *	    {
     horizontal line		 ACS_HLINE	 -	    q
     lantern symbol		 ACS_LANTERN	 #	    i
     large plus or crossover	 ACS_PLUS	 +	    n
     less-than-or-equal-to	 ACS_LEQUAL	 <	    y
     lower left corner		 ACS_LLCORNER	 +	    m
     lower right corner		 ACS_LRCORNER	 +	    j
     not-equal			 ACS_NEQUAL	 !	    |
     plus/minus			 ACS_PLMINUS	 #	    g
     scan line 1		 ACS_S1		 ~	    o
     scan line 3		 ACS_S3		 -	    p
     scan line 7		 ACS_S7		 -	    r
     scan line 9		 ACS_S9		 _	    s
     solid square block		 ACS_BLOCK	 #	    0
     tee pointing down		 ACS_TTEE	 +	    w
     tee pointing left		 ACS_RTEE	 +	    u
     tee pointing right		 ACS_LTEE	 +	    t
     tee pointing up		 ACS_BTEE	 +	    v
     upper left corner		 ACS_ULCORNER	 +	    l
     upper right corner		 ACS_URCORNER	 +	    k
     vertical line		 ACS_VLINE	 |	    x

     The best way to define a new device's graphics set is to add
     a column to a copy of this table for your	terminal,  giving
     the   character  which  (when  emitted  between  smacs/rmacs
     switches) will be rendered	 as  the  corresponding	 graphic.
     Then  read off the VT100/your terminal character pairs right

MirOS BSD #9-current	Printed 27.10.2006		       35

TERMINFO(5)		   File Formats		      TERMINFO(5)

     to left in sequence; these become the ACSC string.

     Color Handling

     Most color terminals are  either  `Tektronix-like'	 or  `HP-
     like'.   Tektronix-like terminals have a predefined set of N
     colors (where N usually 8), and can set character-cell fore-
     ground  and background characters independently, mixing them
     into N * N color-pairs.  On HP-like terminals, the use  must
     set each color pair up separately (foreground and background
     are not independently settable).  Up to M color-pairs may be
     set up from 2*M different colors.	ANSI-compatible terminals
     are Tektronix-like.

     Some basic color capabilities are independent of  the  color
     method.   The  numeric capabilities colors and pairs specify
     the maximum numbers of colors and color-pairs  that  can  be
     displayed	simultaneously.	  The  op  (original pair) string
     resets foreground and background  colors  to  their  default
     values for the terminal.  The oc string resets all colors or
     color-pairs to their default values for the terminal.   Some
     terminals	(including  many  PC  terminal	emulators)  erase
     screen areas with the current background color  rather  than
     the  power-up  default  background;  these	 should	 have the
     boolean capability bce.

     To change the current foreground or background  color  on	a
     Tektronix-type terminal, use setaf (set ANSI foreground) and
     setab (set ANSI background) or  setf  (set	 foreground)  and
     setb  (set background).  These take one parameter, the color
     number.  The SVr4 documentation describes only  setaf/setab;
     the  XPG4	draft  says  that  "If the terminal supports ANSI
     escape sequences to  set  background  and	foreground,  they
     should  be	 coded	as setaf and setab, respectively.  If the
     terminal supports other escape sequences to  set  background
     and  foreground,  they  should  be	 coded	as setf and setb,
     respectively.  The vidputs() function and the refresh  func-
     tions use setaf and setab if they are defined."

     The  setaf/setab  and  setf/setb  capabilities take a single
     numeric argument each.  Argument values 0-7  of  setaf/setab
     are  portably  defined  as follows (the middle column is the
     symbolic #define available in the header for the  curses  or
     ncurses  libraries).   The	 terminal hardware is free to map
     these as it likes, but the RGB values indicate normal  loca-
     tions in color space.

	    Color	#define	      Value	  RGB
	    black     COLOR_BLACK	0     0, 0, 0
	    red	      COLOR_RED		1     max,0,0
	    green     COLOR_GREEN	2     0,max,0

MirOS BSD #9-current	Printed 27.10.2006		       36

TERMINFO(5)		   File Formats		      TERMINFO(5)

	    yellow    COLOR_YELLOW	3     max,max,0
	    blue      COLOR_BLUE	4     0,0,max
	    magenta   COLOR_MAGENTA	5     max,0,max
	    cyan      COLOR_CYAN	6     0,max,max
	    white     COLOR_WHITE	7     max,max,max

     The  argument values of setf/setb historically correspond to
     a different mapping, i.e.,
	    Color	#define	      Value	  RGB
	    black     COLOR_BLACK	0     0, 0, 0
	    blue      COLOR_BLUE	1     0,0,max
	    green     COLOR_GREEN	2     0,max,0
	    cyan      COLOR_CYAN	3     0,max,max
	    red	      COLOR_RED		4     max,0,0
	    magenta   COLOR_MAGENTA	5     max,0,max
	    yellow    COLOR_YELLOW	6     max,max,0
	    white     COLOR_WHITE	7     max,max,max
     It is important to not confuse the two sets of  color  capa-
     bilities;	otherwise  red/blue  will  be interchanged on the
     display.

     On an HP-like terminal, use scp  with  a  color-pair  number
     parameter to set which color pair is current.

     On	 a  Tektronix-like  terminal,  the  capability ccc may be
     present to indicate that colors can be modified.  If so, the
     initc  capability	will  take  a color number (0 to colors -
     1)and three more parameters which describe the color.  These
     three  parameters	default to being interpreted as RGB (Red,
     Green, Blue) values.   If	the  boolean  capability  hls  is
     present,  they  are  instead as HLS (Hue, Lightness, Satura-
     tion) indices.  The ranges are terminal-dependent.

     On an HP-like terminal, initp  may	 give  a  capability  for
     changing a color-pair value.  It will take seven parameters;
     a color-pair number (0 to max_pairs - 1),	and  two  triples
     describing	 first	background  and	 then  foreground colors.
     These parameters must be (Red, Green, Blue) or (Hue,  Light-
     ness, Saturation) depending on hls.

     On	 some  color  terminals,  colors collide with highlights.
     You can register these collisions with the	 ncv  capability.
     This  is a bit-mask of attributes not to be used when colors
     are enabled.  The correspondence with the attributes  under-
     stood by curses is as follows:

		     Attribute	    Bit	  Decimal
		     A_STANDOUT	    0	  1
		     A_UNDERLINE    1	  2
		     A_REVERSE	    2	  4
		     A_BLINK	    3	  8

MirOS BSD #9-current	Printed 27.10.2006		       37

TERMINFO(5)		   File Formats		      TERMINFO(5)

		     A_DIM	    4	  16
		     A_BOLD	    5	  32
		     A_INVIS	    6	  64
		     A_PROTECT	    7	  128
		     A_ALTCHARSET   8	  256

     For   example,  on	 many  IBM  PC	consoles,  the	underline
     attribute collides with the foreground color blue and is not
     available	in color mode.	These should have an ncv capabil-
     ity of 2.

     SVr4 curses does nothing with ncv, ncurses recognizes it and
     optimizes the output in favor of colors.

     Miscellaneous
     If	 the terminal requires other than a null (zero) character
     as a pad, then this can be given as  pad.	 Only  the  first
     character	of  the pad string is used.  If the terminal does
     not have a pad character, specify npc.   Note  that  ncurses
     implements	 the  termcap-compatible  PC variable; though the
     application may set this value to	something  other  than	a
     null,  ncurses will test npc first and use napms if the ter-
     minal has no pad character.

     If the terminal can move up or down half a line, this can be
     indicated	with  hu  (half-line up) and hd (half-line down).
     This is primarily useful for superscripts and subscripts  on
     hard-copy	terminals.   If a hard-copy terminal can eject to
     the next page (form feed), give this as ff (usually  control
     L).

     If	 there	is  a command to repeat a given character a given
     number of times (to save time transmitting a large number of
     identical characters) this can be indicated with the parame-
     terized string rep.  The first parameter is the character to
     be	 repeated and the second is the number of times to repeat
     it.  Thus,	 tparm(repeat_char,  'x',  10)	is  the	 same  as
     `xxxxxxxxxx'.

     If	 the  terminal	has a settable command character, such as
     the TEKTRONIX 4025, this can be  indicated	 with  cmdch.	A
     prototype	command	 character is chosen which is used in all
     capabilities.  This character is given in the cmdch capabil-
     ity  to  identify it.  The following convention is supported
     on some UNIX systems: The environment is to be searched  for
     a	CC  variable, and if found, all occurrences of the proto-
     type character are replaced with the character in the  envi-
     ronment variable.

     Terminal  descriptions that do not represent a specific kind
     of known terminal, such as switch, dialup, patch,	and  net-
     work,  should  include  the  gn (generic) capability so that

MirOS BSD #9-current	Printed 27.10.2006		       38

TERMINFO(5)		   File Formats		      TERMINFO(5)

     programs can complain that they do not know how to	 talk  to
     the  terminal.   (This  capability does not apply to virtual
     terminal descriptions for which  the  escape  sequences  are
     known.)

     If	 the  terminal	has  a ``meta key'' which acts as a shift
     key, setting the 8th bit of any character transmitted,  this
     fact  can	be  indicated  with km.	 Otherwise, software will
     assume that the 8th bit is parity and  it	will  usually  be
     cleared.  If strings exist to turn this ``meta mode'' on and
     off, they can be given as smm and rmm.

     If the terminal has more lines of memory than  will  fit  on
     the  screen  at  once,  the number of lines of memory can be
     indicated with lm.	 A value of lm#0 indicates that the  num-
     ber of lines is not fixed, but that there is still more mem-
     ory than fits on the screen.

     If the terminal is one of those supported by the  UNIX  vir-
     tual  terminal protocol, the terminal number can be given as
     vt.

     Media copy strings which control an auxiliary  printer  con-
     nected  to	 the terminal can be given as mc0: print the con-
     tents of the screen, mc4: turn off	 the  printer,	and  mc5:
     turn  on the printer.  When the printer is on, all text sent
     to the terminal will be sent to the printer.   It	is  unde-
     fined  whether  the  text	is also displayed on the terminal
     screen when the printer is on.  A variation mc5p  takes  one
     parameter,	 and leaves the printer on for as many characters
     as the value of the parameter, then turns the  printer  off.
     The  parameter  should  not exceed 255.  All text, including
     mc4, is transparently passed to the printer while an mc5p is
     in effect.

     Glitches and Braindamage

     Hazeltine terminals, which do not allow `~' characters to be
     displayed should indicate hz.

     Terminals which ignore a line-feed immediately after  an  am
     wrap, such as the Concept and vt100, should indicate xenl.

     If	 el is required to get rid of standout (instead of merely
     writing normal text on top of it), xhp should be given.

     Teleray terminals, where tabs turn all characters moved over
     to blanks, should indicate xt (destructive tabs).	Note: the
     variable indicating this is now  `dest_tabs_magic_smso';  in
     older  versions, it was teleray_glitch.  This glitch is also
     taken to mean that it is not possible to position the cursor
     on top of a ``magic cookie'', that to erase standout mode it

MirOS BSD #9-current	Printed 27.10.2006		       39

TERMINFO(5)		   File Formats		      TERMINFO(5)

     is instead necessary to use delete	 and  insert  line.   The
     ncurses implementation ignores this glitch.

     The  Beehive Superbee, which is unable to correctly transmit
     the escape or control C characters, has xsb, indicating that
     the  f1  key is used for escape and f2 for control C.  (Only
     certain Superbees have this problem, depending on the  ROM.)
     Note  that	 in  older terminfo versions, this capability was
     called `beehive_glitch'; it is now `no_esc_ctl_c'.

     Other specific terminal problems may be corrected by  adding
     more capabilities of the form xx.

     Similar Terminals

     If	 there	are two very similar terminals, one (the variant)
     can be defined as being just like the other (the base)  with
     certain  exceptions.   In the definition of the variant, the
     string capability use can be given with the name of the base
     terminal.	 The capabilities given before use override those
     in the base type named by use.  If there  are  multiple  use
     capabilities,  they  are  merged in reverse order.	 That is,
     the rightmost use reference is processed first, then the one
     to its left, and so forth.	 Capabilities given explicitly in
     the entry override those brought in by use references.

     A capability can be canceled by placing xx@ to the	 left  of
     the  use reference that imports it, where xx is the capabil-
     ity.  For example, the entry

		 2621-nl, smkx@, rmkx@, use=2621,

     defines a 2621-nl that does not have the smkx or rmkx  capa-
     bilities, and hence does not turn on the function key labels
     when in visual mode.  This is useful for different modes for
     a terminal, or for different user preferences.

     Pitfalls of Long Entries

     Long terminfo entries are unlikely to be a problem; to date,
     no entry has even approached terminfo's 4096-byte string-ta-
     ble  maximum.   Unfortunately,  the termcap translations are
     much more strictly limited (to  1023  bytes),  thus  termcap
     translations of long terminfo entries can cause problems.

     The  man  pages  for  4.3BSD and older versions of tgetent()
     instruct the user to allocate a  1024-byte	 buffer	 for  the
     termcap  entry.  The entry gets null-terminated by the term-
     cap library, so that makes the maximum  safe  length  for	a
     termcap  entry  1k-1  (1023)  bytes.   Depending on what the
     application and the termcap library  being	 used  does,  and
     where  in	the termcap file the terminal type that tgetent()

MirOS BSD #9-current	Printed 27.10.2006		       40

TERMINFO(5)		   File Formats		      TERMINFO(5)

     is searching for is, several bad things can happen.

     Some termcap libraries print a warning message  or	 exit  if
     they  find an entry that's longer than 1023 bytes; others do
     not; others truncate the entries to 1023 bytes.  Some appli-
     cation  programs  allocate	 more than the recommended 1K for
     the termcap entry; others do not.

     Each termcap entry has two important sizes	 associated  with
     it:  before  "tc" expansion, and after "tc" expansion.  "tc"
     is the capability that tacks on another termcap entry to the
     end  of  the  current one, to add on its capabilities.  If a
     termcap entry does not use	 the  "tc"  capability,	 then  of
     course the two lengths are the same.

     The  "before tc expansion" length is the most important one,
     because it affects more than just users of	 that  particular
     terminal.	 This  is the length of the entry as it exists in
     /etc/termcap, minus the backslash-newline pairs, which  tge-
     tent()  strips out while reading it.  Some termcap libraries
     strip off the final newline, too  (GNU  termcap  does  not).
     Now suppose:

     *	  a  termcap  entry  before  expansion	is more than 1023
	  bytes long,

     *	  and the application has only allocated a 1k buffer,

     *	  and the termcap library (like the one in BSD/OS 1.1 and
	  GNU)	reads  the whole entry into the buffer, no matter
	  what its length, to see if it's the entry it wants,

     *	  and tgetent() is searching for  a  terminal  type  that
	  either  is  the long entry, appears in the termcap file
	  after the long entry, or does not appear in the file at
	  all  (so that tgetent() has to search the whole termcap
	  file).

     Then tgetent() will overwrite memory, perhaps its stack, and
     probably  core  dump  the program.	 Programs like telnet are
     particularly vulnerable; modern telnets  pass  along  values
     like  the	terminal  type	automatically.	 The  results are
     almost as undesirable with a  termcap  library,  like  SunOS
     4.1.3  and	 Ultrix 4.4, that prints warning messages when it
     reads an overly long termcap entry.  If  a	 termcap  library
     truncates	long  entries,	like  OSF/1  3.0, it is immune to
     dying here but will return incorrect data for the	terminal.

     The  "after  tc expansion" length will have a similar effect
     to the above, but only for people who actually set	 TERM  to
     that terminal type, since tgetent() only does "tc" expansion
     once it's found the terminal type it was  looking	for,  not

MirOS BSD #9-current	Printed 27.10.2006		       41

TERMINFO(5)		   File Formats		      TERMINFO(5)

     while searching.

     In	 summary,  a termcap entry that is longer than 1023 bytes
     can cause, on various combinations of termcap libraries  and
     applications, a core dump, warnings, or incorrect operation.
     If it's too long even before "tc" expansion,  it  will  have
     this  effect even for users of some other terminal types and
     users whose TERM variable does not have a termcap entry.

     When in -C (translate to termcap) mode, the  ncurses  imple-
     mentation	of tic(1) issues warning messages when the pre-tc
     length of a termcap translation is too long.  The -c (check)
     option also checks resolved (after tc expansion) lengths.

     Binary Compatibility
     It	 is  not  wise to count on portability of binary terminfo
     entries between commercial UNIX versions.	 The  problem  is
     that  there are at least two versions of terminfo (under HP-
     UX and AIX) which diverged	 from  System  V  terminfo  after
     SVr1,  and	 have  added extension capabilities to the string
     table that (in the binary format) collide with System V  and
     XSI Curses extensions.

EXTENSIONS
     Some  SVr4 curses implementations, and all previous to SVr4,
     do not interpret  the  %A	and  %O	 operators  in	parameter
     strings.

     SVr4/XPG4	do  not	 specify  whether  msgr licenses movement
     while in an alternate-character-set mode  (such  modes  may,
     among  other things, map CR and NL to characters that do not
     trigger local motions).  The ncurses implementation  ignores
     msgr  in  ALTCHARSET mode.	 This raises the possibility that
     an XPG4 implementation making  the	 opposite  interpretation
     may  need	terminfo  entries  made	 for ncurses to have msgr
     turned off.

     The ncurses library  handles  insert-character  and  insert-
     character modes in a slightly non-standard way to get better
     update efficiency.	 See the Insert/Delete Character  subsec-
     tion above.

     The  parameter substitutions for set_clock and display_clock
     are not documented in SVr4 or the XSI Curses standard.  They
     are  deduced  from the documentation for the AT&T 505 termi-
     nal.

     Be careful assigning  the	kmous  capability.   The  ncurses
     wants to interpret it as KEY_MOUSE, for use by terminals and
     emulators like xterm that can return mouse-tracking informa-
     tion in the keyboard-input stream.

MirOS BSD #9-current	Printed 27.10.2006		       42

TERMINFO(5)		   File Formats		      TERMINFO(5)

     Different	commercial  ports  of terminfo and curses support
     different subsets of the XSI Curses standard  and	(in  some
     cases)  different	extension sets.	 Here is a summary, accu-
     rate as of October 1995:

     SVR4, Solaris, ncurses -- These support all  SVr4	capabili-
     ties.

     SGI -- Supports the SVr4 set, adds one undocumented extended
     string capability (set_pglen).

     SVr1, Ultrix -- These support a restricted	 subset	 of  ter-
     minfo  capabilities.   The	 booleans  end with xon_xoff; the
     numerics  with  width_status_line;	 and  the  strings   with
     prtr_non.

     HP/UX  -- Supports the SVr1 subset, plus the SVr[234] numer-
     ics num_labels,  label_height,  label_width,  plus	 function
     keys 11 through 63, plus plab_norm, label_on, and label_off,
     plus some incompatible extensions in the string table.

     AIX -- Supports the  SVr1	subset,	 plus  function	 keys  11
     through  63,  plus	 a  number  of	incompatible string table
     extensions.

     OSF -- Supports both the SVr4 set and the AIX extensions.

FILES
     /usr/share/terminfo/?/*  files containing terminal	 descrip-
			      tions

     /usr/share/misc/terminfo.db
			      file  containing	terminal descrip-
			      tions on BSD

SEE ALSO
     cap_mkdb(1),  tic(1),  infocmp(1),	  curses(3),   printf(3),
     term(5).

AUTHORS
     Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey.  Based
     on pcurses by Pavel Curtis.

MirOS BSD #9-current	Printed 27.10.2006		       43

[top]

List of man pages available for MirBSD

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net