X-Git-Url: https://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=doc%2Fhtml%2Fman%2Fuser_caps.5.html;h=10b6f77649da23342a945c67dca73e3d64858ea1;hb=fc11bff62abb32a3e7724180a94c1068c148ea6c;hp=6d6e9126a28025603d05d3a89f0262fe6fefb1fe;hpb=8f6d94b8d6211a2323caef53fa4c96c475ec9a62;p=ncurses.git diff --git a/doc/html/man/user_caps.5.html b/doc/html/man/user_caps.5.html index 6d6e9126..10b6f776 100644 --- a/doc/html/man/user_caps.5.html +++ b/doc/html/man/user_caps.5.html @@ -1,6 +1,8 @@ - -user_caps 5 +user_caps 5 2024-03-16 ncurses 6.5 File formats - + -

user_caps 5

+

user_caps 5 2024-03-16 ncurses 6.5 File formats

-user_caps(5)                  File Formats Manual                 user_caps(5)
+user_caps(5)                     File formats                     user_caps(5)
 
 
 
 
 

NAME

-       user_caps - user-defined terminfo capabilities
+       user_caps - user-defined terminfo capability format
 
 
 

SYNOPSIS

-       tic -x, infocmp -x
+       infocmp -x
+
+       tic -x
 
 
 

DESCRIPTION

 
 

Background

-       Before  ncurses 5.0, terminfo databases used a fixed repertoire of ter-
-       minal capabilities designed for the SVr2 terminal database in 1984, and
-       extended  in stages through SVr4 (1989), and standardized in the Single
-       Unix Specification beginning in 1995.
+       Before  ncurses  5.0,  terminfo  databases  used  a fixed repertoire of
+       terminal capabilities designed for the SVr2 terminal database in  1984,
+       and  extended  in  stages  through SVr4 (1989), and standardized in the
+       Single Unix Specification beginning in 1995.
 
        Most of the extensions in this fixed repertoire were additions  to  the
-       tables of boolean, numeric and string capabilities.  Rather than change
-       the meaning of an existing capability, a new name was added.  The  ter-
-       minfo  database  uses a binary format; binary compatibility was ensured
-       by using a header which gave the number of items in the tables for each
-       type of capability.  The standardization was incomplete:
+       tables of Boolean, numeric and string capabilities.  Rather than change
+       the meaning of an existing capability,  a  new  name  was  added.   The
+       terminfo  database  uses  a  binary  format;  binary  compatibility was
+       ensured by using a header which gave the number of items in the  tables
+       for each type of capability.  The standardization was incomplete:
 
-       o   The binary format itself is not described in the X/Open Curses doc-
-           umentation.  Only the source format is described.
+       o   The  binary  format  itself  is  not described in the X/Open Curses
+           documentation.  Only the source format is described.
 
            Library developers rely upon the SVr4 documentation,  and  reverse-
            engineering the compiled terminfo files to match the binary format.
@@ -88,21 +92,21 @@
            needed, while others were added  (out  of  order)  to  comply  with
            X/Open Curses.
 
-           While  ncurses' repertoire of predefined capabilities is closest to
+           While  ncurses' repertoire of predefined capabilities is closest to
            Solaris, Solaris's terminfo database has a few differences from the
-           list  published by X/Open Curses.  For example, ncurses can be con-
-           figured with tables which match the terminal databases for AIX, HP-
-           UX or OSF/1, rather than the default Solaris-like configuration.
+           list  published  by  X/Open  Curses.   For  example, ncurses can be
+           configured with tables which match the terminal databases for  AIX,
+           HP-UX or OSF/1, rather than the default Solaris-like configuration.
 
-       o   In  SVr4  curses  and  ncurses, the terminal database is defined at
+       o   In  SVr4  curses  and  ncurses, the terminal database is defined at
            compile-time using a text file which lists the  different  terminal
            capabilities.
 
            In  principle,  the  text-file  can  be  extended,  but  doing this
            requires recompiling and reinstalling the library.   The  text-file
-           used in ncurses for terminal capabilities includes details for var-
-           ious systems past the documented X/Open Curses features.  For exam-
-           ple, ncurses supports these capabilities in each configuration:
+           used  in  ncurses  for  terminal  capabilities includes details for
+           various systems past the documented X/Open  Curses  features.   For
+           example, ncurses supports these capabilities in each configuration:
 
                memory_lock
                     (meml) lock memory above cursor
@@ -114,16 +118,16 @@
                     (box1) box characters primary set
 
            The memory lock/unlock capabilities were included because they were
-           used in the X11R6 terminal description for xterm.  The  box1  capa-
-           bility  is  used  in tic to help with terminal descriptions written
-           for AIX.
+           used in the X11R6 terminal  description  for  xterm(1).   The  box1
+           capability  is  used  in  tic  to  help  with terminal descriptions
+           written for AIX.
 
        During the 1990s, some users were reluctant to use terminfo in spite of
        its performance advantages over termcap:
 
-       o   The fixed repertoire prevented users from adding features for unan-
-           ticipated terminal improvements (or required them to reuse existing
-           capabilities as a workaround).
+       o   The  fixed  repertoire  prevented  users  from  adding features for
+           unanticipated terminal improvements  (or  required  them  to  reuse
+           existing capabilities as a workaround).
 
        o   The  limitation  to  16-bit  signed  integers  was  also mentioned.
            Because termcap stores everything as a string, it  could  represent
@@ -131,29 +135,29 @@
 
        Although  termcap's  extensibility  was  rarely  used (it was never the
        speaker who had actually used the feature), the criticism had a  point.
-       ncurses  5.0  provided a way to detect nonstandard capabilities, deter-
-       mine their type and optionally store and retrieve them in a  way  which
-       did  not  interfere  with other applications.  These are referred to as
-       user-defined capabilities because no  modifications  to  the  toolset's
+       ncurses   5.0  provided  a  way  to  detect  nonstandard  capabilities,
+       determine their type and optionally store and retrieve them  in  a  way
+       which did not interfere with other applications.  These are referred to
+       as user-defined capabilities because no modifications to the  toolset's
        predefined capability names are needed.
 
-       The  ncurses  utilities tic and infocmp have a command-line option "-x"
+       The  ncurses  utilities tic and infocmp have a command-line option "-x"
        to  control  whether  the  nonstandard  capabilities  are   stored   or
        retrieved.   A  library function use_extended_names is provided for the
        same purpose.
 
        When compiling a terminal database, if "-x" is set, tic  will  store  a
-       user-defined capability if the capability name is not one of the prede-
-       fined names.
+       user-defined  capability  if  the  capability  name  is  not one of the
+       predefined names.
 
-       Because ncurses provides  a  termcap  library  interface,  these  user-
+       Because ncurses provides  a  termcap  library  interface,  these  user-
        defined capabilities may be visible to termcap applications:
 
        o   The   termcap  interface  (like  all  implementations  of  termcap)
            requires that the capability names are 2-characters.
 
-           When the capability is simple enough for use in a termcap  applica-
-           tion, it is provided as a 2-character name.
+           When  the  capability  is  simple  enough  for  use  in  a  termcap
+           application, it is provided as a 2-character name.
 
        o   There  are  other user-defined capabilities which refer to features
            not usable in termcap, e.g., parameterized strings  that  use  more
@@ -162,25 +166,25 @@
            only capability names with 3 or more characters.
 
        o   Some terminals can send distinct strings for special keys (cursor-,
-           keypad- or function-keys) depending on modifier keys  (shift,  con-
-           trol,  etc.).   While  terminfo and termcap have a set of 60 prede-
-           fined function-key  names,  to  which  a  series  of  keys  can  be
-           assigned,  that  is  insufficient for more than a dozen keys multi-
-           plied by more than a couple of modifier combinations.  The  ncurses
-           database  uses a convention based on xterm to provide extended spe-
-           cial-key names.
+           keypad-  or  function-keys)  depending  on  modifier  keys  (shift,
+           control,  etc.).   While  terminfo  and  termcap  have  a set of 60
+           predefined function-key names, to which a series  of  keys  can  be
+           assigned,   that  is  insufficient  for  more  than  a  dozen  keys
+           multiplied by more than a couple  of  modifier  combinations.   The
+           ncurses  database  uses  a  convention based on xterm(1) to provide
+           extended special-key names.
 
            Fitting that into termcap's limitation of 2-character  names  would
-           be  pointless.   These  extended  keys are available only with ter-
-           minfo.
+           be   pointless.   These  extended  keys  are  available  only  with
+           terminfo.
 
 
-

Recognized capabilities

-       The ncurses library uses the user-definable  capabilities.   While  the
-       terminfo  database  may  have  other extensions, ncurses makes explicit
+

Recognized Capabilities

+       The ncurses library uses the user-definable  capabilities.   While  the
+       terminfo  database  may  have  other extensions, ncurses makes explicit
        checks for these:
 
-          AX boolean, asserts that the terminal interprets SGR 39 and  SGR  49
+          AX Boolean, asserts that the terminal interprets SGR 39 and  SGR  49
              by  resetting  the foreground and background color, respectively,
              to the default.
 
@@ -192,18 +196,24 @@
 
              The command "tput clear" does the same thing.
 
+          NQ Boolean, used to suppress a consistency  check  in  tic  for  the
+             ncurses  capabilities  in user6 through user9 (u6, u7, u8 and u9)
+             which tell how to query the terminal's cursor  position  and  its
+             device attributes.
+
           RGB
-             boolean, number or string, to assert  that  the  set_a_foreground
-             and  set_a_background  capabilities  correspond to direct colors,
-             using an RGB (red/green/blue) convention.  This capability allows
-             the  color_content  function to return appropriate values without
-             requiring the application to initialize colors using init_color.
+             Boolean,   number   or   string,   used   to   assert   that  the
+             set_a_foreground and set_a_background capabilities correspond  to
+             direct  colors,  using  an RGB (red/green/blue) convention.  This
+             capability  allows   the   color_content   function   to   return
+             appropriate   values   without   requiring   the  application  to
+             initialize colors using init_color.
 
-             The capability type determines the values which ncurses sees:
+             The capability type determines the values which ncurses sees:
 
-             boolean
+             Boolean
                 implies that the number of bits for red, green  and  blue  are
-                the  same.   Using  the maximum number of colors, ncurses adds
+                the  same.   Using  the maximum number of colors, ncurses adds
                 two, divides that sum by three, and assigns the result to red,
                 green and blue in that order.
 
@@ -212,9 +222,9 @@
                 comparison to red.
 
              number
-                tells  ncurses  what result to add to red, green and blue.  If
-                ncurses runs out of bits, blue (and green) lose just as in the
-                boolean case.
+                tells  ncurses  what result to add to red, green and blue.  If
+                ncurses runs out of bits, blue (and green) lose just as in the
+                Boolean case.
 
              string
                 explicitly  list  the  number  of bits used for red, green and
@@ -226,48 +236,121 @@
              could  define  RGB#1 to represent the standard eight ANSI colors,
              i.e., one bit per color.
 
-          U8 number, asserts that ncurses must use Unicode  values  for  line-
-             drawing characters, and that it should ignore the alternate char-
-             acter set capabilities when the locale uses UTF-8 encoding.   For
-             more  information,  see  the discussion of NCURSES_NO_UTF8_ACS in
-             ncurses(3x).
+          U8 number, asserts that ncurses must use Unicode  values  for  line-
+             drawing  characters,  and  that  it  should  ignore the alternate
+             character set capabilities when the locale uses  UTF-8  encoding.
+             For  more  information, see the discussion of NCURSES_NO_UTF8_ACS
+             in ncurses(3x).
 
              Set this capability to a nonzero value to enable it.
 
-          XM string, override ncurses's built-in string which enables/disables
-             xterm mouse mode.
+          XM string, override ncurses's built-in string which enables/disables
+             xterm(1) mouse mode.
+
+             ncurses  sends a character sequence to the terminal to initialize
+             mouse mode, and when the user clicks the  mouse  buttons  or  (in
+             certain  modes) moves the mouse, handles the characters sent back
+             by the terminal to tell it what was done with the mouse.
+
+             The mouse protocol  is  enabled  when  the  mask  passed  in  the
+             mousemask  function  is nonzero.  By default, ncurses handles the
+             responses for the X11 xterm mouse protocol.  It also knows  about
+             the  SGR  1006  xterm mouse protocol, but must to be told to look
+             for this specifically.  It will not be able to guess  which  mode
+             is  used,  because  the  responses  are  enough  alike  that only
+             confusion would result.
+
+             The XM capability has a single parameter.  If nonzero, the  mouse
+             protocol  should  be enabled.  If zero, the mouse protocol should
+             be disabled.  ncurses inspects this capability if it is  present,
+             to  see whether the 1006 protocol is used.  If so, it expects the
+             responses to use the SGR 1006 xterm mouse protocol.
+
+             The xterm mouse protocol is used  by  other  terminal  emulators.
+             The  terminal database uses building-blocks for the various xterm
+             mouse  protocols  which  can  be  used  in  customized   terminal
+             descriptions.
+
+             The terminal database building blocks for this mouse feature also
+             have  an  experimental  capability  xm.   The   "xm"   capability
+             describes  the mouse response.  Currently there is no interpreter
+             which would use  this  information  to  make  the  mouse  support
+             completely data-driven.
+
+             xm shows the format of the mouse responses.  In this experimental
+             capability, the parameters are
+
+               p1   y-ordinate
+
+               p2   x-ordinate
+
+               p3   button
+
+               p4   state, e.g., pressed or released
+
+               p5   y-ordinate starting region
 
+               p6   x-ordinate starting region
 
-

Extended key-definitions

-       Several terminals provide the ability to send distinct strings for com-
-       binations of modified special keys.  There  is  no  standard  for  what
+               p7   y-ordinate ending region
+
+               p8   x-ordinate ending region
+
+             Here are  examples  from  the  terminal  database  for  the  most
+             commonly used xterm mouse protocols:
+
+               xterm+x11mouse|X11 xterm mouse protocol,
+                       kmous=\E[M, XM=\E[?1000%?%p1%{1}%=%th%el%;,
+                       xm=\E[M
+                          %?%p4%t%p3%e%{3}%;%' '%+%c
+                          %p2%'!'%+%c
+                          %p1%'!'%+%c,
+
+               xterm+sm+1006|xterm SGR-mouse,
+                       kmous=\E[<, XM=\E[?1006;1000%?%p1%{1}%=%th%el%;,
+                       xm=\E[<%i%p3%d;
+                          %p1%d;
+                          %p2%d;
+                          %?%p4%tM%em%;,
+
+
+

Extended Key Definitions

+       Several  terminals  provide  the  ability  to send distinct strings for
+       combinations of modified special keys.  There is no standard  for  what
        those keys can send.
 
-       Since 1999, xterm has supported shift, control, alt, and meta modifiers
-       which produce distinct special-key strings.  In a terminal description,
-       ncurses  has  no special knowledge of the modifiers used.  Applications
-       can use the naming convention established for xterm to find these  spe-
-       cial keys in the terminal description.
-
-       Starting  with  the curses convention that key names begin with "k" and
-       that shifted special keys are  an  uppercase  name,  ncurses'  terminal
-       database defines these names to which a suffix is added:
-
-            Name   Description
-            ---------------------------------------------------------------
-            kDC    special form of kdch1 (delete character)
-            kDN    special form of kcud1 (cursor down)
-            kEND   special form of kend (End)
-            kHOM   special form of khome (Home)
-            kLFT   special form of kcub1 (cursor-left or cursor-back)
-            kNXT   special form of knext (Next, or Page-Down)
-            kPRV   special form of kprev (Prev, or Page-Up)
-            kRIT   special form of kcuf1 (cursor-right, or cursor-forward)
-            kUP    special form of kcuu1 (cursor-up)
+       Since  1999,  xterm(1)  has  supported  shift,  control,  alt, and meta
+       modifiers which produce distinct special-key strings.   In  a  terminal
+       description,  ncurses  has  no special knowledge of the modifiers used.
+       Applications can use the naming convention  established  for  xterm  to
+       find these special keys in the terminal description.
+
+       Starting  with  the  curses convention that capability codes describing
+       the input generated by a terminal's key caps begin with "k",  and  that
+       shifted  special  keys  use uppercase letters in their names, ncurses's
+       terminal database defines the following names  and  codes  to  which  a
+       suffix is added.
+
+            Code   Description
+            -------------------------------------------------------------------
+            kDC    shifted kdch1 (delete character)
+            kDN    shifted kcud1 (cursor down)
+            kEND   shifted kend (end)
+            kHOM   shifted khome (home)
+            kLFT   shifted kcub1 (cursor back)
+            kNXT   shifted knext (next)
+            kPRV   shifted kprev (previous)
+            kRIT   shifted kcuf1 (cursor forward)
+            kUP    shifted kcuu1 (cursor up)
+
+       Keycap  nomenclature on the Unix systems for which curses was developed
+       differs from today's ubiquitous descendants of the IBM  PC/AT  keyboard
+       layout.  In the foregoing, interpret "backward" as "left", "forward" as
+       "right", "next" as "page down", and "prev(ious)" as "page up".
 
        These are the suffixes used to denote the modifiers:
 
-            Value   Description
+            Value   Description
             ----------------------------------
             2       Shift
             3       Alt
@@ -285,34 +368,42 @@
             15      Meta + Ctrl + Alt
             16      Meta + Ctrl + Alt + Shift
 
-       None  of these are predefined; terminal descriptions can refer to names
-       which ncurses will allocate at runtime to key-codes.  To use these keys
-       in an ncurses program, an application could do this:
+       None of these are predefined; terminal descriptions can refer to  names
+       which ncurses will allocate at runtime to key-codes.  To use these keys
+       in an ncurses program, an application could do this:
 
-       o   using a list of extended key names, ask tigetstr(3x) for their val-
-           ues, and
+       o   using a list of extended key  names,  ask  tigetstr(3x)  for  their
+           values, and
 
-       o   given the list of values,  ask  key_defined(3x)  for  the  key-code
+       o   given  the  list  of  values,  ask key_defined(3x) for the key-code
            which would be returned for those keys by wgetch(3x).
 
 
 

PORTABILITY

-       The  "-x" extension feature of tic and infocmp has been adopted in Net-
-       BSD curses.  That implementation stores user-defined capabilities,  but
-       makes no use of these capabilities itself.
+       The "-x" extension feature of tic  and  infocmp  has  been  adopted  in
+       NetBSD  curses.   That implementation stores user-defined capabilities,
+       but makes no use of these capabilities itself.
+
+
+

AUTHORS

+       Thomas E. Dickey
+       beginning with ncurses 5.0 (1999)
 
 
 

SEE ALSO

-       tic(1m), infocmp(1m).
+       infocmp(1m), tic(1m)
 
+       The  terminal  database  section  NCURSES  USER-DEFINABLE  CAPABILITIES
+       summarizes  commonly-used  user-defined  capabilities which are used in
+       the terminal descriptions.  Some of those  features  are  mentioned  in
+       screen(1) or tmux(1).
 
-

AUTHORS

-       Thomas E. Dickey
-       beginning with ncurses 5.0 (1999)
+       XTerm  Control  Sequences  provides further information on the xterm(1)
+       features that are used in these extended capabilities.
 
 
 
-                                                                  user_caps(5)
+ncurses 6.5                       2024-03-16                      user_caps(5)