12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375 |
- <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
- <!--
- * t
- * DO NOT EDIT THIS FILE BY HAND!
- * It is generated from terminfo.head, Caps, and terminfo.tail.
- * Note: this must be run through tbl before nroff.
- * The magic cookie on the first line triggers this under some man programs.
- ****************************************************************************
- * Copyright (c) 1998-2004,2006 Free Software Foundation, Inc. *
- * *
- * Permission is hereby granted, free of charge, to any person obtaining a *
- * copy of this software and associated documentation files (the *
- * "Software"), to deal in the Software without restriction, including *
- * without limitation the rights to use, copy, modify, merge, publish, *
- * distribute, distribute with modifications, sublicense, and/or sell *
- * copies of the Software, and to permit persons to whom the Software is *
- * furnished to do so, subject to the following conditions: *
- * *
- * The above copyright notice and this permission notice shall be included *
- * in all copies or substantial portions of the Software. *
- * *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS *
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *
- * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *
- * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *
- * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *
- * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *
- * *
- * Except as contained in this notice, the name(s) of the above copyright *
- * holders shall not be used in advertising or otherwise to promote the *
- * sale, use or other dealings in this Software without prior written *
- * authorization. *
- ****************************************************************************
- * @Id: terminfo.head,v 1.16 2007/03/04 00:09:46 tom Exp @
- * Head of terminfo man page ends here
- * @Id: terminfo.tail,v 1.49 2008/02/16 20:57:43 tom Exp @
- * Beginning of terminfo.tail file
- * This file is part of ncurses.
- * See "terminfo.head" for copyright.
- *.in -2
- *.in +2
- *.in -2
- *.in +2
- *.TH
- -->
- <HTML>
- <HEAD>
- <TITLE>terminfo 5 File Formats</TITLE>
- <link rev=made href="mailto:bug-ncurses@gnu.org">
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
- </HEAD>
- <BODY>
- <H1>terminfo 5 File Formats</H1>
- <HR>
- <PRE>
- <!-- Manpage converted by man2html 3.0.1 -->
- <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> File Formats <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
- </PRE>
- <H2>NAME</H2><PRE>
- terminfo - terminal capability data base
- </PRE>
- <H2>SYNOPSIS</H2><PRE>
- /usr/share/terminfo/*/*
- </PRE>
- <H2>DESCRIPTION</H2><PRE>
- <EM>Terminfo</EM> is a data base describing terminals, used by
- screen-oriented programs such as <STRONG><A HREF="nvi.1.html">nvi(1)</A></STRONG>, <STRONG><A HREF="rogue.1.html">rogue(1)</A></STRONG> and
- libraries such as <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>. <EM>Terminfo</EM> describes termi-
- nals by giving a set of capabilities which they have, by
- specifying how to perform screen operations, and by speci-
- fying padding requirements and initialization sequences.
- This describes <STRONG>ncurses</STRONG> version 5.6 (patch 20081011).
- Entries in <EM>terminfo</EM> 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 `|'
- characters. 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 understood 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 <STRONG>captoinfo</STRONG> and <STRONG>infotocap</STRONG> (aliases for <STRONG>tic</STRONG>)
- 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 <STRONG>infocmp</STRONG> <STRONG>-f</STRONG> option relies on this to format
- if-then-else expressions: the result can be read by <STRONG>tic</STRONG>.
- 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 pref-
- erences, 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 pos-
- sible:
- <STRONG>Suffix</STRONG> <STRONG>Meaning</STRONG> <STRONG>Example</STRONG>
- -<EM>nn</EM> Number of lines on the screen aaa-60
- -<EM>n</EM>p 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 <STRONG>term(7)</STRONG>
- manual page.
- <STRONG>Capabilities</STRONG>
- 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 <STRONG>variable</STRONG> is the name by which the programmer (at the
- terminfo level) accesses the capability.
- The <STRONG>capname</STRONG> 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 specifi-
- cation.
- The termcap code is the old <STRONG>termcap</STRONG> capability name (some
- capabilities are new, and have names which termcap did not
- originate).
- Capability names have no hard length limit, but an infor-
- mal limit of 5 characters has been adopted to keep them
- short and to allow the tabs in the source file <STRONG>Caps</STRONG> 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 (#<EM>i</EM>).
- (P*) indicates that padding may vary in proportion to
- the number of lines affected
- (#<EM>i</EM>) indicates the <EM>i</EM>th parameter.
- These are the boolean capabilities:
- <STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG>
- <STRONG>Booleans</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG>
- 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
- 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:
- <STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG>
- <STRONG>Numeric</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG>
- 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
- 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.
- <STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG>
- <STRONG>Numeric</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG>
- 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
- 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:
- <STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG>
- <STRONG>String</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG>
- 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)
- 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
- columns #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
- 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
- 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
- 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
- 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)
- 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
- 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
- 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
- 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
- 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
- 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.
- <STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG>
- <STRONG>String</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG>
- 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
- 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 <STRONG>ncurses</STRONG> 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!
- <STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG>
- <STRONG>String</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG>
- 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
- 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
- <STRONG>A</STRONG> <STRONG>Sample</STRONG> <STRONG>Entry</STRONG>
- The following entry, describing an ANSI-standard terminal,
- is representative of what a <STRONG>terminfo</STRONG> 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 <EM>terminfo</EM> are of three types: Boolean capa-
- bilities which indicate that the terminal has some partic-
- ular feature, numeric capabilities giving the size of the
- terminal or the size of particular delays, and string
- capabilities, which give a sequence which can be used to
- perform particular terminal operations.
- <STRONG>Types</STRONG> <STRONG>of</STRONG> <STRONG>Capabilities</STRONG>
- All capabilities have names. For instance, the fact that
- ANSI-standard terminals have <EM>automatic</EM> <EM>margins</EM> (i.e., an
- automatic return and line-feed when the end of a line is
- reached) is indicated by the capability <STRONG>am</STRONG>. Hence the
- description of ansi includes <STRONG>am</STRONG>. Numeric capabilities are
- followed by the character `#' and then a positive value.
- Thus <STRONG>cols</STRONG>, which indicates the number of columns the ter-
- minal has, gives the value `80' for ansi. Values for
- numeric capabilities may be specified in decimal, octal or
- hexadecimal, using the C programming language conventions
- (e.g., 255, 0377 and 0xff or 0xFF).
- Finally, string valued capabilities, such as <STRONG>el</STRONG> (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 capabilities for easy encoding of characters there.
- Both <STRONG>\E</STRONG> and <STRONG>\e</STRONG> map to an ESCAPE character, <STRONG>^x</STRONG> maps to a
- control-x for any appropriate x, and the sequences <STRONG>\n</STRONG> <STRONG>\l</STRONG>
- <STRONG>\r</STRONG> <STRONG>\t</STRONG> <STRONG>\b</STRONG> <STRONG>\f</STRONG> <STRONG>\s</STRONG> give a newline, line-feed, return, tab,
- backspace, form-feed, and space. Other escapes include <STRONG>\^</STRONG>
- for <STRONG>^</STRONG>, <STRONG>\\</STRONG> for <STRONG>\</STRONG>, <STRONG>\</STRONG>, for comma, <STRONG>\:</STRONG> for <STRONG>:</STRONG>, and <STRONG>\0</STRONG> for null.
- (<STRONG>\0</STRONG> will produce \200, which does not terminate a string
- but behaves as a null character on most terminals, provid-
- ing CS7 is specified. See <STRONG><A HREF="stty.1.html">stty(1)</A></STRONG>.) Finally, characters
- may be given as three octal digits after a <STRONG>\</STRONG>.
- A delay in milliseconds may appear anywhere in a string
- capability, enclosed in $<..> brackets, as in <STRONG>el</STRONG>=\EK$<5>,
- and padding characters are supplied by <EM>tputs</EM> 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 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 <EM>lines</EM>
- affected.) Normally, padding is advisory if the device
- has the <STRONG>xon</STRONG> 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 <STRONG>xon</STRONG> is
- present to indicate flow control.
- Sometimes individual capabilities must be commented out.
- To do this, put a period before the capability name. For
- example, see the second <STRONG>ind</STRONG> in the example above.
- <STRONG>Fetching</STRONG> <STRONG>Compiled</STRONG> <STRONG>Descriptions</STRONG>
- If the environment variable TERMINFO is set, it is inter-
- preted as the pathname of a directory containing the com-
- piled description you are working on. Only that directory
- is searched.
- If TERMINFO is not set, the <STRONG>ncurses</STRONG> version of the ter-
- minfo reader code will instead look in the directory
- <STRONG>$HOME/.terminfo</STRONG> for a compiled description. If it fails
- to find one there, and the environment variable TER-
- MINFO_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 <EM>/usr/share/terminfo</EM>). 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,
- <EM>/usr/share/terminfo</EM>.
- (Neither the <STRONG>$HOME/.terminfo</STRONG> lookups nor TERMINFO_DIRS
- extensions are supported under stock System V ter-
- minfo/curses.)
- <STRONG>Preparing</STRONG> <STRONG>Descriptions</STRONG>
- 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
- <EM>terminfo</EM> and to build up a description gradually, using
- partial descriptions with <EM>vi</EM> or some other screen-oriented
- program to check that they are correct. Be aware that a
- very unusual terminal may expose deficiencies in the abil-
- ity of the <EM>terminfo</EM> 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 usu-
- ally needed. A similar test can be used for insert char-
- acter.
- <STRONG>Basic</STRONG> <STRONG>Capabilities</STRONG>
- The number of columns on each line for the terminal is
- given by the <STRONG>cols</STRONG> numeric capability. If the terminal is
- a CRT, then the number of lines on the screen is given by
- the <STRONG>lines</STRONG> capability. If the terminal wraps around to the
- beginning of the next line when it reaches the right mar-
- gin, then it should have the <STRONG>am</STRONG> capability. If the termi-
- nal can clear its screen, leaving the cursor in the home
- position, then this is given by the <STRONG>clear</STRONG> string capabil-
- ity. If the terminal overstrikes (rather than clearing a
- position when a character is struck over) then it should
- have the <STRONG>os</STRONG> capability. If the terminal is a printing
- terminal, with no soft copy unit, give it both <STRONG>hc</STRONG> and <STRONG>os</STRONG>.
- (<STRONG>os</STRONG> 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 <STRONG>cr</STRONG>. (Normally this will be car-
- riage return, control M.) If there is a code to produce
- an audible signal (bell, beep, etc) give this as <STRONG>bel</STRONG>.
- If there is a code to move the cursor one position to the
- left (such as backspace) that capability should be given
- as <STRONG>cub1</STRONG>. Similarly, codes to move to the right, up, and
- down should be given as <STRONG>cuf1</STRONG>, <STRONG>cuu1</STRONG>, and <STRONG>cud1</STRONG>. These local
- cursor motions should not alter the text they pass over,
- for example, you would not normally use `<STRONG>cuf1</STRONG>= ' because
- the space would erase the character moved over.
- A very important point here is that the local cursor
- motions encoded in <EM>terminfo</EM> are undefined at the left and
- top edges of a CRT terminal. Programs should never
- attempt to backspace around the left edge, unless <STRONG>bw</STRONG> 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 <STRONG>ind</STRONG> (index) string.
- To scroll text down, a program goes to the top left corner
- of the screen and sends the <STRONG>ri</STRONG> (reverse index) string.
- The strings <STRONG>ind</STRONG> and <STRONG>ri</STRONG> are undefined when not on their
- respective corners of the screen.
- Parameterized versions of the scrolling sequences are <STRONG>indn</STRONG>
- and <STRONG>rin</STRONG> which have the same semantics as <STRONG>ind</STRONG> and <STRONG>ri</STRONG> except
- that they take one parameter, and scroll that many lines.
- They are also undefined except at the appropriate edge of
- the screen.
- The <STRONG>am</STRONG> 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 <STRONG>cuf1</STRONG> from the last column.
- The only local motion which is defined from the left edge
- is if <STRONG>bw</STRONG> is given, then a <STRONG>cub1</STRONG> from the left edge will
- move to the right edge of the previous row. If <STRONG>bw</STRONG> is not
- given, the effect is undefined. This is useful for draw-
- ing a box around the edge of the screen, for example. If
- the terminal has switch selectable automatic margins, the
- <EM>terminfo</EM> file usually assumes that this is on; i.e., <STRONG>am</STRONG>.
- If the terminal has a command which moves to the first
- column of the next line, that command can be given as <STRONG>nel</STRONG>
- (newline). It does not matter if the command clears the
- remainder of the current line, so if the terminal has no
- <STRONG>cr</STRONG> and <STRONG>lf</STRONG> it may still be possible to craft a working <STRONG>nel</STRONG>
- out of one or both of them.
- 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,
- <STRONG>Parameterized</STRONG> <STRONG>Strings</STRONG>
- Cursor addressing and other strings requiring parameters
- in the terminal are described by a parameterized string
- capability, with <STRONG><A HREF="printf.3.html">printf(3)</A></STRONG> like escapes <STRONG>%x</STRONG> in it. For
- example, to address the cursor, the <STRONG>cup</STRONG> 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 <STRONG>mrcup</STRONG>.
- The parameter mechanism uses a stack and special <STRONG>%</STRONG> 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 <STRONG>sgr</STRONG> string.
- The <STRONG>%</STRONG> encodings have the following meanings:
- %% outputs `%'
- %<EM>[[</EM>:<EM>]flags][width[.precision]][</EM>doxXs<EM>]</EM>
- as in <STRONG>printf</STRONG>, flags are [-+#] and space. Use a `:'
- to allow the next character to be a `-' flag, avoid-
- ing interpreting "%-" as an operator.
- %c print pop() like %c in <STRONG>printf</STRONG>
- %s print pop() like %s in <STRONG>printf</STRONG>
- %p[1-9]
- push <EM>i</EM>'th parameter
- %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
- The terms "static" and "dynamic" are misleading.
- Historically, these are simply two different sets of
- variables, whose values are not reset between calls
- to <STRONG>tparm</STRONG>. However, that fact is not documented in
- other implementations. Relying on it will adversely
- impact portability to other implementations.
- %'<EM>c</EM>' char constant <EM>c</EM>
- %{<EM>nn</EM>}
- integer constant <EM>nn</EM>
- %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)
- %? <EM>expr</EM> %t <EM>thenpart</EM> %e <EM>elsepart</EM> %;
- This forms an if-then-else. The %e <EM>elsepart</EM> is
- optional. Usually the %? <EM>expr</EM> part pushes a value
- onto the stack, and %t pops it from the stack, test-
- ing 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 <STRONG>-f</STRONG> option of <STRONG>tic</STRONG> or <STRONG>infocmp</STRONG> to see the struc-
- ture of if-the-else's. Some strings, e.g., <STRONG>sgr</STRONG> can
- be very complicated when written on one line. The <STRONG>-f</STRONG>
- 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 dig-
- its. Thus its <STRONG>cup</STRONG> capability is "cup=6\E&%p2%2dc%p1%2dY".
- The Microterm ACT-IV needs the current row and column sent
- preceded by a <STRONG>^T</STRONG>, 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 (<STRONG>cub1</STRONG>), and to
- move the cursor up one line on the screen (<STRONG>cuu1</STRONG>). This is
- necessary because it is not always safe to transmit <STRONG>\n</STRONG> <STRONG>^D</STRONG>
- and <STRONG>\r</STRONG>, 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 col-
- umn 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 charac-
- ter. Then the same is done for the second parameter.
- More complex arithmetic is possible using the stack.
- <STRONG>Cursor</STRONG> <STRONG>Motions</STRONG>
- If the terminal has a fast way to home the cursor (to very
- upper left corner of screen) then this can be given as
- <STRONG>home</STRONG>; similarly a fast way of getting to the lower left-
- hand corner can be given as <STRONG>ll</STRONG>; this may involve going up
- with <STRONG>cuu1</STRONG> from the home position, but a program should
- never do this itself (unless <STRONG>ll</STRONG> 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 <STRONG>home</STRONG>.)
- If the terminal has row or column absolute cursor address-
- ing, these can be given as single parameter capabilities
- <STRONG>hpa</STRONG> (horizontal position absolute) and <STRONG>vpa</STRONG> (vertical posi-
- tion absolute). Sometimes these are shorter than the more
- general two parameter sequence (as with the hp2645) and
- can be used in preference to <STRONG>cup</STRONG>. If there are
- parameterized local motions (e.g., move <EM>n</EM> spaces to the
- right) these can be given as <STRONG>cud</STRONG>, <STRONG>cub</STRONG>, <STRONG>cuf</STRONG>, and <STRONG>cuu</STRONG> with a
- single parameter indicating how many spaces to move.
- These are primarily useful if the terminal does not have
- <STRONG>cup</STRONG>, 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 <STRONG>smcup</STRONG> and <STRONG>rmcup</STRONG>. 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
- cursor 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 <STRONG>smcup</STRONG> sets
- the command character to be the one used by terminfo. If
- the <STRONG>smcup</STRONG> sequence will not restore the screen after an
- <STRONG>rmcup</STRONG> sequence is output (to the state prior to outputting
- <STRONG>rmcup</STRONG>), specify <STRONG>nrrmc</STRONG>.
- <STRONG>Area</STRONG> <STRONG>Clears</STRONG>
- 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 <STRONG>el</STRONG>. 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
- <STRONG>el1</STRONG>. If the terminal can clear from the current position
- to the end of the display, then this should be given as
- <STRONG>ed</STRONG>. <STRONG>Ed</STRONG> 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 <STRONG>ed</STRONG> is not available.)
- <STRONG>Insert/delete</STRONG> <STRONG>line</STRONG> <STRONG>and</STRONG> <STRONG>vertical</STRONG> <STRONG>motions</STRONG>
- If the terminal can open a new blank line before the line
- where the cursor is, this should be given as <STRONG>il1</STRONG>; 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 <STRONG>dl1</STRONG>; this is done only from the first
- position on the line to be deleted. Versions of <STRONG>il1</STRONG> and
- <STRONG>dl1</STRONG> which take a single parameter and insert or delete
- that many lines can be given as <STRONG>il</STRONG> and <STRONG>dl</STRONG>.
- If the terminal has a settable scrolling region (like the
- vt100) the command to set this can be described with the
- <STRONG>csr</STRONG> 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 <STRONG>csr</STRONG> on a properly chosen region; the <STRONG>sc</STRONG> and <STRONG>rc</STRONG> (save
- and restore cursor) commands may be useful for ensuring
- that your synthesized insert/delete string does not move
- the cursor. (Note that the <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> library does this
- synthesis automatically, so you need not compose
- insert/delete strings for an entry with <STRONG>csr</STRONG>).
- 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 <STRONG>ri</STRONG> or <STRONG>ind</STRONG> on many terminals without a
- true insert/delete line, and is often faster even on ter-
- minals with those features.
- The boolean <STRONG>non_dest_scroll_region</STRONG> 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 <STRONG>ri</STRONG> followed by <STRONG>dl1</STRONG> or <STRONG>ind</STRONG>. If the data
- scrolled off the bottom of the region by the <STRONG>ri</STRONG> re-
- appears, then scrolling is non-destructive. System V and
- XSI Curses expect that <STRONG>ind</STRONG>, <STRONG>ri</STRONG>, <STRONG>indn</STRONG>, and <STRONG>rin</STRONG> will simu-
- late destructive scrolling; their documentation cautions
- you not to define <STRONG>csr</STRONG> unless this is true. This <STRONG>curses</STRONG>
- implementation is more liberal and will do explicit erases
- after scrolling if <STRONG>ndstr</STRONG> 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 <STRONG>wind</STRONG>. 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
- <STRONG>da</STRONG> capability should be given; if display memory can be
- retained below, then <STRONG>db</STRONG> should be given. These indicate
- that deleting a line or scrolling may bring non-blank
- lines up from below or that scrolling back with <STRONG>ri</STRONG> may
- bring down non-blank lines.
- <STRONG>Insert/Delete</STRONG> <STRONG>Character</STRONG>
- There are two basic kinds of intelligent terminals with
- respect to insert/delete character which can be described
- using <EM>terminfo.</EM> 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
- determine 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 position 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 ter-
- minal 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 <STRONG>in</STRONG>, 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 ter-
- minals whose insert mode cannot be described with the sin-
- gle 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 <STRONG>smir</STRONG> the
- sequence to get into insert mode. Give as <STRONG>rmir</STRONG> the
- sequence to leave insert mode. Now give as <STRONG>ich1</STRONG> any
- sequence needed to be sent just before sending the
- character to be inserted. Most terminals with a true
- insert mode will not give <STRONG>ich1</STRONG>; terminals which send a
- sequence to open a screen position should give it here.
- If your terminal has both, insert mode is usually prefer-
- able to <STRONG>ich1</STRONG>. 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 <STRONG>ich</STRONG> sequences do not require previous smir,
- and most smir insert modes do not require <STRONG>ich1</STRONG> before each
- character. Therefore, the new <STRONG>curses</STRONG> actually assumes
- this is the case and uses either <STRONG>rmir</STRONG>/<STRONG>smir</STRONG> or <STRONG>ich</STRONG>/<STRONG>ich1</STRONG> 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 <STRONG>rmir</STRONG>/<STRONG>smir</STRONG> sequences in <STRONG>ich1</STRONG>.
- If post insert padding is needed, give this as a number of
- milliseconds in <STRONG>ip</STRONG> (a string option). Any other sequence
- which may need to be sent after an insert of a single
- character may also be given in <STRONG>ip</STRONG>. If your terminal needs
- both to be placed into an `insert mode' and a special code
- to precede each inserted character, then both <STRONG>smir</STRONG>/<STRONG>rmir</STRONG>
- and <STRONG>ich1</STRONG> can be given, and both will be used. The <STRONG>ich</STRONG>
- capability, with one parameter, <EM>n</EM>, will repeat the effects
- of <STRONG>ich1</STRONG> <EM>n</EM> times.
- If padding is necessary between characters typed while not
- in insert mode, give this as a number of milliseconds
- padding in <STRONG>rmp</STRONG>.
- 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 <STRONG>mir</STRONG> to speed up inserting in this case.
- Omitting <STRONG>mir</STRONG> will affect only speed. Some terminals
- (notably Datamedia's) must not have <STRONG>mir</STRONG> because of the way
- their insert mode works.
- Finally, you can specify <STRONG>dch1</STRONG> to delete a single charac-
- ter, <STRONG>dch</STRONG> with one parameter, <EM>n</EM>, to delete <EM>n</EM> <EM>characters,</EM>
- and delete mode by giving <STRONG>smdc</STRONG> and <STRONG>rmdc</STRONG> to enter and exit
- delete mode (any mode the terminal needs to be placed in
- for <STRONG>dch1</STRONG> to work).
- A command to erase <EM>n</EM> characters (equivalent to outputting
- <EM>n</EM> blanks without moving the cursor) can be given as <STRONG>ech</STRONG>
- with one parameter.
- <STRONG>Highlighting,</STRONG> <STRONG>Underlining,</STRONG> <STRONG>and</STRONG> <STRONG>Visible</STRONG> <STRONG>Bells</STRONG>
- If your terminal has one or more kinds of display
- attributes, these can be represented in a number of dif-
- ferent ways. You should choose one display form as <EM>stand-</EM>
- <EM>out</EM> <EM>mode</EM>, 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
- <STRONG>smso</STRONG> and <STRONG>rmso</STRONG>, 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 <STRONG>xmc</STRONG> should be given to tell how many spaces are left.
- Codes to begin underlining and end underlining can be
- given as <STRONG>smul</STRONG> and <STRONG>rmul</STRONG> 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 <STRONG>uc</STRONG>.
- Other capabilities to enter various highlighting modes
- include <STRONG>blink</STRONG> (blinking) <STRONG>bold</STRONG> (bold or extra bright) <STRONG>dim</STRONG>
- (dim or half-bright) <STRONG>invis</STRONG> (blanking or invisible text)
- <STRONG>prot</STRONG> (protected) <STRONG>rev</STRONG> (reverse video) <STRONG>sgr0</STRONG> (turn off <EM>all</EM>
- attribute modes) <STRONG>smacs</STRONG> (enter alternate character set
- mode) and <STRONG>rmacs</STRONG> (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 <STRONG>sgr</STRONG> (set attributes), tak-
- ing 9 parameters. Each parameter is either 0 or nonzero,
- as the corresponding attribute is on or off. The 9 param-
- eters are, in order: standout, underline, reverse, blink,
- dim, bold, blank, protect, alternate character set. Not
- all modes need be supported by <STRONG>sgr</STRONG>, only those for which
- corresponding separate attribute commands exist.
- For example, the DEC vt220 supports most of the modes:
- <STRONG>tparm</STRONG> <STRONG>parameter</STRONG> <STRONG>attribute</STRONG> <STRONG>escape</STRONG> <STRONG>sequence</STRONG>
- 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 era-
- sures. 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 exam-
- ple, ;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 depen-
- dencies yields
- <STRONG>sequence</STRONG> <STRONG>when</STRONG> <STRONG>to</STRONG> <STRONG>output</STRONG> <STRONG>terminfo</STRONG> <STRONG>translation</STRONG>
- \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. 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 (<STRONG>xmc</STRONG>) 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
- <STRONG>msgr</STRONG> capability, asserting that it is safe to move in
- standout mode, is present.
- If the terminal has a way of flashing the screen to indi-
- cate an error quietly (a bell replacement) then this can
- be given as <STRONG>flash</STRONG>; 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 <STRONG>cvvis</STRONG>. If there
- is a way to make the cursor completely invisible, give
- that as <STRONG>civis</STRONG>. The capability <STRONG>cnorm</STRONG> 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 <STRONG>ul</STRONG>. If a
- character overstriking another leaves both characters on
- the screen, specify the capability <STRONG>os</STRONG>. If overstrikes are
- erasable with a blank, then this should be indicated by
- giving <STRONG>eo</STRONG>.
- <STRONG>Keypad</STRONG> <STRONG>and</STRONG> <STRONG>Function</STRONG> <STRONG>Keys</STRONG>
- 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 key-
- pad 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 <STRONG>smkx</STRONG> and
- <STRONG>rmkx</STRONG>. 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 <STRONG>kcub1,</STRONG> <STRONG>kcuf1,</STRONG>
- <STRONG>kcuu1,</STRONG> <STRONG>kcud1,</STRONG> and <STRONG>khome</STRONG> respectively. If there are func-
- tion keys such as f0, f1, ..., f10, the codes they send
- can be given as <STRONG>kf0,</STRONG> <STRONG>kf1,</STRONG> <STRONG>...,</STRONG> <STRONG>kf10</STRONG>. If these keys have
- labels other than the default f0 through f10, the labels
- can be given as <STRONG>lf0,</STRONG> <STRONG>lf1,</STRONG> <STRONG>...,</STRONG> <STRONG>lf10</STRONG>. The codes
- transmitted by certain other special keys can be given:
- <STRONG>kll</STRONG> (home down), <STRONG>kbs</STRONG> (backspace), <STRONG>ktbc</STRONG> (clear all tabs),
- <STRONG>kctab</STRONG> (clear the tab stop in this column), <STRONG>kclr</STRONG> (clear
- screen or erase key), <STRONG>kdch1</STRONG> (delete character), <STRONG>kdl1</STRONG>
- (delete line), <STRONG>krmir</STRONG> (exit insert mode), <STRONG>kel</STRONG> (clear to end
- of line), <STRONG>ked</STRONG> (clear to end of screen), <STRONG>kich1</STRONG> (insert
- character or enter insert mode), <STRONG>kil1</STRONG> (insert line), <STRONG>knp</STRONG>
- (next page), <STRONG>kpp</STRONG> (previous page), <STRONG>kind</STRONG> (scroll for-
- ward/down), <STRONG>kri</STRONG> (scroll backward/up), <STRONG>khts</STRONG> (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 <STRONG>ka1</STRONG>, <STRONG>ka3</STRONG>, <STRONG>kb2</STRONG>, <STRONG>kc1</STRONG>, and <STRONG>kc3</STRONG>.
- These keys are useful when the effects of a 3 by 3 direc-
- tional pad are needed.
- Strings to program function keys can be given as <STRONG>pfkey</STRONG>,
- <STRONG>pfloc</STRONG>, and <STRONG>pfx</STRONG>. A string to program screen labels should
- be specified as <STRONG>pln</STRONG>. 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 num-
- bers out of this range may program undefined keys in a
- terminal dependent manner. The difference between the
- capabilities is that <STRONG>pfkey</STRONG> causes pressing the given key
- to be the same as the user typing the given string; <STRONG>pfloc</STRONG>
- causes the string to be executed by the terminal in local;
- and <STRONG>pfx</STRONG> causes the string to be transmitted to the com-
- puter.
- The capabilities <STRONG>nlab</STRONG>, <STRONG>lw</STRONG> and <STRONG>lh</STRONG> 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 <STRONG>smln</STRONG> and <STRONG>rmln</STRONG>. <STRONG>smln</STRONG> is normally output after one
- or more pln sequences to make sure that the change becomes
- visible.
- <STRONG>Tabs</STRONG> <STRONG>and</STRONG> <STRONG>Initialization</STRONG>
- If the terminal has hardware tabs, the command to advance
- to the next tab stop can be given as <STRONG>ht</STRONG> (usually control
- I). A ``back-tab'' command which moves leftward to the
- preceding tab stop can be given as <STRONG>cbt</STRONG>. By convention, if
- the teletype modes indicate that tabs are being expanded
- by the computer rather than being sent to the terminal,
- programs should not use <STRONG>ht</STRONG> or <STRONG>cbt</STRONG> even if they are
- present, since the user may not have the tab stops prop-
- erly set. If the terminal has hardware tabs which are
- initially set every <EM>n</EM> spaces when the terminal is powered
- up, the numeric parameter <STRONG>it</STRONG> is given, showing the number
- of spaces the tabs are set to. This is normally used by
- the <EM>tset</EM> 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 <STRONG>is1</STRONG>, <STRONG>is2</STRONG>, and <STRONG>is3</STRONG>, initializa-
- tion strings for the terminal, <STRONG>iprog</STRONG>, the path name of a
- program to be run to initialize the terminal, and <STRONG>if</STRONG>, 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 <EM>init</EM> option
- of the <EM>tput</EM> program, each time the user logs in. They
- will be printed in the following order:
- run the program
- <STRONG>iprog</STRONG>
- output <STRONG>is1</STRONG> <STRONG>is2</STRONG>
- set the margins using
- <STRONG>mgc</STRONG>, <STRONG>smgl</STRONG> and <STRONG>smgr</STRONG>
- set tabs using
- <STRONG>tbc</STRONG> and <STRONG>hts</STRONG>
- print the file
- <STRONG>if</STRONG>
- and finally
- output <STRONG>is3</STRONG>.
- Most initialization is done with <STRONG>is2</STRONG>. Special terminal
- modes can be set up without duplicating strings by putting
- the common sequences in <STRONG>is2</STRONG> and special cases in <STRONG>is1</STRONG> and
- <STRONG>is3</STRONG>.
- A set of sequences that does a harder reset from a totally
- unknown state can be given as <STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>, <STRONG>rf</STRONG> and <STRONG>rs3</STRONG>, analo-
- gous to <STRONG>is1</STRONG> <STRONG>,</STRONG> <STRONG>is2</STRONG> <STRONG>,</STRONG> <STRONG>if</STRONG> and <STRONG>is3</STRONG> respectively. These
- strings are output by the <EM>reset</EM> program, which is used
- when the terminal gets into a wedged state. Commands are
- normally placed in <STRONG>rs1</STRONG>, <STRONG>rs2</STRONG> <STRONG>rs3</STRONG> and <STRONG>rf</STRONG> only if they pro-
- duce 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 <STRONG>is2</STRONG>,
- but it causes an annoying glitch of the screen and is not
- normally needed since the terminal is usually already in
- 80 column mode.
- The <EM>reset</EM> program writes strings including <STRONG>iprog</STRONG>, etc., in
- the same order as the <EM>init</EM> program, using <STRONG>rs1</STRONG>, etc.,
- instead of <STRONG>is1</STRONG>, etc. If any of <STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>, <STRONG>rs3</STRONG>, or <STRONG>rf</STRONG> reset
- capability strings are missing, the <EM>reset</EM> program falls
- back upon the corresponding initialization capability
- string.
- If there are commands to set and clear tab stops, they can
- be given as <STRONG>tbc</STRONG> (clear all tab stops) and <STRONG>hts</STRONG> (set a tab
- stop in the current column of every row). If a more com-
- plex sequence is needed to set the tabs than can be
- described by this, the sequence can be placed in <STRONG>is2</STRONG> or
- <STRONG>if</STRONG>.
- <STRONG>Delays</STRONG> <STRONG>and</STRONG> <STRONG>Padding</STRONG>
- 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
- VT100s). These may require padding characters after cer-
- tain 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 <STRONG>xon</STRONG>. 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 deci-
- sions about relative costs, but actual pad characters will
- not be transmitted.
- If <STRONG>pb</STRONG> (padding baud rate) is given, padding is suppressed
- at baud rates below the value of <STRONG>pb</STRONG>. If the entry has no
- padding baud rate, then whether padding is emitted or not
- is completely controlled by <STRONG>xon</STRONG>.
- If the terminal requires other than a null (zero) charac-
- ter as a pad, then this can be given as <STRONG>pad</STRONG>. Only the
- first character of the <STRONG>pad</STRONG> string is used.
- <STRONG>Status</STRONG> <STRONG>Lines</STRONG>
- Some terminals have an extra `status line' which is not
- normally used by software (and thus not counted in the
- terminal's <STRONG>lines</STRONG> 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 indi-
- cated by the <STRONG>hs</STRONG> capability.
- Some terminals with status lines need special sequences to
- access the status line. These may be expressed as a
- string with single parameter <STRONG>tsl</STRONG> which takes the cursor to
- a given zero-origin column on the status line. The capa-
- bility <STRONG>fsl</STRONG> must return to the main-screen cursor positions
- before the last <STRONG>tsl</STRONG>. You may need to embed the string
- values of <STRONG>sc</STRONG> (save cursor) and <STRONG>rc</STRONG> (restore cursor) in <STRONG>tsl</STRONG>
- and <STRONG>fsl</STRONG> 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 numeric capability <STRONG>wsl</STRONG>.
- A command to erase or blank the status line may be speci-
- fied as <STRONG>dsl</STRONG>.
- The boolean capability <STRONG>eslok</STRONG> specifies that escape
- sequences, tabs, etc., work ordinarily in the status line.
- The <STRONG>ncurses</STRONG> implementation does not yet use any of these
- capabilities. They are documented here in case they ever
- become important.
- <STRONG>Line</STRONG> <STRONG>Graphics</STRONG>
- Many terminals have alternate character sets useful for
- forms-drawing. Terminfo and <STRONG>curses</STRONG> build in support for
- the drawing characters supported by the VT100, with some
- characters from the AT&T 4410v1 added. This alternate
- character set may be specified by the <STRONG>acsc</STRONG> capability.
- <STRONG>Glyph</STRONG> <STRONG>ACS</STRONG> <STRONG>Ascii</STRONG> <STRONG>VT100</STRONG>
- <STRONG>Name</STRONG> <STRONG>Name</STRONG> <STRONG>Default</STRONG> <STRONG>Name</STRONG>
- 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
- <STRONG>smacs</STRONG>/<STRONG>rmacs</STRONG> switches) will be rendered as the correspond-
- ing graphic. Then read off the VT100/your terminal char-
- acter pairs right to left in sequence; these become the
- ACSC string.
- <STRONG>Color</STRONG> <STRONG>Handling</STRONG>
- 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
- foreground 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 <STRONG>colors</STRONG> and <STRONG>pairs</STRONG> specify
- the maximum numbers of colors and color-pairs that can be
- displayed simultaneously. The <STRONG>op</STRONG> (original pair) string
- resets foreground and background colors to their default
- values for the terminal. The <STRONG>oc</STRONG> 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 <STRONG>bce</STRONG>.
- To change the current foreground or background color on a
- Tektronix-type terminal, use <STRONG>setaf</STRONG> (set ANSI foreground)
- and <STRONG>setab</STRONG> (set ANSI background) or <STRONG>setf</STRONG> (set foreground)
- and <STRONG>setb</STRONG> (set background). These take one parameter, the
- color number. The SVr4 documentation describes only
- <STRONG>setaf</STRONG>/<STRONG>setab</STRONG>; the XPG4 draft says that "If the terminal
- supports ANSI escape sequences to set background and fore-
- ground, they should be coded as <STRONG>setaf</STRONG> and <STRONG>setab</STRONG>, respec-
- tively. If the terminal supports other escape sequences
- to set background and foreground, they should be coded as
- <STRONG>setf</STRONG> and <STRONG>setb</STRONG>, respectively. The <EM>vidputs()</EM> function and
- the refresh functions use <STRONG>setaf</STRONG> and <STRONG>setab</STRONG> if they are
- defined."
- The <STRONG>setaf</STRONG>/<STRONG>setab</STRONG> and <STRONG>setf</STRONG>/<STRONG>setb</STRONG> capabilities take a single
- numeric argument each. Argument values 0-7 of <STRONG>setaf</STRONG>/<STRONG>setab</STRONG>
- are portably defined as follows (the middle column is the
- symbolic #define available in the header for the <STRONG>curses</STRONG> or
- <STRONG>ncurses</STRONG> libraries). The terminal hardware is free to map
- these as it likes, but the RGB values indicate normal
- locations in color space.
- <STRONG>Color</STRONG> <STRONG>#define</STRONG> <STRONG>Value</STRONG> <STRONG>RGB</STRONG>
- black <STRONG>COLOR_BLACK</STRONG> 0 0, 0, 0
- red <STRONG>COLOR_RED</STRONG> 1 max,0,0
- green <STRONG>COLOR_GREEN</STRONG> 2 0,max,0
- yellow <STRONG>COLOR_YELLOW</STRONG> 3 max,max,0
- blue <STRONG>COLOR_BLUE</STRONG> 4 0,0,max
- magenta <STRONG>COLOR_MAGENTA</STRONG> 5 max,0,max
- cyan <STRONG>COLOR_CYAN</STRONG> 6 0,max,max
- white <STRONG>COLOR_WHITE</STRONG> 7 max,max,max
- The argument values of <STRONG>setf</STRONG>/<STRONG>setb</STRONG> historically correspond
- to a different mapping, i.e.,
- <STRONG>Color</STRONG> <STRONG>#define</STRONG> <STRONG>Value</STRONG> <STRONG>RGB</STRONG>
- black <STRONG>COLOR_BLACK</STRONG> 0 0, 0, 0
- blue <STRONG>COLOR_BLUE</STRONG> 1 0,0,max
- green <STRONG>COLOR_GREEN</STRONG> 2 0,max,0
- cyan <STRONG>COLOR_CYAN</STRONG> 3 0,max,max
- red <STRONG>COLOR_RED</STRONG> 4 max,0,0
- magenta <STRONG>COLOR_MAGENTA</STRONG> 5 max,0,max
- yellow <STRONG>COLOR_YELLOW</STRONG> 6 max,max,0
- white <STRONG>COLOR_WHITE</STRONG> 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 <STRONG>scp</STRONG> with a color-pair number
- parameter to set which color pair is current.
- On a Tektronix-like terminal, the capability <STRONG>ccc</STRONG> may be
- present to indicate that colors can be modified. If so,
- the <STRONG>initc</STRONG> capability will take a color number (0 to <STRONG>colors</STRONG>
- - 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 <STRONG>hls</STRONG>
- is present, they are instead as HLS (Hue, Lightness, Satu-
- ration) indices. The ranges are terminal-dependent.
- On an HP-like terminal, <STRONG>initp</STRONG> may give a capability for
- changing a color-pair value. It will take seven parame-
- ters; a color-pair number (0 to <STRONG>max_pairs</STRONG> - 1), and two
- triples describing first background and then foreground
- colors. These parameters must be (Red, Green, Blue) or
- (Hue, Lightness, Saturation) depending on <STRONG>hls</STRONG>.
- On some color terminals, colors collide with highlights.
- You can register these collisions with the <STRONG>ncv</STRONG> capability.
- This is a bit-mask of attributes not to be used when col-
- ors are enabled. The correspondence with the attributes
- understood by <STRONG>curses</STRONG> is as follows:
- <STRONG>Attribute</STRONG> <STRONG>Bit</STRONG> <STRONG>Decimal</STRONG>
- 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 <STRONG>ncv</STRONG>
- capability of 2.
- SVr4 curses does nothing with <STRONG>ncv</STRONG>, ncurses recognizes it
- and optimizes the output in favor of colors.
- <STRONG>Miscellaneous</STRONG>
- If the terminal requires other than a null (zero) charac-
- ter as a pad, then this can be given as pad. Only the
- first character of the pad string is used. If the termi-
- nal does not have a pad character, specify npc. Note that
- ncurses implements the termcap-compatible <STRONG>PC</STRONG> variable;
- though the application may set this value to something
- other than a null, ncurses will test <STRONG>npc</STRONG> 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 <STRONG>hu</STRONG> (half-line up) and <STRONG>hd</STRONG> (half-line
- down). This is primarily useful for superscripts and sub-
- scripts on hard-copy terminals. If a hard-copy terminal
- can eject to the next page (form feed), give this as <STRONG>ff</STRONG>
- (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
- parameterized string <STRONG>rep</STRONG>. 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 <STRONG>cmdch</STRONG>. A
- prototype command character is chosen which is used in all
- capabilities. This character is given in the <STRONG>cmdch</STRONG> capa-
- bility to identify it. The following convention is sup-
- ported on some UNIX systems: The environment is to be
- searched for a <STRONG>CC</STRONG> 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 <EM>switch</EM>, <EM>dialup</EM>, <EM>patch</EM>, and
- <EM>network</EM>, should include the <STRONG>gn</STRONG> (generic) capability so
- that programs can complain that they do not know how to
- talk to the terminal. (This capability does not apply to
- <EM>virtual</EM> 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 <STRONG>km</STRONG>. 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 <STRONG>smm</STRONG> and <STRONG>rmm</STRONG>.
- 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 <STRONG>lm</STRONG>. A value of <STRONG>lm</STRONG>#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 vir-
- tual terminal protocol, the terminal number can be given
- as <STRONG>vt</STRONG>.
- Media copy strings which control an auxiliary printer con-
- nected to the terminal can be given as <STRONG>mc0</STRONG>: print the con-
- tents of the screen, <STRONG>mc4</STRONG>: turn off the printer, and <STRONG>mc5</STRONG>:
- 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 termi-
- nal screen when the printer is on. A variation <STRONG>mc5p</STRONG> takes
- one parameter, and leaves the printer on for as many char-
- acters as the value of the parameter, then turns the
- printer off. The parameter should not exceed 255. All
- text, including <STRONG>mc4</STRONG>, is transparently passed to the
- printer while an <STRONG>mc5p</STRONG> is in effect.
- <STRONG>Glitches</STRONG> <STRONG>and</STRONG> <STRONG>Braindamage</STRONG>
- Hazeltine terminals, which do not allow `~' characters to
- be displayed should indicate <STRONG>hz</STRONG>.
- Terminals which ignore a line-feed immediately after an <STRONG>am</STRONG>
- wrap, such as the Concept and vt100, should indicate <STRONG>xenl</STRONG>.
- If <STRONG>el</STRONG> is required to get rid of standout (instead of
- merely writing normal text on top of it), <STRONG>xhp</STRONG> should be
- given.
- Teleray terminals, where tabs turn all characters moved
- over to blanks, should indicate <STRONG>xt</STRONG> (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 neces-
- sary to use delete and insert line. The ncurses implemen-
- tation ignores this glitch.
- The Beehive Superbee, which is unable to correctly trans-
- mit the escape or control C characters, has <STRONG>xsb</STRONG>, indicat-
- ing 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 <STRONG>x</STRONG><EM>x</EM>.
- <STRONG>Similar</STRONG> <STRONG>Terminals</STRONG>
- 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 vari-
- ant, the string capability <STRONG>use</STRONG> can be given with the name
- of the base terminal. The capabilities given before <STRONG>use</STRONG>
- override those in the base type named by <STRONG>use</STRONG>. If there
- are multiple <STRONG>use</STRONG> capabilities, they are merged in reverse
- order. That is, the rightmost <STRONG>use</STRONG> reference is processed
- first, then the one to its left, and so forth. Capabili-
- ties given explicitly in the entry override those brought
- in by <STRONG>use</STRONG> references.
- A capability can be canceled by placing <STRONG>xx@</STRONG> to the left of
- the use reference that imports it, where <EM>xx</EM> is the capa-
- bility. For example, the entry
- 2621-nl, smkx@, rmkx@, use=2621,
- defines a 2621-nl that does not have the <STRONG>smkx</STRONG> or <STRONG>rmkx</STRONG>
- 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.
- <STRONG>Pitfalls</STRONG> <STRONG>of</STRONG> <STRONG>Long</STRONG> <STRONG>Entries</STRONG>
- Long terminfo entries are unlikely to be a problem; to
- date, no entry has even approached terminfo's 4096-byte
- string-table maximum. Unfortunately, the termcap transla-
- tions 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 <STRONG>tgetent()</STRONG>
- instruct the user to allocate a 1024-byte 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 <STRONG>tgetent()</STRONG>
- 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
- application 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 par-
- ticular terminal. This is the length of the entry as it
- exists in /etc/termcap, minus the backslash-newline pairs,
- which <STRONG>tgetent()</STRONG> 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 is the entry it
- wants,
- * and <STRONG>tgetent()</STRONG> 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 <STRONG>tgetent()</STRONG> has to search the whole
- termcap file).
- Then <STRONG>tgetent()</STRONG> 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 <STRONG>tgetent()</STRONG> only does "tc" expan-
- sion once it is 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 is too long even before "tc" expansion,
- it will have this effect even for users of some other ter-
- minal types and users whose TERM variable does not have a
- termcap entry.
- When in -C (translate to termcap) mode, the <STRONG>ncurses</STRONG> imple-
- mentation of <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG> 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.
- <STRONG>Binary</STRONG> <STRONG>Compatibility</STRONG>
- 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.
- </PRE>
- <H2>EXTENSIONS</H2><PRE>
- Some SVr4 <STRONG>curses</STRONG> implementations, and all previous to
- SVr4, do not interpret the %A and %O operators in parame-
- ter strings.
- SVr4/XPG4 do not specify whether <STRONG>msgr</STRONG> 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 <STRONG>ncurses</STRONG> implementation
- ignores <STRONG>msgr</STRONG> in <STRONG>ALTCHARSET</STRONG> mode. This raises the possi-
- bility that an XPG4 implementation making the opposite
- interpretation may need terminfo entries made for <STRONG>ncurses</STRONG>
- to have <STRONG>msgr</STRONG> turned off.
- The <STRONG>ncurses</STRONG> library handles insert-character and insert-
- character modes in a slightly non-standard way to get bet-
- ter update efficiency. See the <STRONG>Insert/Delete</STRONG> <STRONG>Character</STRONG>
- subsection above.
- The parameter substitutions for <STRONG>set_clock</STRONG> and <STRONG>dis-</STRONG>
- <STRONG>play_clock</STRONG> 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 <STRONG>kmous</STRONG> capability. The <STRONG>ncurses</STRONG>
- wants to interpret it as <STRONG>KEY_MOUSE</STRONG>, 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 extension sets. Here is a summary, accu-
- rate as of October 1995:
- <STRONG>SVR4,</STRONG> <STRONG>Solaris,</STRONG> <STRONG>ncurses</STRONG> -- These support all SVr4 capabili-
- ties.
- <STRONG>SGI</STRONG> -- Supports the SVr4 set, adds one undocumented
- extended string capability (<STRONG>set_pglen</STRONG>).
- <STRONG>SVr1,</STRONG> <STRONG>Ultrix</STRONG> -- These support a restricted subset of ter-
- minfo capabilities. The booleans end with <STRONG>xon_xoff</STRONG>; the
- numerics with <STRONG>width_status_line</STRONG>; and the strings with
- <STRONG>prtr_non</STRONG>.
- <STRONG>HP/UX</STRONG> -- Supports the SVr1 subset, plus the SVr[234]
- numerics <STRONG>num_labels</STRONG>, <STRONG>label_height</STRONG>, <STRONG>label_width</STRONG>, plus func-
- tion keys 11 through 63, plus <STRONG>plab_norm</STRONG>, <STRONG>label_on</STRONG>, and
- <STRONG>label_off</STRONG>, plus some incompatible extensions in the string
- table.
- <STRONG>AIX</STRONG> -- Supports the SVr1 subset, plus function keys 11
- through 63, plus a number of incompatible string table
- extensions.
- <STRONG>OSF</STRONG> -- Supports both the SVr4 set and the AIX extensions.
- </PRE>
- <H2>FILES</H2><PRE>
- /usr/share/terminfo/?/* files containing terminal
- descriptions
- </PRE>
- <H2>SEE ALSO</H2><PRE>
- <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="printf.3.html">printf(3)</A></STRONG>, <STRONG><A HREF="term.5.html">term(5)</A></STRONG>.
- </PRE>
- <H2>AUTHORS</H2><PRE>
- Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey.
- Based on pcurses by Pavel Curtis.
- <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
- </PRE>
- <HR>
- <ADDRESS>
- Man(1) output converted with
- <a href="http://www.oac.uci.edu/indiv/ehood/man2html.html">man2html</a>
- </ADDRESS>
- </BODY>
- </HTML>
|