Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
TERMINFO(5)			 File Formats			   TERMINFO(5)

NAME
       terminfo	- terminal capability data base

SYNOPSIS
       /usr/share/misc/terminfo/*/*

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

       Entries	in terminfo consist of a sequence of `,' separated fields (em-
       bedded commas may be escaped with a  backslash  or  notated  as	\072).
       White  space  after  the	`,' separator is ignored.  The first entry for
       each terminal gives the names which are known for the  terminal,	 sepa-
       rated  by  `|' characters.  The first name given	is the most common ab-
       breviation for the terminal, the	last name given	should be a long  name
       fully  identifying  the terminal, and all others	are understood as syn-
       onyms 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.

       Terminal	names (except for the last, verbose entry)  should  be	chosen
       using the following conventions.	 The particular	piece of hardware mak-
       ing 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 preferences, should	be indicated by	appending a hyphen and a  mode
       suffix.	 Thus,	a vt100	in 132 column mode would be vt100-w.  The fol-
       lowing 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
	    -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 database,	and is
       used by a person	updating the database.	 Whenever  possible,  capnames
       are chosen to be	the same as or similar 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 semantics	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.

       These are the boolean capabilities:

	       Variable		     Cap-	TCap	      Description
	       Booleans		     name	Code
       auto_left_margin				bw	  bw
       T}
       auto_right_margin			am	  am
       T}
       back_color_erase				bce	  ut
       T}
       can_change					  ccc
       T}
       ceol_standout_glitch			xhp	  xs
       T}
       col_addr_glitch					  xhpa
       T}
       cpi_changes_res					  cpix
       T}
       cr_cancels_micro_mode			crxm	  YB
       T}
       dest_tabs_magic_smso			xt	  xt
       T}
       eat_newline_glitch			xenl	  xn
       T}
       erase_overstrike				eo	  eo
       T}
       generic_type					  gn
       T}
       hard_copy					  hc
       T}
       hard_cursor					  chts
       T}
       has_meta_key					  km
       T}
       has_print_wheel					  daisy
       T}
       has_status_line					  hs
       T}
       hue_lightness_saturation	     hls	hl	  -
       T}
       insert_null_glitch			in	  in

       T}
       lpi_changes_res					  lpix
       T}
       memory_above					  da
       T}
       memory_below					  db
       T}
       move_insert_mode				mir	  mi
       T}
       move_standout_mode			msgr	  ms
       T}
       needs_xon_xoff					  nxon
       T}
       no_esc_ctlc					  xsb
       T}
       no_pad_char					  npc
       T}
       non_dest_scroll_region			ndscr	  ND
       T}
       non_rev_rmcup					  nrrmc
       T}
       over_strike					  os
       T}
       prtr_silent					  mc5i
       T}
       row_addr_glitch					  xvpa
       T}
       semi_auto_right_margin			sam	  YE
       T}
       status_line_esc_ok			eslok	  es
       T}
       tilde_glitch					  hz
       T}
       transparent_underline			ul	  ul
       T}
       xon_xoff						  xon
       T}

       These are the numeric capabilities:

	       Variable		     Cap-	TCap	      Description
		Numeric		     name	Code
       columns
       T}
       init_tabs					  it
       T}
       label_height					  lh
       T}
       label_width					  lw
       T}
       lines
       T}
       lines_of_memory					  lm
       T}
       magic_cookie_glitch			xmc	  sg
       T}
       max_attributes					  ma
       T}
       max_colors					  colors
       T}
       max_pairs					  pairs
       T}
       maximum_windows					  wnum
       T}

       no_color_video					  ncv
       T}
       num_labels					  nlab
       T}
       padding_baud_rate			pb	  pb
       T}
       virtual_terminal				vt	  vt
       T}
       width_status_line			wsl	  ws
       T}

       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
       T}
       bit_image_type					  bitype
       T}
       buffer_capacity					  bufsz
       T}
       buttons
       T}
       dot_horz_spacing			       spinh	  Yc
       T}
       dot_vert_spacing			       spinv	  Yb
       T}
       max_micro_address		       maddr	  Yd
       T}
       max_micro_jump					  mjump
       T}
       micro_col_size					  mcs
       T}
       micro_line_size					  mls
       T}
       number_of_pins					  npins
       T}
       output_res_char					  orc
       T}
       output_res_horz_inch		       orhi	  Yk
       T}
       output_res_line					  orl
       T}
       output_res_vert_inch		       orvi	  Yl
       T}
       print_rate					  cps
       T}
       wide_char_size					  widcs
       T}

       These are the string capabilities:

	       Variable		     Cap-	TCap	      Description
		String		     name	Code
       acs_chars					  acsc
       T}
       back_tab						  cbt
       T}
       bell
       T}
       carriage_return					  cr

       T}
       change_char_pitch			cpi	  ZA
       T}
       change_line_pitch			lpi	  ZB
       T}
       change_res_horz					  chr
       T}
       change_res_vert					  cvr
       T}
       change_scroll_region			csr	  cs
       T}
       char_padding					  rmp
       T}
       clear_all_tabs					  tbc
       T}
       clear_margins					  mgc
       T}
       clear_screen					  clear
       T}
       clr_bol
       T}
       clr_eol
       T}
       clr_eos
       T}
       column_address					  hpa
       T}
       command_character			cmdch	  CC
       T}
       create_window					  cwin
       T}
       cursor_address					  cup
       T}
       cursor_down					  cud1
       T}
       cursor_home					  home
       T}
       cursor_invisible				civis	  vi
       T}
       cursor_left					  cub1
       T}
       cursor_mem_address			mrcup	  CM
       T}
       cursor_normal					  cnorm
       T}
       cursor_right					  cuf1
       T}
       cursor_to_ll					  ll
       T}
       cursor_up					  cuu1
       T}
       cursor_visible					  cvvis
       T}
       define_char					  defc
       T}
       delete_character				dch1	  dc
       T}
       delete_line					  dl1
       T}
       dial_phone					  dial
       T}
       dis_status_line					  dsl
       T}
       display_clock					  dclk
       T}

       down_half_line					  hd
       T}
       ena_acs
       T}
       enter_alt_charset_mode			smacs	  as
       T}
       enter_am_mode					  smam
       T}
       enter_blink_mode				blink	  mb
       T}
       enter_bold_mode					  bold
       T}
       enter_ca_mode					  smcup
       T}
       enter_delete_mode			smdc	  dm
       T}
       enter_dim_mode					  dim
       T}
       enter_doublewide_mode			swidm	  ZF
       T}
       enter_draft_quality			sdrfq	  ZG
       T}
       enter_insert_mode			smir	  im
       T}
       enter_italics_mode			sitm	  ZH
       T}
       enter_leftward_mode			slm	  ZI
       T}
       enter_micro_mode				smicm	  ZJ
       T}
       enter_near_letter_quality     snlq	ZK	  -
       T}
       enter_normal_quality			snrmq	  ZL
       T}
       enter_protected_mode			prot	  mp
       T}
       enter_reverse_mode			rev	  mr
       T}
       enter_secure_mode			invis	  mk
       T}
       enter_shadow_mode			sshm	  ZM
       T}
       enter_standout_mode			smso	  so
       T}
       enter_subscript_mode			ssubm	  ZN
       T}
       enter_superscript_mode			ssupm	  ZO
       T}
       enter_underline_mode			smul	  us
       T}
       enter_upward_mode			sum	  ZP
       T}
       enter_xon_mode					  smxon
       T}
       erase_chars					  ech
       T}
       exit_alt_charset_mode			rmacs	  ae
       T}
       exit_am_mode					  rmam
       T}
       exit_attribute_mode			sgr0	  me
       T}
       exit_ca_mode					  rmcup
       T}
       exit_delete_mode				rmdc	  ed

       T}
       exit_doublewide_mode			rwidm	  ZQ
       T}
       exit_insert_mode				rmir	  ei
       T}
       exit_italics_mode			ritm	  ZR
       T}
       exit_leftward_mode			rlm	  ZS
       T}
       exit_micro_mode					  rmicm
       T}
       exit_shadow_mode				rshm	  ZU
       T}
       exit_standout_mode			rmso	  se
       T}
       exit_subscript_mode			rsubm	  ZV
       T}
       exit_superscript_mode			rsupm	  ZW
       T}
       exit_underline_mode			rmul	  ue
       T}
       exit_upward_mode				rum	  ZX
       T}
       exit_xon_mode					  rmxon
       T}
       fixed_pause					  pause
       T}
       flash_hook					  hook
       T}
       flash_screen					  flash
       T}
       form_feed					  ff
       T}
       from_status_line				fsl	  fs
       T}
       goto_window					  wingo
       T}
       hangup
       T}
       init_1string					  is1
       T}
       init_2string					  is2
       T}
       init_3string					  is3
       T}
       init_file					  if
       T}
       init_prog					  iprog
       T}
       initialize_color				initc	  Ic
       T}
       initialize_pair					  initp
       T}
       insert_character				ich1	  ic
       T}
       insert_line					  il1
       T}
       insert_padding					  ip
       T}
       key_a1
       T}
       key_a3
       T}
       key_b2
       T}

       key_backspace					  kbs
       T}
       key_beg
       T}
       key_btab						  kcbt
       T}
       key_c1
       T}
       key_c3
       T}
       key_cancel					  kcan
       T}
       key_catab					  ktbc
       T}
       key_clear					  kclr
       T}
       key_close					  kclo
       T}
       key_command					  kcmd
       T}
       key_copy						  kcpy
       T}
       key_create					  kcrt
       T}
       key_ctab						  kctab
       T}
       key_dc
       T}
       key_dl
       T}
       key_down						  kcud1
       T}
       key_eic
       T}
       key_end
       T}
       key_enter					  kent
       T}
       key_eol
       T}
       key_eos
       T}
       key_exit						  kext
       T}
       key_f0
       T}
       key_f1
       T}
       key_f10
       T}
       key_f11
       T}
       key_f12
       T}
       key_f13
       T}
       key_f14
       T}
       key_f15
       T}
       key_f16
       T}
       key_f17
       T}
       key_f18

       T}
       key_f19
       T}
       key_f2
       T}
       key_f20
       T}
       key_f21
       T}
       key_f22
       T}
       key_f23
       T}
       key_f24
       T}
       key_f25
       T}
       key_f26
       T}
       key_f27
       T}
       key_f28
       T}
       key_f29
       T}
       key_f3
       T}
       key_f30
       T}
       key_f31
       T}
       key_f32
       T}
       key_f33
       T}
       key_f34
       T}
       key_f35
       T}
       key_f36
       T}
       key_f37
       T}
       key_f38
       T}
       key_f39
       T}
       key_f4
       T}
       key_f40
       T}
       key_f41
       T}
       key_f42
       T}
       key_f43
       T}
       key_f44
       T}
       key_f45
       T}
       key_f46
       T}
       key_f47
       T}

       key_f48
       T}
       key_f49
       T}
       key_f5
       T}
       key_f50
       T}
       key_f51
       T}
       key_f52
       T}
       key_f53
       T}
       key_f54
       T}
       key_f55
       T}
       key_f56
       T}
       key_f57
       T}
       key_f58
       T}
       key_f59
       T}
       key_f6
       T}
       key_f60
       T}
       key_f61
       T}
       key_f62
       T}
       key_f63
       T}
       key_f7
       T}
       key_f8
       T}
       key_f9
       T}
       key_find						  kfnd
       T}
       key_help						  khlp
       T}
       key_home						  khome
       T}
       key_ic
       T}
       key_il
       T}
       key_left						  kcub1
       T}
       key_ll
       T}
       key_mark						  kmrk
       T}
       key_message					  kmsg
       T}
       key_move						  kmov
       T}
       key_next						  knxt
       T}
       key_npage					  knp

       T}
       key_open						  kopn
       T}
       key_options					  kopt
       T}
       key_ppage					  kpp
       T}
       key_previous					  kprv
       T}
       key_print					  kprt
       T}
       key_redo						  krdo
       T}
       key_reference					  kref
       T}
       key_refresh					  krfr
       T}
       key_replace					  krpl
       T}
       key_restart					  krst
       T}
       key_resume					  kres
       T}
       key_right					  kcuf1
       T}
       key_save						  ksav
       T}
       key_sbeg						  kBEG
       T}
       key_scancel					  kCAN
       T}
       key_scommand					  kCMD
       T}
       key_scopy					  kCPY
       T}
       key_screate					  kCRT
       T}
       key_sdc
       T}
       key_sdl
       T}
       key_select					  kslt
       T}
       key_send						  kEND
       T}
       key_seol						  kEOL
       T}
       key_sexit					  kEXT
       T}
       key_sf
       T}
       key_sfind					  kFND
       T}
       key_shelp					  kHLP
       T}
       key_shome					  kHOM
       T}
       key_sic
       T}
       key_sleft					  kLFT
       T}
       key_smessage					  kMSG
       T}
       key_smove					  kMOV
       T}

       key_snext					  kNXT
       T}
       key_soptions					  kOPT
       T}
       key_sprevious					  kPRV
       T}
       key_sprint					  kPRT
       T}
       key_sr
       T}
       key_sredo					  kRDO
       T}
       key_sreplace					  kRPL
       T}
       key_sright					  kRIT
       T}
       key_srsume					  kRES
       T}
       key_ssave					  kSAV
       T}
       key_ssuspend					  kSPD
       T}
       key_stab						  khts
       T}
       key_sundo					  kUND
       T}
       key_suspend					  kspd
       T}
       key_undo						  kund
       T}
       key_up
       T}
       keypad_local					  rmkx
       T}
       keypad_xmit					  smkx
       T}
       lab_f0
       T}
       lab_f1
       T}
       lab_f10
       T}
       lab_f2
       T}
       lab_f3
       T}
       lab_f4
       T}
       lab_f5
       T}
       lab_f6
       T}
       lab_f7
       T}
       lab_f8
       T}
       lab_f9
       T}
       label_format					  fln
       T}
       label_off					  rmln
       T}
       label_on						  smln
       T}
       meta_off						  rmm

       T}
       meta_on
       T}
       micro_column_address			mhpa	  ZY
       T}
       micro_down					  mcud1
       T}
       micro_left					  mcub1
       T}
       micro_right					  mcuf1
       T}
       micro_row_address			mvpa	  Zc
       T}
       micro_up						  mcuu1
       T}
       newline
       T}
       order_of_pins					  porder
       T}
       orig_colors					  oc
       T}
       orig_pair					  op
       T}
       pad_char						  pad
       T}
       parm_dch						  dch
       T}
       parm_delete_line				dl	  DL
       T}
       parm_down_cursor				cud	  DO
       T}
       parm_down_micro					  mcud
       T}
       parm_ich						  ich
       T}
       parm_index					  indn
       T}
       parm_insert_line				il	  AL
       T}
       parm_left_cursor				cub	  LE
       T}
       parm_left_micro					  mcub
       T}
       parm_right_cursor			cuf	  RI
       T}
       parm_right_micro				mcuf	  Zh
       T}
       parm_rindex					  rin
       T}
       parm_up_cursor					  cuu
       T}
       parm_up_micro					  mcuu
       T}
       pkey_key						  pfkey
       T}
       pkey_local					  pfloc
       T}
       pkey_xmit					  pfx
       T}
       plab_norm					  pln
       T}
       print_screen					  mc0
       T}
       prtr_non						  mc5p
       T}

       prtr_off						  mc4
       T}
       prtr_on
       T}
       pulse
       T}
       quick_dial					  qdial
       T}
       remove_clock					  rmclk
       T}
       repeat_char					  rep
       T}
       req_for_input					  rfi
       T}
       reset_1string					  rs1
       T}
       reset_2string					  rs2
       T}
       reset_3string					  rs3
       T}
       reset_file					  rf
       T}
       restore_cursor					  rc
       T}
       row_address					  vpa
       T}
       save_cursor					  sc
       T}
       scroll_forward					  ind
       T}
       scroll_reverse					  ri
       T}
       select_char_set					  scs
       T}
       set_attributes					  sgr
       T}
       set_background					  setb
       T}
       set_bottom_margin			smgb	  Zk
       T}
       set_bottom_margin_parm			smgbp	  Zl
       T}
       set_clock					  sclk
       T}
       set_color_pair					  scp
       T}
       set_foreground					  setf
       T}
       set_left_margin					  smgl
       T}
       set_left_margin_parm			smglp	  Zm
       T}
       set_right_margin				smgr	  MR
       T}
       set_right_margin_parm			smgrp	  Zn
       T}
       set_tab
       T}
       set_top_margin					  smgt
       T}
       set_top_margin_parm			smgtp	  Zp
       T}
       set_window					  wind
       T}
       start_bit_image					  sbim

       T}
       start_char_set_def			scsd	  Zr
       T}
       stop_bit_image					  rbim
       T}
       stop_char_set_def			rcsd	  Zt
       T}
       subscript_characters			subcs	  Zu
       T}
       superscript_characters			supcs	  Zv
       T}
       tab
       T}
       these_cause_cr					  docr
       T}
       to_status_line					  tsl
       T}
       tone
       T}
       underline_char					  uc
       T}
       up_half_line					  hu
       T}
       user0
       T}
       user1
       T}
       user2
       T}
       user3
       T}
       user4
       T}
       user5
       T}
       user6
       T}
       user7
       T}
       user8
       T}
       user9
       T}
       wait_tone					  wait
       T}
       xoff_character					  xoffc
       T}
       xon_character					  xonc
       T}
       zero_motion					  zerom
       T}

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

	       Variable		     Cap-      TCap	       Description
		String		     name      Code
       alt_scancode_esc			       scesa	    S8
       T}
       bit_image_carriage_return     bicr      Yv	    -
       T}
       bit_image_newline		       binel	    Zz
       T}
       bit_image_repeat			       birep	    Xy

       T}
       char_set_names					    csnm
       T}
       code_set_init					    csin
       T}
       color_names					    colornm
       T}
       define_bit_image_region		       defbi	    Yx
       T}
       device_type					    devt
       T}
       display_pc_char					    dispc
       T}
       end_bit_image_region		       endbi	    Yy
       T}
       enter_pc_charset_mode		       smpch	    S2
       T}
       enter_scancode_mode		       smsc	    S4
       T}
       exit_pc_charset_mode		       rmpch	    S3
       T}
       exit_scancode_mode		       rmsc	    S5
       T}
       get_mouse					    getm
       T}
       key_mouse					    kmous
       T}
       mouse_info					    minfo
       T}
       pc_term_options					    pctrm
       T}
       pkey_plab					    pfxl
       T}
       req_mouse_pos					    reqmp
       T}
       scancode_escape					    scesc
       T}
       set0_des_seq					    s0ds
       T}
       set1_des_seq					    s1ds
       T}
       set2_des_seq					    s2ds
       T}
       set3_des_seq					    s3ds
       T}
       set_a_background			       setab	    AB
       T}
       set_a_foreground			       setaf	    AF
       T}
       set_color_band			       setcolor	    Yz
       T}
       set_lr_margin					    smglr
       T}
       set_page_length					    slines
       T}
       set_tb_margin					    smgtb
       T}

	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 term-
	cap 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 en-
	tries after SVr4.1; beware!

		Variable	     Cap-      TCap	      Description
		 String		     name      Code
	enter_horizontal_hl_mode     ehhlm     Xh	  -
	T}
	enter_left_hl_mode		       elhlm	  Xl
	T}
	enter_low_hl_mode		       elohlm	  Xo
	T}
	enter_right_hl_mode		       erhlm	  Xr
	T}
	enter_top_hl_mode		       ethlm	  Xt
	T}
	enter_vertical_hl_mode		       evhlm	  Xv
	T}
	set_a_attributes		       sgr1	  sA
	T}
	set_pglen_inch					  slength
	T}

   A Sample Entry
       The following entry, describing an ANSI-standard	terminal, is represen-
       tative  of  what	a terminfo entry for a modern terminal 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.  Comments may	be included on
       lines beginning with ``#''.  Capabilities  in  terminfo	are  of	 three
       types:  Boolean	capabilities 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 capabilities, which
       give a sequence which can be used to perform particular terminal	opera-
       tions.

   Types of Capabilities
       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 terminal	has, gives the
       value  `80' for ansi.  Values for numeric capabilities may be specified
       in decimal, octal or hexadecimal, using the C programming language con-
       ventions	(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 valued capabil-
       ities for easy encoding of characters there.  Both \E and \e map	to  an
       ESCAPE character, ^x maps to a control-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, en-
       closed 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 suf-
       fixes `*' or '/'	or both.  A `*'	indicates that the padding required is
       proportional to the number of lines affected by the operation, 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  in-
       dicate flow control.

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

   Fetching Compiled Descriptions
       If  the	environment variable TERMINFO is set, it is interpreted	as the
       pathname	of a directory containing the  compiled	 description  you  are
       working on.  Only that directory	is searched.

       If TERMINFO is not set, the ncurses version of the terminfo reader code
       will instead look in the	directory $HOME/.terminfo for a	 compiled  de-
       scription.  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 en-
       try is interpreted as a command	to  search  /usr/share/misc/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/misc/terminfo.

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

   Preparing Descriptions
       We now outline how to prepare descriptions of terminals.	 The most  ef-
       fective	way  to	prepare	a terminal description is by imitating the de-
       scription of a similar terminal in terminfo and to build	up a  descrip-
       tion  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-handling 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 middle 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	terminal over-
       strikes (rather than clearing a position	when  a	 character  is	struck
       over)  then  it	should	have  the os 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  pro-
       duce 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  example,  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 respective 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  col-
       umn  of	the next line, that command can	be given as nel	(newline).  It
       does not	matter if the command clears  the  remainder  of  the  current
       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.

       These capabilities suffice to describe hard-copy	and "glass-tty"	termi-
       nals.  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	termi-
       nal are described by a parameterized string capability, with printf(3S)
       like escapes %x in it.  For example, to address the cursor, the cup ca-
       pability	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.	 Often more complex operations
       are necessary.

       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	parm
	    %P[a-z]   set dynamic variable [a-z] to pop()
	    %g[a-z]   get dynamic variable [a-z] and push it
	    %P[A-Z]   set static variable [a-z]	to pop()
	    %g[A-Z]   get static variable [a-z]	and push it
	    %'c'      char constant c
	    %{nn}     integer constant nn
	    %l	      push strlen(pop)

	    %+ %- %* %/	%m
		      arithmetic (%m is	mod): push(pop() op pop())
	    %& %| %^  bit operations: push(pop() op pop())
	    %= %> %<  logical operations: push(pop() op	pop())
	    %A,	%O    logical and & or operations (for conditionals)
	    %! %~     unary operations push(op pop())
	    %i	      add 1 to first two parameters (for ANSI terminals)

	    %? expr %t thenpart	%e elsepart %;
		      if-then-else, %e elsepart	is optional.
		      else-if's	are possible a la Algol	68:
		      %? c1 %t b1 %e c2	%t b2 %e c3 %t b3 %e c4	%t b4 %e %;
		      ci are conditions, bi are	bodies.

       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 vari-
       ables 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 routines	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 parameter, 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	arithmetic 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 corner	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  cor-
       ner of the screen, not of memory.  (Thus, the \EH sequence on HP	termi-
       nals cannot be used for home.)

       If the terminal has row or column absolute cursor addressing, these can
       be  given as single parameter capabilities hpa (horizontal position ab-
       solute) and vpa (vertical  position  absolute).	 Sometimes  these  are
       shorter	than  the  more	 general  two  parameter sequence (as with the
       hp2645) and can be used in preference to	cup.  If there are  parameter-
       ized  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 TEKTRONIX 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	memory relative	cursor addressing and not screen relative cur-
       sor addressing, a one screen-sized window must be fixed into the	termi-
       nal 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 rm-
       cup), 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 beginning 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	avail-
       able.)

   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, 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) com-
       mands may be useful for ensuring	that  your  synthesized	 insert/delete
       string  does  not  move the cursor.  (Note that the ncurses(3X) library
       does  this  synthesis  automatically,  so  you  need  not  compose  in-
       sert/delete strings for an entry	with csr).

       Yet another way to construct insert and delete might be to use a	combi-
       nation 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 us-
       ing 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 win-
       dow 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 something 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-de-
       structive.   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  in-
       sert/delete  character which can	be described using terminfo.  The most
       common insert/delete character 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 de-
       termine the kind	of terminal 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  po-
       sition the cursor before	the "abc" and put the terminal 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	attri-
       bute.

       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  se-
       quence  needed  to  be sent just	before sending the character to	be in-
       serted.	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 re-
       quires 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, in-
       clude 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 character may also be given in ip.  If your
       terminal	 needs	both  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 capability, with one pa-
       rameter,	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 padding 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 capability	mir to	speed  up  inserting  in  this
       case.   Omitting	 mir  will affect only speed.  Some terminals (notably
       Datamedia'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 different 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  at-
       tention 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  Mi-
       croterm Mime, this can be given as uc.

       Other  capabilities  to	enter various highlighting modes include blink
       (blinking) bold (bold or	extra bright) dim (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 pa-
       rameter 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	termi-
       nal  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, de-
       pending 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 out-
       put when	either p1 or p3	is true, that is, if either  standout  or  re-
       verse modes are turned on.

       Writing out the above sequences,	along with their dependencies yields

sequence			when to	output	   terminfo translation

\E[0			       always		   \E[0
;1			       if p1 or	p6	   %?%p1%p6%|%t;1%;
;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.

       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 us-
       ing 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	overstrike,  then  you
       should  give  the  capability  ul.  If a	character 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
       giving eo.

   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.	Other-
       wise  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
       character or enter insert mode),	kil1 (insert line), knp	 (next	page),
       kpp  (previous  page),  kind  (scroll  forward/down), kri (scroll back-
       ward/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 parameters: 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  dependent
       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 lo-
       cal; and	pfx causes the string to be transmitted	to the computer.

       The capabilities	nlab, lw and lh	 define	 the  number  of  programmable
       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  nor-
       mally  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'' com-
       mand which moves	leftward to the	preceding tab stop  can	 be  given  as
       cbt.  By	convention, if the teletype modes indicate that	tabs are being
       expanded	by the computer	rather than being sent to the  terminal,  pro-
       grams should not	use ht or cbt even if they are present,	since the user
       may not have the	tab stops properly set.	 If the	terminal has  hardware
       tabs  which  are	initially set every n spaces when the terminal is pow-
       ered up,	the numeric parameter it is given, showing the number of  spa-
       ces  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  ini-
       tialize	the  terminal, and if, the name	of a file containing long ini-
       tialization 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 follow-
       ing order: run the program iprog; output	is1; is2; set the margins  us-
       ing  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 out-
       put  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 example,  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 don't support either  XON/XOFF  or  DTR
       handshaking,  including	hard copy terminals and	some very archaic CRTs
       (including, for example,	DEC VT100s).  These may	require	padding	 char-
       acters 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 capability suppresses the emission of
       padding.	 You can also set it for memory-mapped console devices	effec-
       tively that don't 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 transmitted.

       If pb (padding baud rate) is given, padding is suppressed at baud rates
       below the value of pb.  If the entry has	no  padding  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 normally used
       by software (and	thus not counted in the	terminal's lines capability).

       The simplest case is a status line which	is cursor-addressable 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 posi-
       tions 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 specify it with the nu-
       meric 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.

       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 sup-
       ported by the VT100, with some characters 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 to left in sequence;	these become the ACSC string.

   Color Handling
       Most  color  terminals  are either `Tektronix-like' or `HP-like'.  Tek-
       tronix-like terminals have a predefined set of N	colors (where  N  usu-
       ally  8),  and can set character-cell foreground	and background charac-
       ters 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 cur-
       rent  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
       functions use setaf and setab if	they are defined."

       The  setaf/setab	and setf/setb capabilities take	a single numeric argu-
       ment each.  Argument values 0-7 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 locations 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
		    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

       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 in-
       dicate 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	inter-
       preted as RGB (Red, Green, Blue)	values.	 If the	boolean	capability hls
       is present, they	are instead as HLS (Hue,  Lightness,  Saturation)  in-
       dices.  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, Lightness,	Saturation) depending on hls.

       On  some	color terminals, colors	collide	with highlights.  You can reg-
       ister 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 understood by curses	is as follows:

		    Attribute			Bit    Decimal
		    A_STANDOUT			0     1
		    A_UNDERLINE			1     2
		    A_REVERSE			2     4
		    A_BLINK			3     8
		    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	capability 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 terminal 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 use-
       ful 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  charac-
       ters)  this  can	 be  indicated with the	parameterized 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  capability 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 prototype character
       are replaced with the character in the environment variable.

       Terminal	descriptions that do not represent a specific  kind  of	 known
       terminal,  such	as  switch, dialup, patch, and network,	should include
       the gn (generic)	capability so that 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 number of lines is not fixed,	but that there
       is still	more memory than fits on the screen.

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

       Media  copy strings which control an auxiliary printer connected	to the
       terminal	can be given as	mc0: print the contents	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  undefined 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	param-
       eter, 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 tel-
       eray_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	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 capa-
       bilities	of the form xx.

   Similar Terminals
       If there	are two	very similar terminals,	one (the variant) can  be  de-
       fined  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 be-
       fore 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 over-
       ride those brought in by	use references.

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

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

       defines a 2621-nl that does not have the	smkx or	rmkx capabilities, 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 4K string-table maximum.	Unfortunately,
       the  termcap  translations are much more	strictly limited (to 1K), 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  1K buffer	for the	termcap	entry.	The entry gets
       null-terminated by the termcap 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() is	searching for is, sev-
       eral 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 don't; others truncate the
       entries to 1023 bytes.  Some application	programs  allocate  more  than
       the recommended 1K for the termcap entry; others	don't.

       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 doesn't 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 tgetent() strips out while reading it.  Some term-
       cap  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
	    doesn't 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  vulnera-
       ble;  modern telnets pass along values like the terminal	type automati-
       cally.  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 re-
       turn 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 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  implementation  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 be-
       tween commercial	UNIX versions.	The problem is that there are at least
       two versions of terminfo	(under HP-UX and AIX) which diverged from Sys-
       tem 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,  don't  in-
       terpret the %A and %O operators in parameter strings.

       SVr4/XPG4 do not	specify	whether	msgr licenses movement while in	an al-
       ternate-character-set mode (such	modes may, among other things, map  CR
       and  NL	to  characters that don't trigger local	motions).  The ncurses
       implementation ignores msgr in ALTCHARSET mode.	This raises the	possi-
       bility  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 subsection 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 terminal.

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

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

       SVR4, Solaris, ncurses -- These support all SVr4	capabilities.

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

       SVr1, Ultrix -- These support a restricted subset of terminfo capabili-
       ties.   The  booleans  end  with	xon_xoff; the numerics with width_sta-
       tus_line; and the strings with prtr_non.

       HP/UX --	Supports the SVr1 subset, plus the SVr[234]  numerics  num_la-
       bels, 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/misc/terminfo/?/*
				files containing terminal descriptions

SEE ALSO
       tic(1M),	curses(3X), printf(3S),	term(5).

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

								   TERMINFO(5)

NAME | SYNOPSIS | DESCRIPTION | sequence when to output terminfo translation | EXTENSIONS | FILES | SEE ALSO | AUTHORS

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=terminfo&sektion=5&manpath=FreeBSD+5.2.1-RELEASE>

home | help