diff options
Diffstat (limited to 'lib/libncurses/terminfo.5')
-rw-r--r-- | lib/libncurses/terminfo.5 | 1656 |
1 files changed, 1656 insertions, 0 deletions
diff --git a/lib/libncurses/terminfo.5 b/lib/libncurses/terminfo.5 new file mode 100644 index 0000000..8c774f8 --- /dev/null +++ b/lib/libncurses/terminfo.5 @@ -0,0 +1,1656 @@ +.\" Note: this must be run through tbl befor nroff +.TH TERMINFO 5 +.ds n 5 +.ds d /usr/lib/terminfo +.SH NAME +terminfo \- terminal capability data base +.SH SYNOPSIS +\*d/*/* +.SH DESCRIPTION +.I Terminfo +is a data base describing terminals, used by screen-oriented programs such as +.IR vi (1), +.IR rogue (1) +and +.IR ncurses (3X). +.I Terminfo +describes terminals by giving a set of capabilities which they +have, by specifying how to perform screen operations, and by +specifying padding requirements and initialization sequences. +.PP +Entries in +.I terminfo +consist of a number of `,' separated fields. +White space after each `,' 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. +.PP +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 chosen, thus ``hp2621''. +This name should not contain hyphens, except that synonyms may +be chosen that do not conflict with other names. +Modes that the hardware can be in, or user preferences, should +be indicated by appending a hyphen and an indicator of the mode. +Thus, a vt100 in 132 column mode would be vt100-w. +The following suffixes should be used where possible: +.TS +center; +l c l +l l l. +\fBSuffix Meaning Example\fP +-w Wide mode (more than 80 columns) vt100-w +-am With auto. margins (usually default) vt100-am +-nam Without automatic margins vt100-nam +-\fIn\fP Number of lines on the screen aaa-60 +-na No arrow keys (leave them in local) c100-na +-\fIn\fPp Number of pages of memory c100-4p +-rv Reverse video c100-rv +.TE +.SH CAPABILITIES +The variable is the name by which the programmer (at the terminfo level) +accesses the capability. +The capname is the short name used in the text of the database, +and is used by a person updating the database. +The i.code is the two letter internal code used in the compiled database, +and always corresponds to the old +.B termcap +capability name. +.P +Capability names have no hard length limit, but an informal limit of 5 +characters has been adopted to keep them short and to allow the tabs in +the source file +.B caps +to line up nicely. +Whenever possible, names are chosen to be the same as or similar to +the ANSI X3.64-1979 standard. Semantics are also intended to match +those of the specification. +.TP +(P) +indicates that padding may be specified +.TP +(G) +indicates that the string is passed through tparm with +parms as given (#\fIi\fP). +.TP +(*) +indicates that padding may be based on the number of +lines affected +.TP +(#\d\fIi\fP\u) +indicates the \fIi\fP\uth\d parameter. + +.TS +center; +c c c c +c c c c +l l l l. +\fBVariable Cap- I. Description\fR +\f3Booleans name Code\fR +\s-1auto_left_margin, bw bw cub1 wraps from column 0 to last + column\s+1 +\s-1auto_right_margin, am am Terminal has automatic margins\s+1 +\s-1back_color_erase, bce ut screen erased with background color\s+1 +\s-1can_change, ccc cc terminal can re-define exiting colors\s+1 +\s-1ceol_standout_glitch, xhp xs Standout not erased by overwriting + (hp)\s+1 +\s-1col_addr_glitch, xhpa YA only positive motion for hpa/mhpa caps\s+1 +\s-1cpi_changes_res, cpix YF changing character pitch changes resolution\s+1 +\s-1cr_cancels_micro_mode, crxm YB using cr turns off micro mode\s+1 +\s-1eat_newline_glitch, xenl xn newline ignored after 80 cols + (Concept)\s+1 +\s-1erase_overstrike, eo eo Can erase overstrikes with a blank\s+1 +\s-1generic_type, gn gn Generic line type (e.g.,, dialup, + switch).\s+1 +\s-1hard_copy, hc hc Hardcopy terminal\s+1 +\s-1hard_cursor, chts HC cursor is hard to see\s+1 +\s-1has_meta_key, km km Has a meta key (shift, sets parity + bit)\s+1 +\s-1has_print_wheel, daisy YC printer needs operator to change character set\s+1 +\s-1has_status_line, hs hs Has extra "status line"\s+1 +\s-1hue_lightness_saturation, hls hl terminal uses only HLS color notation (tektronix)\s+1 +\s-1insert_null_glitch, in in Insert mode distinguishes nulls\s+1 +\s-1lpi_changes_res, lpix YG chnaging line pitch changes resolution\s+1 +\s-1memory_above, da da Display may be retained above the + screen\s+1 +\s-1memory_below, db db Display may be retained below the + screen\s+1 +\s-1move_insert_mode, mir mi Safe to move while in insert mode\s+1 +\s-1move_standout_mode, msgr ms Safe to move in standout modes\s+1 +\s-1needs_xon_xoff, nxon nx padding won't work, xon/xoff required\s+1 +\s-1no_esc_ctl_c, xsb xb Beehive (f1=escape, f2=ctrl C)\s+1 +\s-1non_rev_rmcup, nrrmc NR smcup does not revrse rmcup\s+1 +\s-1no_pad_char, npc NP pad character does not exist\s+1 +\s-1non_dest_scroll_region, ndscr ND scrolling region is non-destructive\s+1 +\s-1over_strike, os os Terminal overstrikes\s+1 +\s-1prtr_silent, mc5i 5i printer won't echo on screen\s+1 +\s-1row_addr_glitch, xvpa YD only posistive motion for vhp/mvpa caps\s+1 +\s-1semi_auto_right_margin, sam YE printing in last column causes cr\s+1 +\s-1status_line_esc_ok, eslok es Escape can be used on the status line\s+1 +\s-1dest_tabs_magic_smso, xt xt Tabs ruin, magic so char (Teleray + 1061)\s+1 +\s-1tilde_glitch, hz hz Hazeltine; can not print ~'s\s+1 +\s-1transparent_underline, ul ul underline character overstrikes\s+1 +\s-1xon_xoff, xon xo Terminal uses xon/xoff handshaking\s+1 + +\s-1\f3Numbers:\fR\s+1 +\s-1bit_image_entwining, bitwin Yo Undocumented in SVr4.0\s+1 +\s-1buffer_capacity, bufsz Ya numbers of bytes buffered before printing\s+1 +\s-1columns, cols co Number of columns in a line\s+1 +\s-1dot_vert_spacing, spinv Yb spacing of dots horizontally in dots per inch\s+1 +\s-1dot_horz_spacing, spinh Yc spacing of pins vertically in pins per inch\s+1 +\s-1init_tabs, it it Tabs initially every # spaces\s+1 +\s-1label_height, lh lh rows in each label\s+1 +\s-1label_width, lw lw columns in each label\s+1 +\s-1lines, lines li Number of lines on screen or page\s+1 +\s-1lines_of_memory, lm lm Lines of memory if > lines. 0 means varies\s+1 +\s-1magic_cookie_glitch, xmc sg Number of blank chars left by smso or rmso\s+1 +\s-1max_colors, colors Co maximum numbers of colors on screen\s+1 +\s-1max_micro_address, maddr Yd maximum value in micro_..._address\s+1 +\s-1max_micro_jump, mjump Ye maximum value in parm_..._micro\s+1 +\s-1max_pairs, pairs pa maximum number of color-pairs on the screen\s+1 +\s-1micro_col_size, mcs Yf Character step size when in micro mode\s+1 +\s-1micro_line_size, mls Yg Line step size when in micro mode\s+1 +\s-1no_color_video, ncv NC video attributes that can't be used with colors\s+1 +\s-1number_of_pins, npins Yh numbers of pins in print-head\s+1 +\s-1num_labels, nlab Nl number of lables on screen\s+1 +\s-1output_res_char, orc Yi horizontal resolution in units per line\s+1 +\s-1output_res_line, orl Yj vertical resolution in units per line\s+1 +\s-1output_res_horz_inch, orhi Yk horizontal resolution in units per inch\s+1 +\s-1output_res_vert_inch, orvi Yl vertical resolution in units per inch\s+1 +\s-1padding_baud_rate, pb pb Lowest baud where cr/nl padding is needed\s+1 +\s-1virtual_terminal, vt vt Virtual terminal number (\s-1UNIX\s+1 system)\s+1 +\s-1width_status_line, wsl ws No. columns in status line\s+1 +.TE + +(The following numeric capabilities are present in the SVr4.0 term structure, +but are not yet documented in the man page. Comments are from the term +structure header.) + +.TS +center; +c c c c +c c c c +l l l l. +\s-1bit_image_type, bitype Yp Type of bit-image device\s+1 +\s-1buttons, btns BT Number of mouse buttons\s+1 +\s-1max_attributes, ma ma Max combined attributes terminal can handle\s+1 +\s-1maximum_windows, wnum MW Max number of defineable windows\s+1 +\s-1print_rate, cps Ym Print rate in chars per second\s+1 +\s-1wide_char_size, widcs Yn Char step size in double wide mode\s+1 + +\s-1\f3Strings:\fR\s+1 +\s-1acs_chars, acsc ac Graphics charset pairs - def=vt100\s+1 +\s-1alt_scancode_esc, scesa S8 Alternate esc for scancode emulation (default is vt100)\s+1 +\s-1back_tab, cbt bt Back tab (P)\s+1 +\s-1bell, bel bl Audible signal (bell) (P)\s+1 +\s-1bit_image_repeat, birep Xy Repeat bit image cell #1 #2 times (use tparm)\s+1 +\s-1bit_image_newline, binel Zz Move to next row of the bit image (use tparm)\s+1 +\s-1bit_image_carriage_return, bicr Yv Move to beginning of same row (use tparm)\s+1 +\s-1carriage_return, cr cr Carriage return (P*)\s+1 +\s-1change_char_pitch, cpi ZA Change # chars per inch\s+1 +\s-1change_line_pitch, lpi ZB Change # lines per inch\s+1 +\s-1change_res_horz, chr ZC Change horizontal resolution\s+1 +\s-1change_res_vert, cvr ZD Change vertical resolution\s+1 +\s-1change_scroll_region, csr cs Change to lines #1 through #2 (vt100) (PG)\s+1 +\s-1char_padding, rmp rP Like ip but when in insert mode\s+1 +\s-1char_set_names, csnm Zy List of character set names\s+1 +\s-1clear_all_tabs, tbc ct Clear all tab stops (P)\s+1 +\s-1clear_margins, mgc MC Clear all margins (top, bottom, and sides)\s+1 +\s-1clear_screen, clear cl Clear screen and home cursor (P*)\s+1 +\s-1clr_bol. el1 cb Clear to beginning of line\s+1 +\s-1clr_eol, el ce Clear to end of line (P)\s+1 +\s-1clr_eos, ed cd Clear to end of display (P*)\s+1 +\s-1code_set_init, csin ci Init sequence for multiple code sets\s+1 +\s-1color_names, colornm Yw Give name for color #1\s+1 +\s-1column_address, hpa ch Set cursor column (PG)\s+1 +\s-1command_character, cmdch CC Term. settable cmd char in prototype\s+1 +\s-1cursor_address, cup cm Screen rel. cursor motion row #1 + col #2 (PG)\s+1 +\s-1cursor_down, cud1 do Down one line\s+1 +\s-1cursor_home, home ho Home cursor (if no cup)\s+1 +\s-1cursor_invisible, civis vi Make cursor invisible\s+1 +\s-1cursor_left, cub1 le Move cursor left one space\s+1 +\s-1cursor_mem_address, mrcup CM Memory relative cursor addressing\s+1 +\s-1cursor_normal, cnorm ve Make cursor appear normal (undo vs/vi)\s+1 +\s-1cursor_right, cuf1 nd Non-destructive space (cursor right)\s+1 +\s-1cursor_to_ll, ll ll Last line, first column (if no cup)\s+1 +\s-1cursor_up, cuu1 up Upline (cursor up)\s+1 +\s-1cursor_visible, cvvis vs Make cursor very visible\s+1 +\s-1define_bit_image_region, defbi Yx Define rectangular bit image region (use tparm)\s+1 +\s-1define_char, defc ZE Define character in a character set\s+1 +\s-1delete_character, dch1 dc Delete character (P*)\s+1 +\s-1delete_line, dl1 dl Delete line (P*)\s+1 +\s-1device_type, devt dv Indicate language/codeset support\s+1 +\s-1dis_status_line, dsl ds Disable status line\s+1 +\s-1display_pc_char, dispc S1 Display PC character\s+1 +\s-1down_half_line, hd hd Half-line down (forward 1/2 linefeed)\s+1 +\s-1ena_acs, enacs eA enable alternate char set\s+1 +\s-1end_bit_image_region, endbi Yy End bit image region (use tparm)\s+1 +\s-1enter_alt_charset_mode, smacs as Start alternate character set (P)\s+1 +\s-1enter_am_mode, smam SA turn on automatic margins\s+1 +\s-1enter_blink_mode, blink mb Turn on blinking\s+1 +\s-1enter_bold_mode, bold md Turn on bold (extra bright) mode\s+1 +\s-1enter_ca_mode, smcup ti String to begin programs that use cup\s+1 +\s-1enter_delete_mode, smdc dm Delete mode (enter)\s+1 +\s-1enter_dim_mode, dim mh Turn on half-bright mode\s+1 +\s-1enter_doublewide_mode, swidm ZF Enable double-wide mode\s+1 +\s-1enter_draft_quality, sdrfq ZG Set draft-quality printing\s+1 +\s-1enter_insert_mode, smir im Insert mode (enter);\s+1 +\s-1enter_italics_mode, sitm ZH Enable italics mode\s+1 +\s-1enter_leftward_mode, slm ZI Enable leftward carriage motion\s+1 +\s-1enter_micro_mode, smicm ZJ Enable micro-motion capabilities\s+1 +\s-1enter_near_letter_quality, snlq ZK Set NLQ printing\s+1 +\s-1enter_normal_quality, snrmq ZL Set normal quality printing\s+1 +\s-1enter_pc_charset_mode, smpch S2 Enter PC character display mode\s+1 +\s-1enter_protected_mode, prot mp Turn on protected mode\s+1 +\s-1enter_reverse_mode, rev mr Turn on reverse video mode\s+1 +\s-1enter_scancode_mode, smsc S4 Enter PC scancode mode\s+1 +\s-1enter_secure_mode, invis mk Turn on blank mode (chars invisible)\s+1 +\s-1enter_shadow_mode, sshm ZM Enable shadow-mode printing\s+1 +\s-1enter_standout_mode, smso so Begin stand out mode\s+1 +\s-1enter_subscript_mode, ssubm ZN Enable subscript printing\s+1 +\s-1enter_superscript_mode, ssupm ZO Enable supercript printing\s+1 +\s-1enter_underline_mode, smul us Start underscore mode\s+1 +\s-1enter_upward_mode, sum ZP Enable upward carriage motion\s+1 +\s-1enter_xon_mode, smxon SX Turn on xon/xoff handshaking\s+1 +\s-1erase_chars, ech ec Erase #1 characters (PG)\s+1 +\s-1exit_alt_charset_mode, rmacs ae End alternate character set (P)\s+1 +\s-1exit_am_mode, rmam RA Turn off automatic margins\s+1 +\s-1exit_attribute_mode, sgr0 me Turn off all attributes\s+1 +\s-1exit_ca_mode, rmcup te String to end programs that use cup\s+1 +\s-1exit_delete_mode, rmdc ed End delete mode\s+1 +\s-1exit_doublewide_mode, rwidm ZQ Disable doublewide printing\s+1 +\s-1exit_insert_mode, rmir ei End insert mode\s+1 +\s-1exit_italics_mode, ritm ZR Disable italic printing\s+1 +\s-1exit_leftward_mode, rlm ZS Enable rightward (normal) carriage motion\s+1 +\s-1exit_micro_mode, rmicm ZT Disable micro motion capabilities\s+1 +\s-1exit_pc_charset_mode, rmpch S3 Disable PC character display\s+1 +\s-1exit_scancode_mode, rmsc S5 Disable PC scancode mode\s+1 +\s-1exit_shadow_mode, rshm ZU Disable shadow printing\s+1 +\s-1exit_standout_mode, rmso se End stand out mode\s+1 +\s-1exit_subscript_mode, rsubm ZV Disable subscript printing\s+1 +\s-1exit_superscript_mode, rsupm ZW Disable supercript printing\s+1 +\s-1exit_underline_mode, rmul ue End underscore mode\s+1 +\s-1exit_upward_mode, rum ZX Enable downward (normal) carriage motion\s+1 +\s-1exit_xon_mode, rmxon RX turn off xon/xoff handshaking\s+1 +\s-1flash_screen, flash vb Visible bell (may not move cursor)\s+1 +\s-1form_feed, ff ff Hardcopy terminal page eject (P*)\s+1 +\s-1from_status_line, fsl fs Return from status line\s+1 +\s-1init_1string, is1 i1 Terminal initialization string\s+1 +\s-1init_2string, is2 i2 Terminal initialization string\s+1 +\s-1init_3string, is3 i3 Terminal initialization string\s+1 +\s-1init_file, if if Name of file containing is\s+1 +\s-1init_prog, iprog iP Path name of program for init\s+1 +\s-1initialize_color, initc Ic Initialize the definition of color\s+1 +\s-1initialize_pair, initp Ip Initialize color-pair\s+1 +\s-1insert_character, ich1 ic Insert character (P)\s+1 +\s-1insert_line, il1 al Add new blank line (P*)\s+1 +\s-1insert_padding, ip ip Insert pad after character inserted + (p*)\s+1 +\s-1key_a1, ka1 K1 Upper left of keypad\s+1 +\s-1key_a3, ka3 K3 Upper right of keypad\s+1 +\s-1key_b2, kb2 K2 Center of keypad\s+1 +\s-1key_backspace, kbs kb Sent by backspace key\s+1 +\s-1key_beg, kbeg @1 begin key\s+1 +\s-1key_btab, kcbt kB back-tab key\s+1 +\s-1key_c1, kc1 K4 Lower left of keypad\s+1 +\s-1key_c3, kc3 K5 Lower right of keypad\s+1 +\s-1key_cancel, kcan @2 cancel key\s+1 +\s-1key_catab, ktbc ka Sent by clear-all-tabs key\s+1 +\s-1key_clear, kclr kC Sent by clear screen or erase key\s+1 +\s-1key_close, kclo @3 close key\s+1 +\s-1key_command, kcmd @4 command key\s+1 +\s-1key_copy, kcpy @5 copy key\s+1 +\s-1key_create, kcrt @6 create key\s+1 +\s-1key_ctab, kctab kt Sent by clear-tab key\s+1 +\s-1key_dc, kdch1 kD Sent by delete character key\s+1 +\s-1key_dl, kdl1 kL Sent by delete line key\s+1 +\s-1key_down, kcud1 kd Sent by terminal down arrow key\s+1 +\s-1key_eic, krmir kM Sent by rmir or smir in insert mode\s+1 +\s-1key_end, kend @7 end key\s+1 +\s-1key_enter, kent @8 enter/send key\s+1 +\s-1key_eol, kel kE Sent by clear-to-end-of-line key\s+1 +\s-1key_eos, ked kS Sent by clear-to-end-of-screen key\s+1 +\s-1key_exit, kext @9 exit key\s+1 +\s-1key_f0, kf0 k0 Sent by function key f0\s+1 +\s-1key_f1, kf1 k1 Sent by function key f1\s+1 +\s-1key_f2, kf2 k2 Sent by function key f2\s+1 +\s-1key_f3, kf3 k3 Sent by function key f3\s+1 +\s-1key_f4, kf4 k4 Sent by function key f4\s+1 +\s-1key_f5, kf5 k5 Sent by function key f5\s+1 +\s-1key_f6, kf6 k6 Sent by function key f6\s+1 +\s-1key_f7, kf7 k7 Sent by function key f7\s+1 +\s-1key_f8, kf8 k8 Sent by function key f8\s+1 +\s-1key_f9, kf9 k9 Sent by function key f9\s+1 +\s-1key_f10, kf10 k; Sent by function key f10\s+1 +\s-1key_f11, kf11 F1 F11 function key\s+1 +\s-1key_f12, kf12 F2 F12 function key\s+1 +\s-1key_f13, kf13 F3 F13 function key\s+1 +\s-1key_f14, kf14 F4 F14 function key\s+1 +\s-1key_f15, kf15 F5 F15 function key\s+1 +\s-1key_f16, kf16 F6 F16 function key\s+1 +\s-1key_f17, kf17 F7 F17 function key\s+1 +\s-1key_f18, kf18 F8 F18 function key\s+1 +\s-1key_f19, kf19 F9 F19 function key\s+1 +\s-1key_f20, kf20 FA F20 function key\s+1 +\s-1key_f21, kf21 FB F21 function key\s+1 +\s-1key_f22, kf22 FC F22 function key\s+1 +\s-1key_f23, kf23 FD F23 function key\s+1 +\s-1key_f24, kf24 FE F24 function key\s+1 +\s-1key_f25, kf25 FF F25 function key\s+1 +\s-1key_f26, kf26 FG F26 function key\s+1 +\s-1key_f27, kf27 FH F27 function key\s+1 +\s-1key_f28, kf28 FI F28 function key\s+1 +\s-1key_f29, kf29 FJ F29 function key\s+1 +\s-1key_f30, kf30 FK F30 function key\s+1 +\s-1key_f31, kf31 FL F31 function key\s+1 +\s-1key_f32, kf32 FM F32 function key\s+1 +\s-1key_f33, kf33 FN F33 function key\s+1 +\s-1key_f34, kf34 FO F34 function key\s+1 +\s-1key_f35, kf35 FP F35 function key\s+1 +\s-1key_f36, kf36 FQ F36 function key\s+1 +\s-1key_f37, kf37 FR F37 function key\s+1 +\s-1key_f38, kf38 FS F38 function key\s+1 +\s-1key_f39, kf39 FT F39 function key\s+1 +\s-1key_f40, kf40 FU F40 function key\s+1 +\s-1key_f41, kf41 FV F41 function key\s+1 +\s-1key_f42, kf42 FW F42 function key\s+1 +\s-1key_f43, kf43 FX F43 function key\s+1 +\s-1key_f44, kf44 FY F44 function key\s+1 +\s-1key_f45, kf45 FZ F45 function key\s+1 +\s-1key_f46, kf46 Fa F46 function key\s+1 +\s-1key_f47, kf47 Fb F47 function key\s+1 +\s-1key_f48, kf48 Fc F48 function key\s+1 +\s-1key_f49, kf49 Fd F49 function key\s+1 +\s-1key_f50, kf50 Fe F50 function key\s+1 +\s-1key_f51, kf51 Ff F51 function key\s+1 +\s-1key_f52, kf52 Fg F52 function key\s+1 +\s-1key_f53, kf53 Fh F53 function key\s+1 +\s-1key_f54, kf54 Fi F54 function key\s+1 +\s-1key_f55, kf55 Fj F55 function key\s+1 +\s-1key_f56, kf56 Fk F56 function key\s+1 +\s-1key_f57, kf57 Fl F57 function key\s+1 +\s-1key_f58, kf58 Fm F58 function key\s+1 +\s-1key_f59, kf59 Fn F59 function key\s+1 +\s-1key_f60, kf60 Fo F60 function key\s+1 +\s-1key_f61, kf61 Fp F61 function key\s+1 +\s-1key_f62, kf62 Fq F62 function key\s+1 +\s-1key_f63, kf63 Fr F63 function key\s+1 +\s-1key_find, kfnd @0 find key\s+1 +\s-1key_help, khlp %1 help key\s+1 +\s-1key_home, khome kh Sent by home key\s+1 +\s-1key_ic, kich1 kI Sent by ins char/enter ins mode key\s+1 +\s-1key_il, kil1 kA Sent by insert line\s+1 +\s-1key_left, kcub1 kl Sent by terminal left arrow key\s+1 +\s-1key_ll, kll kH Sent by home-down key\s+1 +\s-1key_mark, kmrk %2 mark key\s+1 +\s-1key_message, kmsg %3 message key\s+1 +\s-1key_move, kmov %4 move key\s+1 +\s-1key_next, knxt %5 next key\s+1 +\s-1key_npage, knp kN Sent by next-page key\s+1 +\s-1key_open, kopn %6 open key\s+1 +\s-1key_options, kopt %7 options key\s+1 +\s-1key_ppage, kpp kP Sent by previous-page key\s+1 +\s-1key_previous, kprv %8 previous key\s+1 +\s-1key_print, kprt %9 print key\s+1 +\s-1key_redo, krdo %0 redo key\s+1 +\s-1key_reference, kref &1 reference key\s+1 +\s-1key_refresh, krfr &2 refresh key\s+1 +\s-1key_replace, krpl &3 replace key\s+1 +\s-1key_restart, krst &4 restart key\s+1 +\s-1key_resume, kres &5 resume key\s+1 +\s-1key_right, kcuf1 kr Sent by terminal right arrow key\s+1 +\s-1key_save, ksav &6 save key\s+1 +\s-1key_sbeg, kBEG &9 shifted begin key\s+1 +\s-1key_scancel, kCAN &0 shifted cancel key\s+1 +\s-1key_scommand, kCMD *1 shifted command key\s+1 +\s-1key_scopy, kCPY *2 shifted copy key\s+1 +\s-1key_screate, kCRT *3 shifted create key\s+1 +\s-1key_sdc, kDC *4 shifted delete char key\s+1 +\s-1key_sdl, kDL *5 shifted delete line key\s+1 +\s-1key_select, kslt *6 select key\s+1 +\s-1key_send, kEND *7 shifted end key\s+1 +\s-1key_seol, kEOL *8 shifted end of line key\s+1 +\s-1key_sexit, kEXT *9 shifted exit key\s+1 +\s-1key_sf, kind kF Sent by scroll-forward/down key\s+1 +\s-1key_sfind, kFND *0 shifted find key\s+1 +\s-1key_shelp, kHLP #1 shifted help key\s+1 +\s-1key_shome, kHOM #2 shifted home key\s+1 +\s-1key_sic, kIC #3 shifted insert char key\s+1 +\s-1key_sleft, kLFT #4 shifted left key\s+1 +\s-1key_smessage, kMSG %a shifted message key\s+1 +\s-1key_smove, kMOV %b shifted move key\s+1 +\s-1key_snext, kNXT %c shifted next key\s+1 +\s-1key_soptions, kOPT %d shifted options key\s+1 +\s-1key_sprevious, kPRV %e shifted previous key\s+1 +\s-1key_sprint, kPRT %f shifted print key\s+1 +\s-1key_sr, kri kR Sent by scroll-backward/up key\s+1 +\s-1key_sredo, kRDO %g shifted redo key\s+1 +\s-1key_sreplace, kRPL %h shifted replace key\s+1 +\s-1key_sright, kRIT %i shifted right key\s+1 +\s-1key_srsume, kRES %j shifted resume key\s+1 +\s-1key_ssave, kSAV !1 shifted save key\s+1 +\s-1key_ssuspend, kSPD !2 shifted suspend key\s+1 +\s-1key_stab, khts kT Sent by set-tab key\s+1 +\s-1key_sundo, kUND !3 shifted undo key\s+1 +\s-1key_suspend, kspd &7 suspend key\s+1 +\s-1key_undo, kund &8 undo key\s+1 +\s-1key_up, kcuu1 ku Sent by terminal up arrow key\s+1 +\s-1keypad_local, rmkx ke Out of "keypad transmit" mode\s+1 +\s-1keypad_xmit, smkx ks Put terminal in "keypad transmit" mode\s+1 +\s-1lab_f0, lf0 l0 Labels on function key f0 if not f0\s+1 +\s-1lab_f1, lf1 l1 Labels on function key f1 if not f1\s+1 +\s-1lab_f2, lf2 l2 Labels on function key f2 if not f2\s+1 +\s-1lab_f3, lf3 l3 Labels on function key f3 if not f3\s+1 +\s-1lab_f4, lf4 l4 Labels on function key f4 if not f4\s+1 +\s-1lab_f5, lf5 l5 Labels on function key f5 if not f5\s+1 +\s-1lab_f6, lf6 l6 Labels on function key f6 if not f6\s+1 +\s-1lab_f7, lf7 l7 Labels on function key f7 if not f7\s+1 +\s-1lab_f8, lf8 l8 Labels on function key f8 if not f8\s+1 +\s-1lab_f9, lf9 l9 Labels on function key f9 if not f9\s+1 +\s-1lab_f10, lf10 la Labels on function key f10 if not f10\s+1 +\s-1label_on, smln LO turn on soft labels\s+1 +\s-1label_off, rmln LF turn off soft labels\s+1 +\s-1meta_off, rmm mo Turn off "meta mode"\s+1 +\s-1meta_on, smm mm Turn on "meta mode" (8th bit)\s+1 +\s-1micro_column_address, mhpa ZY Like column_address for micro adjustment\s+1 +\s-1micro_down, mcud1 ZZ Like cursor_down for micro adjustment\s+1 +\s-1micro_left, mcub1 Za Like cursor_left for micro adjustment\s+1 +\s-1micro_right, mcuf1 Zb Like cursor_right for micro adjustment\s+1 +\s-1micro_row_address, mvpa Zc Like row_address for micro adjustment\s+1 +\s-1micro_up, mcuu1 Zd Like cursor_up for micro adjustment\s+1 +\s-1newline, nel nw Newline (behaves like cr followed by lf)\s+1 +\s-1order_of_pins, porder Ze Matches software buts to print-head pins\s+1 +\s-1orig_colors, oc oc Reset all color pairs\s+1 +\s-1orig_pair, op op Set default color-pair to original one\s+1 +\s-1pad_char, pad pc Pad character (rather than null)\s+1 +\s-1parm_dch, dch DC Delete #1 chars (PG*)\s+1 +\s-1parm_delete_line, dl DL Delete #1 lines (PG*)\s+1 +\s-1parm_down_cursor, cud DO Move cursor down #1 lines (PG*)\s+1 +\s-1parm_down_micro, mcud Zf Like cud for micro adjust\s+1 +\s-1parm_ich, ich IC Insert #1 blank chars (PG*)\s+1 +\s-1parm_index, indn SF Scroll forward #1 lines (PG)\s+1 +\s-1parm_insert_line, il AL Add #1 new blank lines (PG*)\s+1 +\s-1parm_left_cursor, cub LE Move cursor left #1 spaces (PG)\s+1 +\s-1parm_left_micro, mcub Zg Like cul for micro adjust\s+1 +\s-1parm_right_cursor, cuf RI Move cursor right #1 spaces (PG*)\s+1 +\s-1parm_right_micro, mcuf Zh Likr cuf for micro adjust\s+1 +\s-1parm_rindex, rin SR Scroll backward #1 lines (PG)\s+1 +\s-1parm_up_cursor, cuu UP Move cursor up #1 lines (PG*)\s+1 +\s-1parm_up_micro, mcuu Zi Like cuu for micro adjust\s+1 +\s-1pkey_key, pfkey pk Prog funct key #1 to type string #2\s+1 +\s-1pkey_local, pfloc pl Prog funct key #1 to execute string #2\s+1 +\s-1pkey_xmit, pfx px Prog funct key #1 to xmit string #2\s+1 +\s-1pkey_plab, pfxl xl Program key #1 to xmit #2 and show #3\s+1 +\s-1plab_norm, pln pn program label #1 to show string #2\s+1 +\s-1print_screen, mc0 ps Print contents of the screen\s+1 +\s-1prtr_non, mc5p pO Turn on the printer for #1 bytes\s+1 +\s-1prtr_off, mc4 pf Turn off the printer\s+1 +\s-1prtr_on, mc5 po Turn on the printer\s+1 +\s-1repeat_char, rep rp Repeat char #1 #2 times. (PG*)\s+1 +\s-1req_for_input, rfi RF request for input\s+1 +\s-1reset_1string, rs1 r1 Reset terminal completely to sane modes.\s+1 +\s-1reset_2string, rs2 r2 Reset terminal completely to sane modes.\s+1 +\s-1reset_3string, rs3 r3 Reset terminal completely to sane modes.\s+1 +\s-1reset_file, rf rf Name of file containing reset string\s+1 +\s-1restore_cursor, rc rc Restore cursor to position of last sc\s+1 +\s-1row_address, vpa cv Vertical position absolute (set row) (PG)\s+1 +\s-1save_cursor, sc sc Save cursor position (P)\s+1 +\s-1scancode_escape, scesc S7 Escape for scancode emulation\s+1 +\s-1scroll_forward, ind sf Scroll text up (P)\s+1 +\s-1scroll_reverse, ri sr Scroll text down (P)\s+1 +\s-1select_char_set, scs Zj Select character set\s+1 +\s-1set0_des_seq, s0ds s0 Shift to codeset 0 (EUC set 0, ASCII)\s+1 +\s-1set1_des_seq, s1ds s1 Shift to codeset 1\s+1 +\s-1set2_des_seq, s2ds s2 Shift to codeset 2\s+1 +\s-1set3_des_seq, s3ds s3 Shift to codeset 3\s+1 +\s-1set_a_background, setab AB Set background color using ANSI escape\s+1 +\s-1set_a_foreground, setaf AF Set foreground color using ANSI escape\s+1 +\s-1set_attributes, sgr sa Define the video attributes (PG9)\s+1 +\s-1set_background, setb Sb Set current background color\s+1 +\s-1set_bottom_margin, smgb Zk Set bottom margin at current line\s+1 +\s-1set_bottom_margin_parm, smgbp Zl Set bottom line at line #1 or #2 lines from bottom\s+1 +\s-1set_color_band, setcolor Yz Change to ribbon color #1\s+1 +\s-1set_color_pair, scp sp Set current color pair\s+1 +\s-1set_foreground, setf Sf Set current foreground color\s+1 +\s-1set_left_margin, smgl ML Set left margin at current line\s+1 +\s-1set_left_margin_parm, smglp Zm Set left (right) margin at #1 (#2)\s+1 +\s-1set_lr_margin, smglr ML Set both left and right margins\s+1 +\s-1set_page_length, slines YZ Set page length to #1 lines (use tparm)\s+1 +\s-1set_right_margin, smgr MR Set right margin at current column\s+1 +\s-1set_right_margin_parm, smgrp Zn Set right margin at column #1\s+1 +\s-1set_tab, hts st Set a tab in all rows, current column\s+1 +\s-1set_tb_margin, smgtb MT Sets both top and bottom margins\s+1 +\s-1set_top_margin, smgt Zo Set top margin at current line\s+1 +\s-1set_top_margin_parm, smgtp Zp Set top margin at line #1\s+1 +\s-1set_window, wind wi Current window is lines #1-#2 cols #3-#4\s+1 +\s-1start_bit_image, sbim Zq Start printing bit image graphics\s+1 +\s-1start_char_set_def, scsd Zr Start definition of a character set\s+1 +\s-1stop_bit_image, rbim Zs End printing bit image graphics\s+1 +\s-1stop_char_set_def, rcsd Zt End definition of character set\s+1 +\s-1subscript_characters, subcs Zu List of subscriptable chars\s+1 +\s-1superscript_characters, supcs Zv List of superscriptable chars\s+1 +\s-1tab, ht ta Tab to next 8 space hardware tab stop\s+1 +\s-1these_cause_cr, docr Zw These characters cause a CR\s+1 +\s-1to_status_line, tsl ts Go to status line, column #1\s+1 +\s-1underline_char, uc uc Underscore one char and move past it\s+1 +\s-1up_half_line, hu hu Half-line up (reverse 1/2 linefeed)\s+1 +\s-1xoff_character, xoffc XF XON character\s+1 +\s-1xon_character, xonc XN XOFF character\s+1 +.TE + +(The following string capabilities are present in the SVr4.0 term structure, +but are not documented in the man page. Comments are from the term +structure header.) + +.TS +center; +c c c c +c c c c +l l l l. +\s-1label_format, fln Lf ??\s+1 +\s-1set_clock, sclk SC Set time-of-day clock\s+1 +\s-1display_clock, dclk DK Display time-of-day clock\s+1 +\s-1remove_clock, rmclk RC Remove time-of-day clock??\s+1 +\s-1create_window, cwin CW Define win #1 to go from #2,#3 to #4,#5\s+1 +\s-1goto_window, wingo WG Goto window #1\s+1 +\s-1hangup, hup HU Hang up phone\s+1 +\s-1dial_phone, dial DI Dial phone number #1\s+1 +\s-1quick_dial, qdial QD Dial phone number #1, without progress detection\s+1 +\s-1tone, tone TO Select touch tone dialing\s+1 +\s-1pulse, pulse PU Select pulse dialing\s+1 +\s-1flash_hook, hook fh Flash the switch hook\s+1 +\s-1fixed_pause, pause PA Pause for 2-3 seconds\s+1 +\s-1wait_tone, wait WA Wait for dial tone\s+1 +\s-1user0, u0 u0 User string # 0\s+1 +\s-1user1, u1 u1 User string # 1\s+1 +\s-1user2, u2 u2 User string # 2\s+1 +\s-1user3, u3 u3 User string # 3\s+1 +\s-1user4, u4 u4 User string # 4\s+1 +\s-1user5, u5 u5 User string # 5\s+1 +\s-1user6, u6 u6 User string # 6\s+1 +\s-1user7, u7 u7 User string # 7\s+1 +\s-1user8, u8 u8 User string # 8\s+1 +\s-1user9, u9 u9 User string # 9\s+1 +\s-1get_mouse, getm Gm Curses should get button events\s+1 +\s-1key_mouse, kmous Km ??\s+1 +\s-1mouse_info, minfo Mi Mouse status information\s+1 +\s-1pc_term_options, pctrm S6 PC terminal options\s+1 +\s-1req_mouse_pos, reqmp RQ Request mouse position report\s+1 +\s-1zero_motion, zerom, Zx No motion for the subsequent character\s+1 +.TE +.PP +.B A Sample Entry +.PP +The following entry, which describes the Concept\-100, is among the more +complex entries in the +.I terminfo +file as of this writing. +.PP +.nf +.in -2 +.ta .3i +.ft CW +\s-2concept100\||\|c100|\|\|concept\||\|c104\||\|c100-4p\||\|concept 100, + am, bel=^G, blank=\eEH, blink=\eEC, clear=^L$<2*>, cnorm=\eEw, + cols#80, cr=^M$<9>, cub1=^H, cud1=^J, cuf1=\eE=, + cup=\eEa%p1%' '%+%c%p2%' '%+%c, + cuu1=\eE;, cvvis=\eEW, db, dch1=\eE^A$<16*>, dim=\eEE, dl1=\eE^B$<3*>, + ed=\eE^C$<16*>, el=\eE^U$<16>, eo, flash=\eEk$<20>\eEK, ht=\et$<8>, + il1=\eE^R$<3*>, in, ind=^J, .ind=^J$<9>, ip=$<16*>, + is2=\eEU\eEf\eE7\eE5\eE8\eEl\eENH\eEK\eE\e200\eEo&\e200\eEo\e47\eE, + kbs=^h, kcub1=\eE>, kcud1=\eE<, kcuf1=\eE=, kcuu1=\eE;, + kf1=\eE5, kf2=\eE6, kf3=\eE7, khome=\eE?, + lines#24, mir, pb#9600, prot=\eEI, rep=\eEr%p1%c%p2%' '%+%c$<.2*>, + rev=\eED, rmcup=\eEv $<6>\eEp\er\en, rmir=\eE\e200, rmkx=\eEx, + rmso=\eEd\eEe, rmul=\eEg, rmul=\eEg, sgr0=\eEN\e200, + smcup=\eEU\eEv 8p\eEp\er, smir=\eE^P, smkx=\eEX, smso=\eEE\eED, + smul=\eEG, tabs, ul, vt#8, xenl,\s+2 +.in +2 +.fi +.ft R +.PP +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 +.I terminfo +are of three types: +Boolean capabilities which indicate that the terminal has +some particular 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. +.PP +.B Types of Capabilities +.PP +All capabilities have names. For instance, the fact that +the Concept has +.I "automatic margins" +(i.e., an automatic return and linefeed +when the end of a line is reached) is indicated by the capability \fBam\fR. +Hence the description of the Concept includes \fBam\fR. +Numeric capabilities are followed by the character `#' and then the value. +Thus \fBcols\fR, which indicates the number of columns the terminal has, +gives the value `80' for the Concept. +.PP +Finally, string valued capabilities, such as \fBel\fR (clear to end of line +sequence) are given by the two-character code, an `=', and then a string +ending at the next following `,'. A delay in milliseconds may appear +anywhere in such a capability, enclosed in $<..> brackets, +as in \fBel\fP=\eEK$<3>, +and padding characters are supplied by +.I tputs +to provide this delay. +The delay can be either a number, e.g., `20', or a number followed by +an `*', i.e., `3*'. 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 +.IR lines +affected. +This is always one unless the terminal has \fBxenl\fP and the software uses it.) +When a `*' is specified, it is sometimes useful to give a delay of the form +`3.5' to specify a delay per unit to tenths of milliseconds. +(Only one decimal place is allowed.) +.PP +A number of escape sequences are provided in the string valued capabilities +for easy encoding of characters there. Both \fB\eE\fR and \fB\ee\fR +map to an \s-1ESCAPE\s0 character, +\fB^x\fR maps to a control-x for any appropriate x, and the sequences +\fB\en \el \er \et \eb \ef \es\fR give +a newline, linefeed, return, tab, backspace, formfeed, and space. +Other escapes include \e^ for ^, \e\e for \e, \e, for comma, \e: for :, +and \e0 for null. +(\e0 will produce \e200, which does not terminate a string but behaves +as a null character on most terminals.) +Finally, characters may be given as three octal digits after a \fB\e\fR. +.PP +Sometimes individual capabilities must be commented out. +To do this, put a period before the capability name. +For example, see the second +.B ind +in the example above. +.br +.ne 5 +.PP +.B Preparing Descriptions +.PP +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 +.I terminfo +and to build up a description gradually, using partial descriptions +with +.I vi +or some other screen-oriented program to check that they are correct. +Be aware that a very unusual terminal may expose deficiencies in +the ability of the +.I terminfo +file to describe it +or bugs in the screen-handling code of the test program. +To easily test a new terminal description you can set the environment variable +TERMINFO to a pathname of a directory containing the +compiled description you are working +on and programs will look there rather than in +.IR \*d . +To get the padding for insert line right (if the terminal manufacturer +did not document it) a severe test is to edit /etc/passwd at 9600 baud, +delete 16 or so lines from the middle of the screen, then hit the `u' +key several times quickly. +If the terminal messes up, more padding is usually needed. +A similar test can be used for insert character. +.PP +.B Basic Capabilities +.PP +The number of columns on each line for the terminal is given by the +\fBcols\fR numeric capability. If the terminal is a \s-1CRT\s0, then the +number of lines on the screen is given by the \fBlines\fR capability. +If the terminal wraps around to the beginning of the next line when +it reaches the right margin, then it should have the \fBam\fR capability. +If the terminal can clear its screen, leaving the cursor in the home +position, then this is given by the \fBclear\fR string capability. +If the terminal overstrikes +(rather than clearing a position when a character is struck over) +then it should have the \fBos\fR capability. +If the terminal is a printing terminal, with no soft copy unit, +give it both +.B hc +and +.BR os . +.RB ( os +applies to storage scope terminals, such as \s-1TEKTRONIX\s+1 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 +.BR cr . +(Normally this will be carriage return, control M.) +If there is a code to produce an audible signal (bell, beep, etc) +give this as +.BR bel . +.PP +If there is a code to move the cursor one position to the left +(such as backspace) that capability should be given as +.BR cub1 . +Similarly, codes to move to the right, up, and down should be +given as +.BR cuf1 , +.BR cuu1 , +and +.BR cud1 . +These local cursor motions should not alter the text they pass over, +for example, you would not normally use `\fBcuf1\fP=\ ' because the +space would erase the character moved over. +.PP +A very important point here is that the local cursor motions encoded +in +.I terminfo +are undefined at the left and top edges of a \s-1CRT\s0 terminal. +Programs should never attempt to backspace around the left edge, +unless +.B bw +is given, +and never attempt to go up locally off the top. +In order to scroll text up, a program will go to the bottom left corner +of the screen and send the +.B ind +(index) string. +.PP +To scroll text down, a program goes to the top left corner +of the screen and sends the +.B ri +(reverse index) string. +The strings +.B ind +and +.B ri +are undefined when not on their respective corners of the screen. +.PP +Parameterized versions of the scrolling sequences are +.B indn +and +.B rin +which have the same semantics as +.B ind +and +.B ri +except that they take one parameter, and scroll that many lines. +They are also undefined except at the appropriate edge of the screen. +.PP +The \fBam\fR 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 +.B cuf1 +from the last column. +The only local motion which is defined from the left edge is if +.B bw +is given, then a +.B cub1 +from the left edge will move to the right edge of the previous row. +If +.B bw +is not given, the effect is undefined. +This is useful for drawing a box around the edge of the screen, for example. +If the terminal has switch selectable automatic margins, +the +.I terminfo +file usually assumes that this is on; i.e., \fBam\fR. +If the terminal has a command which moves to the first column of the next +line, that command can be given as +.B nel +(newline). +It does not matter if the command clears the remainder of the current line, +so if the terminal has no +.B cr +and +.B lf +it may still be possible to craft a working +.B nel +out of one or both of them. +.PP +These capabilities suffice to describe hardcopy and \*(lqglass-tty\*(rq terminals. +Thus the model 33 teletype is described as +.PP +.DT +.nf +.ft CW +.in -7 + \s-133\||\|tty33\||\|tty\||\|model 33 teletype, + bel=^G, cols#72, cr=^M, cud1=^J, hc, ind=^J, os,\s+1 +.in +7 +.ft R +.PP +while the Lear Siegler \s-1ADM\-3\s0 is described as +.PP +.DT +.nf +.ft CW +.in -7 + \s-1adm3\||\|3\||\|lsi adm3, + am, bel=^G, clear=^Z, cols#80, cr=^M, cub1=^H, cud1=^J, + ind=^J, lines#24,\s+1 +.in +7 +.ft R +.fi +.PP +.B Parameterized Strings +.PP +Cursor addressing and other strings requiring parameters +in the terminal are described by a +parameterized string capability, with +.IR printf (3S) +like escapes \fB%x\fR in it. +For example, to address the cursor, the +.B cup +capability is given, using two parameters: +the row and column to address to. +(Rows and columns are numbered from zero and refer to the +physical screen visible to the user, not to any unseen memory.) +If the terminal has memory relative cursor addressing, +that can be indicated by +.BR mrcup . +.PP +The parameter mechanism uses a stack and special \fB%\fP codes +to manipulate it. Typically a sequence will push one of the +parameters onto the stack and then print it in some format. +Often more complex operations are necessary. +.PP +The \fB%\fR encodings have the following meanings: +.PP +.DT +.nf +.ta .5i 1.5i + \s-1%% outputs `%' + %d print pop() as in printf + %2d print pop() like %2d + %3d print pop() like %3d + %02d + %03d as in printf + %c print pop() gives %c + %s print pop() gives %s + + %p[1-9] push ith parm + %P[a-z] set variable [a-z] to pop() + %g[a-z] get variable [a-z] and push it + %'c' char constant c + %{nn} integer constant nn + + %+ %- %* %/ %m + arithmetic (%m is mod): push(pop() op pop()) + %& %| %^ bit operations: push(pop() op pop()) + %= %> %< logical operations: push(pop() op pop()) + %! %~ unary operations push(op pop()) + %i add 1 to first two parms (for ANSI terminals) + + %? expr %t thenpart %e elsepart %; + if-then-else, %e elsepart is optional. + else-if's are possible ala Algol 68: + %? c\d1\u %t b\d1\u %e c\d2\u %t b\d2\u %e c\d3\u %t b\d3\u %e c\d4\u %t b\d4\u %e %; +\s+1 c\di\u are conditions, b\di\u are bodies. +.fi +.PP +Binary operations are in postfix form with the operands in the usual order. +That is, to get x-5 one would use "%gx%{5}%-". +.PP +Consider the HP2645, which, to get to row 3 and column 12, needs +to be sent \eE&a12c03Y padded for 6 milliseconds. Note that the order +of the rows and columns is inverted here, and that the row and column +are printed as two digits. +Thus its \fBcup\fR capability is \*(lqcup=6\eE&%p2%2dc%p1%2dY\*(rq. +.PP +The Microterm \s-1ACT-IV\s0 needs the current row and column sent +preceded by a \fB^T\fR, with the row and column simply encoded in binary, +\*(lqcup=^T%p1%c%p2%c\*(rq. +Terminals which use \*(lq%c\*(rq need to be able to +backspace the cursor (\fBcub1\fR), +and to move the cursor up one line on the screen (\fBcuu1\fR). +This is necessary because it is not always safe to transmit \fB\en\fR +\fB^D\fR and \fB\er\fR, as the system may change or discard them. +(The library routines dealing with terminfo set tty modes so that +tabs are never expanded, so \et is safe to send. +This turns out to be essential for the Ann Arbor 4080.) +.PP +A final example is the \s-1LSI ADM\s0-3a, which uses row and column +offset by a blank character, thus \*(lqcup=\eE=%p1%' '%+%c%p2%' '%+%c\*(rq. +After sending `\eE=', this pushes the first parameter, pushes the +ASCII value for a space (32), adds them (pushing the sum on the stack +in place of the two previous values) and outputs that value as a character. +Then the same is done for the second parameter. +More complex arithmetic is possible using the stack. +.PP +If the terminal has row or column absolute cursor addressing, +these can be given as single parameter capabilities +.B hpa +(horizontal position absolute) +and +.B vpa +(vertical position absolute). +Sometimes these are shorter than the more general two parameter +sequence (as with the hp2645) and can be used in preference to +.B cup . +If there are parameterized local motions (e.g., move +.I n +spaces to the right) these can be given as +.BR cud , +.BR cub , +.BR cuf , +and +.BR cuu +with a single parameter indicating how many spaces to move. +These are primarily useful if the terminal does not have +.BR cup , +such as the \s-1TEKTRONIX\s+1 4025. +.PP +.B Cursor Motions +.PP +If the terminal has a fast way to home the cursor +(to very upper left corner of screen) then this can be given as +\fBhome\fR; similarly a fast way of getting to the lower left-hand corner +can be given as \fBll\fR; this may involve going up with \fBcuu1\fR +from the home position, +but a program should never do this itself (unless \fBll\fR 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 \eEH sequence on HP terminals cannot be used for +.BR home .) +.PP +.B Area Clears +.PP +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 \fBel\fR. +If the terminal can clear from the current position to the end of the +display, then this should be given as \fBed\fR. +\fBEd\fR 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 +.B ed +is not available.) +.PP +.B Insert/delete line +.PP +If the terminal can open a new blank line before the line where the cursor +is, this should be given as \fBil1\fR; 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 \fBdl1\fR; this is done only from the first position on +the line to be deleted. +Versions of +.B il1 +and +.B dl1 +which take a single parameter and insert or delete that many lines can +be given as +.B il +and +.BR dl . +If the terminal has a settable scrolling region (like the vt100) +the command to set this can be described with the +.B csr +capability, which takes two parameters: +the top and bottom lines of the scrolling region. +The cursor position is, alas, undefined after using this command. +It is possible to get the effect of insert or delete line using +this command \- the +.B sc +and +.B rc +(save and restore cursor) commands are also useful. +Inserting lines at the top or bottom of the screen can also be +done using +.B ri +or +.B ind +on many terminals without a true insert/delete line, +and is often faster even on terminals with those features. +.PP +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 +.BR wind . +The four parameters are the starting and ending lines in memory +and the starting and ending columns in memory, in that order. +.PP +If the terminal can retain display memory above, then the +\fBda\fR capability should be given; if display memory can be retained +below, then \fBdb\fR should be given. These indicate +that deleting a line or scrolling may bring non-blank lines up from below +or that scrolling back with \fBri\fR may bring down non-blank lines. +.PP +.B Insert/Delete Character +.PP +There are two basic kinds of intelligent terminals with respect to +insert/delete character which can be described using +.I terminfo. +The most common insert/delete character operations affect only the characters +on the current line and shift characters off the end of the line rigidly. +Other terminals, such as the Concept 100 and the Perkin Elmer Owl, make +a distinction between typed and untyped blanks on the screen, shifting +upon an insert or delete only to an untyped blank on the screen which is +either eliminated, or expanded to two untyped blanks. You can determine the +kind of terminal you have by clearing the screen and then typing +text separated by cursor motions. Type \*(lqabc\ \ \ \ def\*(rq using local +cursor motions (not spaces) between the \*(lqabc\*(rq and the \*(lqdef\*(rq. +Then position the cursor before the \*(lqabc\*(rq and put the terminal in insert +mode. If typing characters causes the rest of the line to shift +rigidly and characters to fall off the end, then your terminal does +not distinguish between blanks and untyped positions. If the \*(lqabc\*(rq +shifts over to the \*(lqdef\*(rq 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 \fBin\fR, which stands for +\*(lqinsert null\*(rq. +While these are two logically separate attributes (one line vs. multiline +insert mode, and special treatment of untyped spaces) we have seen no +terminals whose insert mode cannot be described with the single attribute. +.PP +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 \fBsmir\fR the sequence to get into insert mode. +Give as \fBrmir\fR the sequence to leave insert mode. +Now give as \fBich1\fR any sequence needed to be sent just before sending +the character to be inserted. Most terminals with a true insert mode +will not give \fBich1\fR; terminals which send a sequence to open a screen +position should give it here. +(If your terminal has both, insert mode is usually preferable to \fBich1\fP. +Do not give both unless the terminal actually requires both +to be used in combination.) +If post insert padding is needed, give this as a number of milliseconds +in \fBip\fR (a string option). Any other sequence which may need to be +sent after an insert of a single character may also be given in \fBip\fR. +If your terminal needs both to be placed into an `insert mode' and +a special code to precede each inserted character, then both +.BR smir / rmir +and +.B ich1 +can be given, and both will be used. +The +.B ich +capability, with one parameter, +.IR n , +will repeat the effects of +.B ich1 +.I n +times. +.PP +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 \fBmir\fR to speed up inserting +in this case. Omitting \fBmir\fR will affect only speed. Some terminals +(notably Datamedia's) must not have \fBmir\fR because of the way their +insert mode works. +.PP +Finally, you can specify +.B dch1 +to delete a single character, +.B dch +with one parameter, +.IR n , +to delete +.I n characters, +and delete mode by giving \fBsmdc\fR and \fBrmdc\fR +to enter and exit delete mode (any mode the terminal needs to be placed +in for +.B dch1 +to work). +.PP +A command to erase +.I n +characters (equivalent to outputting +.I n +blanks without moving the cursor) +can be given as +.B ech +with one parameter. +.PP +.B "Highlighting, Underlining, and Visible Bells" +.PP +If your terminal has one or more kinds of display attributes, +these can be represented in a number of different ways. +You should choose one display form as +\f2standout mode\fR, +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 \fBsmso\fR and \fBrmso\fR, 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 \fBxmc\fR should be given to tell how many spaces are left. +.PP +Codes to begin underlining and end underlining can be given as \fBsmul\fR +and \fBrmul\fR 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 \fBuc\fR. +.PP +Other capabilities to enter various highlighting modes include +.B blink +(blinking) +.B bold +(bold or extra bright) +.B dim +(dim or half-bright) +.B invis +(blanking or invisible text) +.B prot +(protected) +.B rev +(reverse video) +.B sgr0 +(turn off +.I all +attribute modes) +.B smacs +(enter alternate character set mode) +and +.B rmacs +(exit alternate character set mode). +Turning on any of these modes singly may or may not turn off other modes. +.PP +If there is a sequence to set arbitrary combinations of modes, +this should be given as +.B sgr +(set attributes), +taking 9 parameters. +Each parameter is either 0 or 1, as the corresponding attribute is on or off. +The 9 parameters are, in order: +standout, underline, reverse, blink, dim, bold, blank, protect, alternate +character set. +Not all modes need be supported by +.BR sgr , +only those for which corresponding separate attribute commands exist. +.PP +Terminals with the ``magic cookie'' glitch +.RB ( xmc ) +deposit special ``cookies'' when they receive mode-setting sequences, +which affect the display algorithm rather than having extra bits for +each character. +Some terminals, such as the HP 2621, automatically leave standout +mode when they move to a new line or the cursor is addressed. +Programs using standout mode should exit standout mode before +moving the cursor or sending a newline, +unless the +.B msgr +capability, asserting that it is safe to move in standout mode, is present. +.PP +If the terminal has +a way of flashing the screen to indicate an error quietly (a bell replacement) +then this can be given as \fBflash\fR; it must not move the cursor. +.PP +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 +.BR cvvis . +If there is a way to make the cursor completely invisible, give that as +.BR civis . +The capability +.BR cnorm +should be given which undoes the effects of both of these modes. +.PP +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 \fBsmcup\fR and \fBrmcup\fR. +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 \s-1TEKTRONIX\s+1 4025, +where +.B smcup +sets the command character to be the one used by terminfo. +.PP +If your terminal correctly generates underlined characters +(with no special codes needed) +even though it does not overstrike, +then you should give the capability \fBul\fR. +If overstrikes are erasable with a blank, +then this should be indicated by giving \fBeo\fR. +.PP +.B Keypad +.PP +If the terminal has a keypad that transmits codes when the keys are pressed, +this information can be given. Note that it is not possible to handle +terminals where the keypad only works in local (this applies, for example, +to the unshifted HP 2621 keys). +If the keypad can be set to transmit or not transmit, +give these codes as \fBsmkx\fR and \fBrmkx\fR. +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 \fBkcub1, kcuf1, kcuu1, kcud1, +\fRand\fB khome\fR respectively. +If there are function keys such as f0, f1, ..., f10, the codes they send +can be given as \fBkf0, kf1, ..., kf10\fR. +If these keys have labels other than the default f0 through f10, the labels +can be given as \fBlf0, lf1, ..., lf10\fR. +The codes transmitted by certain other special keys can be given: +.B kll +(home down), +.B kbs +(backspace), +.B ktbc +(clear all tabs), +.B kctab +(clear the tab stop in this column), +.B kclr +(clear screen or erase key), +.B kdch1 +(delete character), +.B kdl1 +(delete line), +.B krmir +(exit insert mode), +.B kel +(clear to end of line), +.B ked +(clear to end of screen), +.B kich1 +(insert character or enter insert mode), +.B kil1 +(insert line), +.B knp +(next page), +.B kpp +(previous page), +.B kind +(scroll forward/down), +.B kri +(scroll backward/up), +.B khts +(set a tab stop in this column). +In addition, if the keypad has a 3 by 3 array of keys including the four +arrow keys, the other five keys can be given as +.BR ka1 , +.BR ka3 , +.BR kb2 , +.BR kc1 , +and +.BR kc3 . +These keys are useful when the effects of a 3 by 3 directional pad are needed. +.PP +.B Tabs and Initialization +.PP +If the terminal has hardware tabs, the command to advance to the next +tab stop can be given as +.B ht +(usually control I). +A ``backtab'' command which moves leftward to the next tab stop can +be given as +.BR cbt . +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 +.B ht +or +.B cbt +even if they are present, since the user may not have the tab stops +properly set. +If the terminal has hardware tabs which are initially set every +.I n +spaces when the terminal is powered up, +the numeric parameter +.B it +is given, showing the number of spaces the tabs are set to. +This is normally used by the +.IR tset +command to determine whether to set the mode for hardware tab expansion, +and whether to set the tab stops. +If the terminal has tab stops that can be saved in nonvolatile memory, +the terminfo description can assume that they are properly set. +.PP +Other capabilities +include +.BR is1 , +.BR is2 , +and +.BR is3 , +initialization strings for the terminal, +.BR iprog , +the path name of a program to be run to initialize the terminal, +and \fBif\fR, 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 +.IR tset +program, each time the user logs in. +They will be printed in the following order: +.BR is1 ; +.BR is2 ; +setting tabs using +.B tbc +and +.BR hts ; +.BR if ; +running the program +.BR iprog ; +and finally +.BR is3 . +Most initialization is done with +.BR is2 . +Special terminal modes can be set up without duplicating strings +by putting the common sequences in +.B is2 +and special cases in +.B is1 +and +.BR is3 . +A pair of sequences that does a harder reset from a totally unknown state +can be analogously given as +.BR rs1 , +.BR rs2 , +.BR rf , +and +.BR rs3 , +analogous to +.B is2 +and +.BR if . +These strings are output by the +.IR reset +program, which is used when the terminal gets into a wedged state. +Commands are normally placed in +.B rs2 +and +.B rf +only if they produce annoying effects on the screen and are not +necessary when logging in. +For example, the command to set the vt100 into 80-column mode would +normally be part of +.BR is2 , +but it causes an annoying glitch of the screen and is not normally +needed since the terminal is usually already in 80 column mode. +.PP +If there are commands to set and clear tab stops, they can be given as +.B tbc +(clear all tab stops) +and +.B hts +(set a tab stop in the current column of every row). +If a more complex sequence is needed to set the tabs than can be +described by this, the sequence can be placed in +.B is2 +or +.BR if . +.PP +Delays +.PP +Certain capabilities control padding in the teletype driver. +These are primarily needed by hard copy terminals, and are used +by the +.IR tset +program to set teletype modes appropriately. +Delays embedded in the capabilities +.BR cr , +.BR ind , +.BR cub1 , +.BR ff , +and +.B tab +will cause the appropriate delay bits to be set in the teletype driver. +If +.B pb +(padding baud rate) +is given, +these values can be ignored at baud rates below the value of +.BR pb . +.PP +.B Miscellaneous +.PP +If the terminal requires other than a null (zero) character as a pad, +then this can be given as \fBpad\fR. +Only the first character of the +.B pad +string is used. +.PP +If the terminal has an extra ``status line'' that is not normally +used by software, this fact can be indicated. +If the status line is viewed as an extra line below the bottom line, +into which one can cursor address normally +(such as the Heathkit h19's 25th line, or the 24th line of a vt100 +which is set to a 23-line scrolling region), +the capability +.B hs +should be given. +Special strings to go to the beginning of the status +line and to return from the status line can be given as +.B tsl +and +.BR fsl . +.RB ( fsl +must leave the cursor position in the same place it was before +.BR tsl . +If necessary, the +.B sc +and +.B rc +strings can be included in +.B tsl +and +.B fsl +to get this effect.) +The parameter +.B tsl +takes one parameter, which is the column number of the status line +the cursor is to be moved to. +If escape sequences and other special commands, such as tab, work +while in the status line, the flag +.B eslok +can be given. +A string which turns off the status line (or otherwise erases its +contents) should be given as +.BR dsl . +If the terminal has commands to save and restore the position of the cursor, +give them as +.B sc +and +.BR rc . +The status line is normally assumed to be the same width as the rest +of the screen, e.g., +.BR cols . +If the status line is a different width (possibly because the terminal +does not allow an entire line to be loaded) the width, in columns, +can be indicated with the numeric parameter +.BR wsl . +.PP +If the terminal can move up or down half a line, +this can be indicated with +.B hu +(half-line up) +and +.B hd +(half-line down). +This is primarily useful for superscripts and subscripts on hardcopy terminals. +If a hardcopy terminal can eject to the next page (form feed), give this as +.B ff +(usually control L). +.PP +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 +.BR rep . +The first parameter is the character to be repeated and the second +is the number of times to repeat it. +Thus, tparm(repeat_char, 'x', 10) is the same as `xxxxxxxxxx'. +.PP +If the terminal has a settable command character, such as the \s-1TEKTRONIX\s+1 4025, +this can be indicated with +.BR cmdch . +A prototype command character is chosen which is used in all capabilities. +This character is given in the +.B cmdch +capability to identify it. +The following convention is supported on some UNIX systems: +The environment is to be searched for a +.B CC +variable, and if found, all +occurrences of the prototype character are replaced with the character +in the environment variable. +.PP +Terminal descriptions that do not represent a specific kind of known +terminal, such as +.IR switch , +.IR dialup , +.IR patch , +and +.IR network , +should include the +.B gn +(generic) capability so that programs can complain that they do not know +how to talk to the terminal. +(This capability does not apply to +.I virtual +terminal descriptions for which the escape sequences are known.) +.PP +If the terminal uses xon/xoff handshaking for flow control, give +.BR xon . +Padding information should still be included so that routines can +make better decisions about costs, but actual pad characters will +not be transmitted. +.PP +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 +.BR km . +Otherwise, software will assume that the 8th bit is parity and it +will usually be cleared. +If strings exist to turn this ``meta mode'' on and off, they +can be given as +.B smm +and +.BR rmm . +.PP +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 +.BR lm . +A value of +.BR lm #0 +indicates that the number of lines is not fixed, +but that there is still more memory than fits on the screen. +.PP +If the terminal is one of those supported by the \s-1UNIX\s+1 virtual +terminal protocol, the terminal number can be given as +.BR vt . +.PP +Media copy +strings which control an auxiliary printer connected to the terminal +can be given as +.BR mc0 : +print the contents of the screen, +.BR mc4 : +turn off the printer, and +.BR mc5 : +turn on the printer. +When the printer is on, all text sent to the terminal will be sent +to the printer. +It is undefined whether the text is also displayed on the terminal screen +when the printer is on. +A variation +.B mc5p +takes one parameter, and leaves the printer on for as many characters +as the value of the parameter, then turns the printer off. +The parameter should not exceed 255. +All text, including +.BR mc4 , +is transparently passed to the printer while an +.B mc5p +is in effect. +.PP +Strings to program function keys can be given as +.BR pfkey , +.BR pfloc , +and +.BR pfx . +Each of these strings takes two parameters: the function key number to +program (from 0 to 10) and the string to program it with. +Function key numbers out of this range may program undefined keys in +a terminal dependent manner. +The difference between the capabilities is that +.B pfkey +causes pressing the given key to be the same as the user typing the +given string; +.B pfloc +causes the string to be executed by the terminal in local; and +.B pfx +causes the string to be transmitted to the computer. +.PP +.B Glitches and Braindamage +.PP +Hazeltine terminals, which do not allow `~' characters to be displayed should +indicate \fBhz\fR. +.PP +Terminals which ignore a linefeed immediately after an \fBam\fR wrap, +such as the Concept and vt100, +should indicate \fBxenl\fR. +.PP +If +.B el +is required to get rid of standout +(instead of merely writing normal text on top of it), +\fBxhp\fP should be given. +.PP +Teleray terminals, where tabs turn all characters moved over to blanks, +should indicate \fBxt\fR (destructive tabs). +Note: the variable indicating this is now `dest_tabs_magic_smso'; in +older versions, it was teleray_glitch. +This glitch is also taken to mean that it is not possible to position +the cursor on top of a ``magic cookie'', +that to erase standout mode it is instead necessary to use +delete and insert line. +.PP +The Beehive Superbee, which is unable to correctly transmit the escape +or control C characters, has +.BR xsb , +indicating that the f1 key is used for escape and f2 for control C. +(Only certain Superbees have this problem, depending on the ROM.) +Note that in older terminfo versions, this capability was called +`beehive_glitch'; it is now `no_esc_ctl_c'. +.PP +Other specific terminal problems may be corrected by adding more +capabilities of the form \fBx\fIx\fR. +.PP +.B Similar Terminals +.PP +If there are two very similar terminals, +one can be defined as being just like the other with certain exceptions. +The string capability \fBuse\fR can be given +with the name of the similar terminal. +The capabilities given before +.B use +override those in the terminal type invoked by +.BR use . +A capability can be cancelled by placing \fBxx@\fR to the left of the +capability definition, where xx is the capability. +For example, the entry +.PP + 2621-nl, smkx@, rmkx@, use=2621, +.PP +defines a 2621-nl that does not have the \fBsmkx\fR or \fBrmkx\fR 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. +.SH FILES +.TP 25 +\*d/?/* +files containing terminal descriptions +.SH "SEE ALSO" +tic(1m), curses(3X), printf(3S), term(\*n). +.SH AUTHORS +Pavel Curtis, Zeyd M. Ben-Halim +.\"# +.\"# The following sets edit modes for GNU EMACS +.\"# Local Variables: +.\"# mode:nroff +.\"# fill-column:79 +.\"# End: |