mirror of
https://github.com/Aigor44/ncursesw-morphos.git
synced 2024-12-27 07:49:06 +08:00
b9a2bd87a7
+ clarify in resizeterm.3x how KEY_RESIZE is pushed onto the input stream. + clarify in curs_getch.3x that the keypad mode affects ability to read KEY_MOUSE codes, but does not affect KEY_RESIZE. + add overlooked build-fix needed with Cygwin for separate Ada95 configure script, cf: 20150606 (report by Nicolas Boulenguez)
2572 lines
142 KiB
HTML
2572 lines
142 KiB
HTML
<!--
|
|
* 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-2012,2013 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.21 2013/03/09 22:11:36 tom Exp @
|
|
* Head of terminfo man page ends here
|
|
* @Id: terminfo.tail,v 1.69 2015/04/26 14:47:23 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
|
|
-->
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
|
<HTML>
|
|
<HEAD>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
|
|
<meta name="generator" content="Manpage converted by man2html - see http://invisible-island.net/scripts/readme.html#others_scripts">
|
|
<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 class="no-header">terminfo 5 File Formats</H1>
|
|
<PRE>
|
|
<STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> File Formats <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>
|
|
|
|
|
|
|
|
|
|
</PRE>
|
|
<H2><a name="h2-NAME">NAME</a></H2><PRE>
|
|
terminfo - terminal capability data base
|
|
|
|
|
|
</PRE>
|
|
<H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
|
|
/usr/share/terminfo/*/*
|
|
|
|
|
|
</PRE>
|
|
<H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE>
|
|
<EM>Terminfo</EM> is a data base describing terminals, used by
|
|
screen-oriented programs such as <STRONG>nvi(1)</STRONG>, <STRONG>rogue(1)</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 6.0 (patch 20150919).
|
|
|
|
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.
|
|
|
|
|
|
</PRE>
|
|
<H3><a name="h3-Predefined-Capabilities">Predefined Capabilities</a></H3><PRE>
|
|
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
|
|
definable 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 col-
|
|
umns #2
|
|
cursor_down cud1 do down one line
|
|
cursor_home home ho home cursor (if no
|
|
cup)
|
|
cursor_invisible civis vi make cursor invisi-
|
|
ble
|
|
cursor_left cub1 le move left one space
|
|
cursor_mem_address mrcup CM memory relative cur-
|
|
sor addressing, move
|
|
to row #1 columns #2
|
|
cursor_normal cnorm ve make cursor appear
|
|
normal (undo
|
|
civis/cvvis)
|
|
cursor_right cuf1 nd non-destructive
|
|
space (move right
|
|
one space)
|
|
cursor_to_ll ll ll last line, first
|
|
column (if no cup)
|
|
cursor_up cuu1 up up one line
|
|
cursor_visible cvvis vs make cursor very
|
|
visible
|
|
define_char defc ZE Define a character
|
|
#1, #2 dots wide,
|
|
descender #3
|
|
delete_character dch1 dc delete character
|
|
(P*)
|
|
delete_line dl1 dl delete line (P*)
|
|
dial_phone dial DI dial number #1
|
|
dis_status_line dsl ds disable status line
|
|
display_clock dclk DK display clock
|
|
down_half_line hd hd half a line down
|
|
ena_acs enacs eA enable alternate
|
|
char set
|
|
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 rectangular
|
|
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 hardcopy capabili-
|
|
ties. They were used in some post-4.1 versions of System
|
|
V curses, e.g., Solaris 2.5 and IRIX 6.x. Except for <STRONG>YI</STRONG>,
|
|
the <STRONG>ncurses</STRONG> termcap names for them are invented. Accord-
|
|
ing 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 slengthYI Set page length to
|
|
#1 hundredth of an
|
|
inch (some implemen-
|
|
tations use sL for
|
|
termcap).
|
|
|
|
|
|
</PRE>
|
|
<H3><a name="h3-User-Defined-Capabilities">User-Defined Capabilities</a></H3><PRE>
|
|
The preceding section listed the <EM>predefined</EM> capabilities.
|
|
They deal with some special features for terminals no
|
|
longer (or possibly never) produced. Occasionally there
|
|
are special features of newer terminals which are awkward
|
|
or impossible to represent by reusing the predefined capa-
|
|
bilities.
|
|
|
|
<STRONG>ncurses</STRONG> addresses this limitation by allowing user-defined
|
|
capabilities. The <STRONG>tic</STRONG> and <STRONG>infocmp</STRONG> programs provide the <STRONG>-x</STRONG>
|
|
option for this purpose. When <STRONG>-x</STRONG> is set, <STRONG>tic</STRONG> treats
|
|
unknown capabilities as user-defined. That is, if <STRONG>tic</STRONG>
|
|
encounters a capability name which it does not recognize,
|
|
it infers its type (boolean, number or string) from the
|
|
syntax and makes an extended table entry for that capabil-
|
|
ity. The <STRONG>use_extended_names</STRONG> function makes this informa-
|
|
tion conditionally available to applications. The ncurses
|
|
library provides the data leaving most of the behavior to
|
|
applications:
|
|
|
|
<STRONG>o</STRONG> User-defined capability strings whose name begins with
|
|
"k" are treated as function keys.
|
|
|
|
<STRONG>o</STRONG> The types (boolean, number, string) determined by <STRONG>tic</STRONG>
|
|
can be inferred by successful calls on <STRONG>tigetflag</STRONG>, etc.
|
|
|
|
<STRONG>o</STRONG> If the capability name happens to be two characters,
|
|
the capability is also available through the termcap
|
|
interface.
|
|
|
|
While termcap is said to be extensible because it does not
|
|
use a predefined set of capabilities, in practice it has
|
|
been limited to the capabilities defined by terminfo
|
|
implementations. As a rule, user-defined capabilities
|
|
intended for use by termcap applications should be limited
|
|
to booleans and numbers to avoid running past the 1023
|
|
byte limit assumed by termcap implementations and their
|
|
applications. In particular, providing extended sets of
|
|
function keys (past the 60 numbered keys and the handful
|
|
of special named keys) is best done using the longer names
|
|
available using terminfo.
|
|
|
|
|
|
</PRE>
|
|
<H3><a name="h3-A-Sample-Entry">A Sample Entry</a></H3><PRE>
|
|
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,
|
|
am, mc5i, mir, msgr,
|
|
colors#8, cols#80, it#8, lines#24, ncv#3, pairs#64,
|
|
acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260
|
|
j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303
|
|
u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
|
|
bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J,
|
|
cr=^M, cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B,
|
|
cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
|
|
cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P,
|
|
dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K,
|
|
el1=\E[1K, home=\E[H, hpa=\E[%i%p1%dG, ht=\E[I, hts=\EH,
|
|
ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=^J,
|
|
indn=\E[%p1%dS, invis=\E[8m, kbs=^H, kcbt=\E[Z, kcub1=\E[D,
|
|
kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kich1=\E[L,
|
|
mc4=\E[4i, mc5=\E[5i, nel=\r\E[S, op=\E[39;49m,
|
|
rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, rin=\E[%p1%dT,
|
|
rmacs=\E[10m, rmpch=\E[10m, rmso=\E[m, rmul=\E[m,
|
|
s0ds=\E(B, s1ds=\E)B, s2ds=\E*B, s3ds=\E+B,
|
|
setab=\E[4%p1%dm, setaf=\E[3%p1%dm,
|
|
sgr=\E[0;10%?%p1%t;7%;
|
|
%?%p2%t;4%;
|
|
%?%p3%t;7%;
|
|
%?%p4%t;5%;
|
|
%?%p6%t;1%;
|
|
%?%p7%t;8%;
|
|
%?%p9%t;11%;m,
|
|
sgr0=\E[0;10m, smacs=\E[11m, smpch=\E[11m, smso=\E[7m,
|
|
smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n,
|
|
u8=\E[?%[;0123456789]c, u9=\E[c, vpa=\E[%i%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:
|
|
|
|
<STRONG>o</STRONG> Boolean capabilities which indicate that the terminal
|
|
has some particular feature,
|
|
|
|
<STRONG>o</STRONG> numeric capabilities giving the size of the terminal
|
|
or the size of particular delays, and
|
|
|
|
<STRONG>o</STRONG> string capabilities, which give a sequence which can
|
|
be used to perform particular terminal operations.
|
|
|
|
|
|
</PRE>
|
|
<H3><a name="h3-Types-of-Capabilities">Types of Capabilities</a></H3><PRE>
|
|
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>o</STRONG> <STRONG>\^</STRONG> for <STRONG>^</STRONG>,
|
|
|
|
<STRONG>o</STRONG> <STRONG>\\</STRONG> for <STRONG>\</STRONG>,
|
|
|
|
<STRONG>o</STRONG> <STRONG>\</STRONG>, for comma,
|
|
|
|
<STRONG>o</STRONG> <STRONG>\:</STRONG> for <STRONG>:</STRONG>,
|
|
|
|
<STRONG>o</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 termi-
|
|
nals, providing CS7 is specified. See <STRONG>stty(1)</STRONG>.
|
|
|
|
The reason for this quirk is to maintain binary com-
|
|
patibility of the compiled terminfo files with other
|
|
implementations, e.g., the SVr4 systems, which docu-
|
|
ment this. Compiled terminfo files use null-termi-
|
|
nated strings, with no lengths. Modifying this would
|
|
require a new binary format, which would not work with
|
|
other implementations.
|
|
|
|
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.
|
|
|
|
|
|
</PRE>
|
|
<H3><a name="h3-Fetching-Compiled-Descriptions">Fetching Compiled Descriptions</a></H3><PRE>
|
|
The <STRONG>ncurses</STRONG> library searches for terminal descriptions in
|
|
several places. It uses only the first description found.
|
|
The library has a compiled-in list of places to search
|
|
which can be overridden by environment variables. Before
|
|
starting to search, <STRONG>ncurses</STRONG> eliminates duplicates in its
|
|
search list.
|
|
|
|
<STRONG>o</STRONG> If the environment variable TERMINFO is set, it is
|
|
interpreted as the pathname of a directory containing
|
|
the compiled description you are working on. Only
|
|
that directory is searched.
|
|
|
|
<STRONG>o</STRONG> If TERMINFO is not set, <STRONG>ncurses</STRONG> will instead look in
|
|
the directory <STRONG>$HOME/.terminfo</STRONG> for a compiled descrip-
|
|
tion.
|
|
|
|
<STRONG>o</STRONG> Next, if the environment variable TERMINFO_DIRS is
|
|
set, <STRONG>ncurses</STRONG> will interpret the contents of that vari-
|
|
able as a list of colon-separated directories (or
|
|
database files) to be searched.
|
|
|
|
An empty directory name (i.e., if the variable begins
|
|
or ends with a colon, or contains adjacent colons) is
|
|
interpreted as the system location <EM>/usr/share/ter-</EM>
|
|
<EM>minfo</EM>.
|
|
|
|
<STRONG>o</STRONG> Finally, <STRONG>ncurses</STRONG> searches these compiled-in locations:
|
|
|
|
<STRONG>o</STRONG> a list of directories
|
|
(/usr/local/ncurses/share/terminfo:/usr/share/ter-
|
|
minfo), and
|
|
|
|
<STRONG>o</STRONG> the system terminfo directory, <EM>/usr/share/terminfo</EM>
|
|
(the compiled-in default).
|
|
|
|
|
|
</PRE>
|
|
<H3><a name="h3-Preparing-Descriptions">Preparing Descriptions</a></H3><PRE>
|
|
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.
|
|
|
|
|
|
</PRE>
|
|
<H3><a name="h3-Basic-Capabilities">Basic Capabilities</a></H3><PRE>
|
|
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,
|
|
|
|
|
|
</PRE>
|
|
<H3><a name="h3-Parameterized-Strings">Parameterized Strings</a></H3><PRE>
|
|
Cursor addressing and other strings requiring parameters
|
|
in the terminal are described by a parameterized string
|
|
capability, with <EM>printf</EM>-like escapes such as <EM>%x</EM> 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:
|
|
|
|
<STRONG>%%</STRONG> outputs "%"
|
|
|
|
<STRONG>%</STRONG><EM>[[</EM>:<EM>]flags][width[.precision]][</EM><STRONG>doxXs</STRONG><EM>]</EM>
|
|
as in <STRONG>printf</STRONG>, flags are <EM>[-+#]</EM> and <EM>space</EM>. 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>
|
|
|
|
<STRONG>%s</STRONG> print pop() like %s in <STRONG>printf</STRONG>
|
|
|
|
<STRONG>%p</STRONG><EM>[1-9]</EM>
|
|
push <EM>i</EM>'th parameter
|
|
|
|
<STRONG>%P</STRONG><EM>[a-z]</EM>
|
|
set dynamic variable <EM>[a-z]</EM> to pop()
|
|
|
|
<STRONG>%g</STRONG><EM>[a-z]/</EM>
|
|
get dynamic variable <EM>[a-z]</EM> and push it
|
|
|
|
<STRONG>%P</STRONG><EM>[A-Z]</EM>
|
|
set static variable <EM>[a-z]</EM> to <EM>pop()</EM>
|
|
|
|
<STRONG>%g</STRONG><EM>[A-Z]</EM>
|
|
get static variable <EM>[a-z]</EM> 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.
|
|
|
|
<STRONG>%'</STRONG><EM>c</EM><STRONG>'</STRONG> char constant <EM>c</EM>
|
|
|
|
<STRONG>%{</STRONG><EM>nn</EM><STRONG>}</STRONG>
|
|
integer constant <EM>nn</EM>
|
|
|
|
<STRONG>%l</STRONG> push strlen(pop)
|
|
|
|
<STRONG>%+</STRONG>, <STRONG>%-</STRONG>, <STRONG>%*</STRONG>, <STRONG>%/</STRONG>, <STRONG>%m</STRONG>
|
|
arithmetic (%m is mod): <EM>push(pop()</EM> <EM>op</EM> <EM>pop())</EM>
|
|
|
|
<STRONG>%&</STRONG>, <STRONG>%|</STRONG>, <STRONG>%^</STRONG>
|
|
bit operations (AND, OR and exclusive-OR): <EM>push(pop()</EM>
|
|
<EM>op</EM> <EM>pop())</EM>
|
|
|
|
<STRONG>%=</STRONG>, <STRONG>%></STRONG>, <STRONG>%<</STRONG>
|
|
logical operations: <EM>push(pop()</EM> <EM>op</EM> <EM>pop())</EM>
|
|
|
|
<STRONG>%A</STRONG>, <STRONG>%O</STRONG>
|
|
logical AND and OR operations (for conditionals)
|
|
|
|
<STRONG>%!</STRONG>, <STRONG>%~</STRONG>
|
|
unary operations (logical and bit complement):
|
|
push(op pop())
|
|
|
|
<STRONG>%i</STRONG> add 1 to first two parameters (for ANSI terminals)
|
|
|
|
<STRONG>%?</STRONG> <EM>expr</EM> <STRONG>%t</STRONG> <EM>thenpart</EM> <STRONG>%e</STRONG> <EM>elsepart</EM> <STRONG>%;</STRONG>
|
|
This forms an if-then-else. The <STRONG>%e</STRONG> <EM>elsepart</EM> is
|
|
optional. Usually the <STRONG>%?</STRONG> <EM>expr</EM> part pushes a value
|
|
onto the stack, and <STRONG>%t</STRONG> pops it from the stack, test-
|
|
ing if it is nonzero (true). If it is zero (false),
|
|
control passes to the <STRONG>%e</STRONG> (else) part.
|
|
|
|
It is possible to form else-if's a la Algol 68:
|
|
<STRONG>%?</STRONG> c1 <STRONG>%t</STRONG> b1 <STRONG>%e</STRONG> c2 <STRONG>%t</STRONG> b2 <STRONG>%e</STRONG> c3 <STRONG>%t</STRONG> b3 <STRONG>%e</STRONG> c4 <STRONG>%t</STRONG> b4 <STRONG>%e</STRONG> <STRONG>%;</STRONG>
|
|
|
|
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-then-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}%-". <STRONG>%P</STRONG> and <STRONG>%g</STRONG> 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.
|
|
|
|
|
|
</PRE>
|
|
<H3><a name="h3-Cursor-Motions">Cursor Motions</a></H3><PRE>
|
|
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 parameter-
|
|
ized 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>.
|
|
|
|
|
|
</PRE>
|
|
<H3><a name="h3-Area-Clears">Area Clears</a></H3><PRE>
|
|
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.)
|
|
|
|
|
|
</PRE>
|
|
<H3><a name="h3-Insert_delete-line-and-vertical-motions">Insert/delete line and vertical motions</a></H3><PRE>
|
|
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.
|
|
|
|
|
|
</PRE>
|
|
<H3><a name="h3-Insert_Delete-Character">Insert/Delete Character</a></H3><PRE>
|
|
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 clear-
|
|
ing 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 posi-
|
|
tion the cursor before the "abc" and put the terminal in
|
|
insert mode. If typing characters causes the rest of the
|
|
line to shift rigidly and characters to fall off the end,
|
|
then your terminal does not distinguish between blanks and
|
|
untyped positions. If the "abc" shifts over to the "def"
|
|
which then move together around the end of the current
|
|
line and onto the next as you insert, you have the second
|
|
type of terminal, and should give the capability <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 terminals whose insert
|
|
mode cannot be described with the single attribute.
|
|
|
|
Terminfo can describe both terminals which have an insert
|
|
mode, and terminals which send a simple sequence to open a
|
|
blank position on the current line. Give as <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 charac-
|
|
ter 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 pad-
|
|
ding 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.
|
|
|
|
|
|
</PRE>
|
|
<H3><a name="h3-Highlighting_-Underlining_-and-Visible-Bells">Highlighting, Underlining, and Visible Bells</a></H3><PRE>
|
|
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 spa-
|
|
ces 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%;%?%p4%t;5%;
|
|
%?%p1%p3%|%t;7%;%?%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>.
|
|
|
|
|
|
</PRE>
|
|
<H3><a name="h3-Keypad-and-Function-Keys">Keypad and Function Keys</a></H3><PRE>
|
|
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>o</STRONG> <STRONG>kll</STRONG> (home down),
|
|
|
|
<STRONG>o</STRONG> <STRONG>kbs</STRONG> (backspace),
|
|
|
|
<STRONG>o</STRONG> <STRONG>ktbc</STRONG> (clear all tabs),
|
|
|
|
<STRONG>o</STRONG> <STRONG>kctab</STRONG> (clear the tab stop in this column),
|
|
|
|
<STRONG>o</STRONG> <STRONG>kclr</STRONG> (clear screen or erase key),
|
|
|
|
<STRONG>o</STRONG> <STRONG>kdch1</STRONG> (delete character),
|
|
|
|
<STRONG>o</STRONG> <STRONG>kdl1</STRONG> (delete line),
|
|
|
|
<STRONG>o</STRONG> <STRONG>krmir</STRONG> (exit insert mode),
|
|
|
|
<STRONG>o</STRONG> <STRONG>kel</STRONG> (clear to end of line),
|
|
|
|
<STRONG>o</STRONG> <STRONG>ked</STRONG> (clear to end of screen),
|
|
|
|
<STRONG>o</STRONG> <STRONG>kich1</STRONG> (insert character or enter insert mode),
|
|
|
|
<STRONG>o</STRONG> <STRONG>kil1</STRONG> (insert line),
|
|
|
|
<STRONG>o</STRONG> <STRONG>knp</STRONG> (next page),
|
|
|
|
<STRONG>o</STRONG> <STRONG>kpp</STRONG> (previous page),
|
|
|
|
<STRONG>o</STRONG> <STRONG>kind</STRONG> (scroll forward/down),
|
|
|
|
<STRONG>o</STRONG> <STRONG>kri</STRONG> (scroll backward/up),
|
|
|
|
<STRONG>o</STRONG> <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 use-
|
|
ful when the effects of a 3 by 3 directional 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.
|
|
|
|
|
|
</PRE>
|
|
<H3><a name="h3-Tabs-and-Initialization">Tabs and Initialization</a></H3><PRE>
|
|
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 pre-
|
|
ceding 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>.
|
|
|
|
|
|
</PRE>
|
|
<H3><a name="h3-Delays-and-Padding">Delays and Padding</a></H3><PRE>
|
|
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.
|
|
|
|
|
|
</PRE>
|
|
<H3><a name="h3-Status-Lines">Status Lines</a></H3><PRE>
|
|
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.
|
|
|
|
|
|
</PRE>
|
|
<H3><a name="h3-Line-Graphics">Line Graphics</a></H3><PRE>
|
|
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.
|
|
|
|
|
|
</PRE>
|
|
<H3><a name="h3-Color-Handling">Color Handling</a></H3><PRE>
|
|
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> <STRONG>Set</STRONG> <STRONG>by</STRONG>
|
|
A_STANDOUT 0 1 sgr
|
|
A_UNDERLINE 1 2 sgr
|
|
A_REVERSE 2 4 sgr
|
|
A_BLINK 3 8 sgr
|
|
A_DIM 4 16 sgr
|
|
A_BOLD 5 32 sgr
|
|
A_INVIS 6 64 sgr
|
|
A_PROTECT 7 128 sgr
|
|
A_ALTCHARSET 8 256 sgr
|
|
A_HORIZONTAL 9 512 sgr1
|
|
A_LEFT 10 1024 sgr1
|
|
A_LOW 11 2048 sgr1
|
|
A_RIGHT 12 4096 sgr1
|
|
A_TOP 13 8192 sgr1
|
|
A_VERTICAL 14 16384 sgr1
|
|
A_ITALIC 15 32768 sitm
|
|
|
|
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.
|
|
|
|
|
|
</PRE>
|
|
<H3><a name="h3-Miscellaneous">Miscellaneous</a></H3><PRE>
|
|
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.
|
|
|
|
|
|
</PRE>
|
|
<H3><a name="h3-Glitches-and-Braindamage">Glitches and Braindamage</a></H3><PRE>
|
|
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>.
|
|
|
|
|
|
</PRE>
|
|
<H3><a name="h3-Similar-Terminals">Similar Terminals</a></H3><PRE>
|
|
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.
|
|
|
|
|
|
</PRE>
|
|
<H3><a name="h3-Pitfalls-of-Long-Entries">Pitfalls of Long Entries</a></H3><PRE>
|
|
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:
|
|
|
|
<STRONG>o</STRONG> a termcap entry before expansion is more than 1023
|
|
bytes long,
|
|
|
|
<STRONG>o</STRONG> and the application has only allocated a 1k buffer,
|
|
|
|
<STRONG>o</STRONG> 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,
|
|
|
|
<STRONG>o</STRONG> 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.
|
|
|
|
|
|
</PRE>
|
|
<H3><a name="h3-Binary-Compatibility">Binary Compatibility</a></H3><PRE>
|
|
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><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE>
|
|
Searching for terminal descriptions in <STRONG>$HOME/.terminfo</STRONG> and
|
|
TERMINFO_DIRS is not supported by older implementations.
|
|
|
|
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.
|
|
|
|
X/Open Curses does not mention italics. Portable applica-
|
|
tions must assume that numeric capabilities are signed
|
|
16-bit values. This includes the <EM>no</EM><STRONG>_</STRONG><EM>color</EM><STRONG>_</STRONG><EM>video</EM> (ncv)
|
|
capability. The 32768 mask value used for italics with
|
|
ncv can be confused with an absent or cancelled ncv. If
|
|
italics should work with colors, then the ncv value must
|
|
be specified, even if it is zero.
|
|
|
|
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><a name="h2-FILES">FILES</a></H2><PRE>
|
|
/usr/share/terminfo/?/* files containing terminal
|
|
descriptions
|
|
|
|
|
|
</PRE>
|
|
<H2><a name="h2-SEE-ALSO">SEE ALSO</a></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>printf(3)</STRONG>, <STRONG><A HREF="term.5.html">term(5)</A></STRONG>.
|
|
<STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>.
|
|
|
|
|
|
</PRE>
|
|
<H2><a name="h2-AUTHORS">AUTHORS</a></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>
|
|
<div class="nav">
|
|
<ul>
|
|
<li><a href="#h2-NAME">NAME</a></li>
|
|
<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li>
|
|
<li><a href="#h2-DESCRIPTION">DESCRIPTION</a>
|
|
<ul>
|
|
<li><a href="#h3-Predefined-Capabilities">Predefined Capabilities</a></li>
|
|
<li><a href="#h3-User-Defined-Capabilities">User-Defined Capabilities</a></li>
|
|
<li><a href="#h3-A-Sample-Entry">A Sample Entry</a></li>
|
|
<li><a href="#h3-Types-of-Capabilities">Types of Capabilities</a></li>
|
|
<li><a href="#h3-Fetching-Compiled-Descriptions">Fetching Compiled Descriptions</a></li>
|
|
<li><a href="#h3-Preparing-Descriptions">Preparing Descriptions</a></li>
|
|
<li><a href="#h3-Basic-Capabilities">Basic Capabilities</a></li>
|
|
<li><a href="#h3-Parameterized-Strings">Parameterized Strings</a></li>
|
|
<li><a href="#h3-Cursor-Motions">Cursor Motions</a></li>
|
|
<li><a href="#h3-Area-Clears">Area Clears</a></li>
|
|
<li><a href="#h3-Insert_delete-line-and-vertical-motions">Insert/delete line and vertical motions</a></li>
|
|
<li><a href="#h3-Insert_Delete-Character">Insert/Delete Character</a></li>
|
|
<li><a href="#h3-Highlighting_-Underlining_-and-Visible-Bells">Highlighting, Underlining, and Visible Bells</a></li>
|
|
<li><a href="#h3-Keypad-and-Function-Keys">Keypad and Function Keys</a></li>
|
|
<li><a href="#h3-Tabs-and-Initialization">Tabs and Initialization</a></li>
|
|
<li><a href="#h3-Delays-and-Padding">Delays and Padding</a></li>
|
|
<li><a href="#h3-Status-Lines">Status Lines</a></li>
|
|
<li><a href="#h3-Line-Graphics">Line Graphics</a></li>
|
|
<li><a href="#h3-Color-Handling">Color Handling</a></li>
|
|
<li><a href="#h3-Miscellaneous">Miscellaneous</a></li>
|
|
<li><a href="#h3-Glitches-and-Braindamage">Glitches and Braindamage</a></li>
|
|
<li><a href="#h3-Similar-Terminals">Similar Terminals</a></li>
|
|
<li><a href="#h3-Pitfalls-of-Long-Entries">Pitfalls of Long Entries</a></li>
|
|
<li><a href="#h3-Binary-Compatibility">Binary Compatibility</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li>
|
|
<li><a href="#h2-FILES">FILES</a></li>
|
|
<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
|
|
<li><a href="#h2-AUTHORS">AUTHORS</a></li>
|
|
</ul>
|
|
</div>
|
|
</BODY>
|
|
</HTML>
|