123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353 |
- .\"***************************************************************************
- .\" Copyright (c) 1999-2007,2008 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: curs_terminfo.3x,v 1.30 2008/08/16 20:53:27 tom Exp $
- .TH curs_terminfo 3X ""
- .ds n 5
- .na
- .hy 0
- .SH NAME
- \fBdel_curterm\fR,
- \fBmvcur\fR,
- \fBputp\fR,
- \fBrestartterm\fR,
- \fBset_curterm\fR,
- \fBsetterm\fR,
- \fBsetupterm\fR,
- \fBtigetflag\fR,
- \fBtigetnum\fR,
- \fBtigetstr\fR,
- \fBtparm\fR,
- \fBtputs\fR,
- \fBvid_attr\fR,
- \fBvid_puts\fR,
- \fBvidattr\fR,
- \fBvidputs\fR - \fBcurses\fR interfaces to terminfo database
- .ad
- .hy
- .SH SYNOPSIS
- .nf
- \fB#include <curses.h>\fR
- .br
- \fB#include <term.h>\fR
- .PP
- \fBint setupterm(char *\fR\fIterm\fR\fB, int \fR\fIfildes\fR\fB, int *\fR\fIerrret\fR\fB);\fR
- .br
- \fBint setterm(char *\fR\fIterm\fR\fB);\fR
- .br
- \fBTERMINAL *set_curterm(TERMINAL *\fR\fInterm\fR\fB);\fR
- .br
- \fBint del_curterm(TERMINAL *\fR\fIoterm\fR\fB);\fR
- .br
- \fBint restartterm(char *\fR\fIterm\fR\fB, int \fR\fIfildes\fR\fB, int *\fR\fIerrret\fR\fB);\fR
- .br
- \fBchar *tparm(char *\fR\fIstr\fR\fB, ...);\fR
- .br
- \fBint tputs(const char *\fR\fIstr\fR\fB, int \fR\fIaffcnt\fR\fB, int (*\fR\fIputc\fR\fB)(int));\fR
- .br
- \fBint putp(const char *\fR\fIstr\fR\fB);\fR
- .br
- \fBint vidputs(chtype \fR\fIattrs\fR\fB, int (*\fR\fIputc\fR\fB)(int));\fR
- .br
- \fBint vidattr(chtype \fR\fIattrs\fR\fB);\fR
- .br
- \fBint vid_puts(attr_t \fR\fIattrs\fR\fB, short \fR\fIpair\fR\fB, void *\fR\fIopts\fR\fB, int (*\fR\fIputc\fR\fB)(char));\fR
- .br
- \fBint vid_attr(attr_t \fR\fIattrs\fR\fB, short \fR\fIpair\fR\fB, void *\fR\fIopts\fR\fB);\fR
- .br
- \fBint mvcur(int \fR\fIoldrow\fR\fB, int \fR\fIoldcol\fR\fB, int \fR\fInewrow\fR, int \fR\fInewcol\fR\fB);\fR
- .br
- \fBint tigetflag(char *\fR\fIcapname\fR\fB);\fR
- .br
- \fBint tigetnum(char *\fR\fIcapname\fR\fB);\fR
- .br
- \fBchar *tigetstr(char *\fR\fIcapname\fR\fB);\fR
- .br
- .fi
- .SH DESCRIPTION
- These low-level routines must be called by programs that have to deal
- directly with the \fBterminfo\fR database to handle certain terminal
- capabilities, such as programming function keys. For all other
- functionality, \fBcurses\fR routines are more suitable and their use is
- recommended.
- .PP
- Initially, \fBsetupterm\fR should be called. Note that
- \fBsetupterm\fR is automatically called by \fBinitscr\fR and
- \fBnewterm\fR. This defines the set of terminal-dependent variables
- [listed in \fBterminfo\fR(\*n)].
- The \fBterminfo\fR variables
- \fBlines\fR and \fBcolumns\fR are initialized by \fBsetupterm\fR as
- follows:
- .RS
- .PP
- If \fBuse_env(FALSE)\fR has been called, values for
- \fBlines\fR and \fBcolumns\fR specified in \fBterminfo\fR are used.
- .PP
- Otherwise, if the environment variables \fBLINES\fR and \fBCOLUMNS\fR
- exist, their values are used. If these environment variables do not
- exist and the program is running in a window, the current window size
- is used. Otherwise, if the environment variables do not exist, the
- values for \fBlines\fR and \fBcolumns\fR specified in the
- \fBterminfo\fR database are used.
- .RE
- .PP
- The header files \fBcurses.h\fR and \fBterm.h\fR should be included (in this
- order) to get the definitions for these strings, numbers, and flags.
- Parameterized strings should be passed through \fBtparm\fR to instantiate them.
- All \fBterminfo\fR strings [including the output of \fBtparm\fR] should be printed
- with \fBtputs\fR or \fBputp\fR. Call the \fBreset_shell_mode\fR to restore the
- tty modes before exiting [see \fBcurs_kernel\fR(3X)]. Programs which use
- cursor addressing should output \fBenter_ca_mode\fR upon startup and should
- output \fBexit_ca_mode\fR before exiting. Programs desiring shell escapes
- should call
- .PP
- \fBreset_shell_mode\fR and output \fBexit_ca_mode\fR before the shell
- is called and should output \fBenter_ca_mode\fR and call
- \fBreset_prog_mode\fR after returning from the shell.
- .PP
- The \fBsetupterm\fR routine reads in the \fBterminfo\fR database,
- initializing the \fBterminfo\fR structures, but does not set up the
- output virtualization structures used by \fBcurses\fR. The terminal
- type is the character string \fIterm\fR; if \fIterm\fR is null, the
- environment variable \fBTERM\fR is used.
- All output is to file descriptor \fBfildes\fR which is initialized for output.
- If \fIerrret\fR is not null,
- then \fBsetupterm\fR returns \fBOK\fR or
- \fBERR\fR and stores a status value in the integer pointed to by
- \fIerrret\fR.
- A return value of \fBOK\fR combined with status of \fB1\fR in \fIerrret\fR
- is normal.
- If \fBERR\fR is returned, examine \fIerrret\fR:
- .RS
- .TP 5
- .B 1
- means that the terminal is hardcopy, cannot be used for curses applications.
- .TP 5
- .B 0
- means that the terminal could not be found,
- or that it is a generic type,
- having too little information for curses applications to run.
- .TP 5
- .B -1
- means that the \fBterminfo\fR database could not be found.
- .RE
- .PP
- If \fIerrret\fR is
- null, \fBsetupterm\fR prints an error message upon finding an error
- and exits. Thus, the simplest call is:
- .sp
- \fBsetupterm((char *)0, 1, (int *)0);\fR,
- .sp
- which uses all the defaults and sends the output to \fBstdout\fR.
- .PP
- The \fBsetterm\fR routine is being replaced by \fBsetupterm\fR. The call:
- .sp
- \fBsetupterm(\fR\fIterm\fR\fB, 1, (int *)0)\fR
- .sp
- provides the same functionality as \fBsetterm(\fR\fIterm\fR\fB)\fR.
- The \fBsetterm\fR routine is included here for BSD compatibility, and
- is not recommended for new programs.
- .PP
- The \fBset_curterm\fR routine sets the variable \fBcur_term\fR to
- \fInterm\fR, and makes all of the \fBterminfo\fR boolean, numeric, and
- string variables use the values from \fInterm\fR. It returns the old value
- of \fBcur_term\fR.
- .PP
- The \fBdel_curterm\fR routine frees the space pointed to by
- \fIoterm\fR and makes it available for further use. If \fIoterm\fR is
- the same as \fBcur_term\fR, references to any of the \fBterminfo\fR
- boolean, numeric, and string variables thereafter may refer to invalid
- memory locations until another \fBsetupterm\fR has been called.
- .PP
- The \fBrestartterm\fR routine is similar to \fBsetupterm\fR and \fBinitscr\fR,
- except that it is called after restoring memory to a previous state (for
- example, when reloading a game saved as a core image dump). It assumes that
- the windows and the input and output options are the same as when memory was
- saved, but the terminal type and baud rate may be different. Accordingly,
- it saves various tty state bits, calls \fBsetupterm\fP,
- and then restores the bits.
- .PP
- The \fBtparm\fR routine instantiates the string \fIstr\fR with
- parameters \fIpi\fR. A pointer is returned to the result of \fIstr\fR
- with the parameters applied.
- .PP
- The \fBtputs\fR routine applies padding information to the string
- \fIstr\fR and outputs it. The \fIstr\fR must be a terminfo string
- variable or the return value from \fBtparm\fR, \fBtgetstr\fR, or
- \fBtgoto\fR. \fIaffcnt\fR is the number of lines affected, or 1 if
- not applicable. \fIputc\fR is a \fBputchar\fR-like routine to which
- the characters are passed, one at a time.
- .PP
- The \fBputp\fR routine calls \fBtputs(\fR\fIstr\fR\fB, 1, putchar)\fR.
- Note that the output of \fBputp\fR always goes to \fBstdout\fR, not to
- the \fIfildes\fR specified in \fBsetupterm\fR.
- .PP
- The \fBvidputs\fR routine displays the string on the terminal in the
- video attribute mode \fIattrs\fR, which is any combination of the
- attributes listed in \fBcurses\fR(3X). The characters are passed to
- the \fBputchar\fR-like routine \fIputc\fR.
- .PP
- The \fBvidattr\fR routine is like the \fBvidputs\fR routine, except
- that it outputs through \fBputchar\fR.
- .PP
- The \fBvid_attr\fR and \fBvid_puts\fR routines correspond to vidattr and vidputs,
- respectively.
- They use a set of arguments for representing the video attributes plus color,
- i.e.,
- one of type attr_t for the attributes and one of short for
- the color_pair number.
- The \fBvid_attr\fR and \fBvid_puts\fR routines
- are designed to use the attribute constants with the \fIWA_\fR prefix.
- The opts argument is reserved for future use.
- Currently, applications must provide a null pointer for that argument.
- .PP
- The \fBmvcur\fR routine provides low-level cursor motion. It takes
- effect immediately (rather than at the next refresh).
- .PP
- The \fBtigetflag\fR, \fBtigetnum\fR and \fBtigetstr\fR routines return
- the value of the capability corresponding to the \fBterminfo\fR
- \fIcapname\fR passed to them, such as \fBxenl\fR.
- .PP
- The \fBtigetflag\fR routine returns the value \fB-1\fR if
- \fIcapname\fR is not a boolean capability,
- or \fB0\fR if it is canceled or absent from the terminal description.
- .PP
- The \fBtigetnum\fR routine returns the value \fB-2\fR if
- \fIcapname\fR is not a numeric capability,
- or \fB-1\fR if it is canceled or absent from the terminal description.
- .PP
- The \fBtigetstr\fR routine returns the value \fB(char *)-1\fR
- if \fIcapname\fR is not a string capability,
- or \fB0\fR if it is canceled or absent from the terminal description.
- .PP
- The \fIcapname\fR for each capability is given in the table column entitled
- \fIcapname\fR code in the capabilities section of \fBterminfo\fR(\*n).
- .sp
- .RS
- \fBchar *boolnames[]\fR, \fB*boolcodes[]\fR, \fB*boolfnames[]\fR
- .sp
- \fBchar *numnames[]\fR, \fB*numcodes[]\fR, \fB*numfnames[]\fR
- .sp
- \fBchar *strnames[]\fR, \fB*strcodes[]\fR, \fB*strfnames[]\fR
- .RE
- .PP
- These null-terminated arrays contain the \fIcapnames\fR, the
- \fBtermcap\fR codes, and the full C names, for each of the
- \fBterminfo\fR variables.
- .SH RETURN VALUE
- Routines that return an integer return \fBERR\fR upon failure and \fBOK\fR
- (SVr4 only specifies "an integer value other than \fBERR\fR") upon successful
- completion, unless otherwise noted in the preceding routine descriptions.
- .PP
- Routines that return pointers always return \fBNULL\fR on error.
- .PP
- X/Open defines no error conditions.
- In this implementation
- .RS
- .TP 5
- \fBdel_curterm\fP
- returns an error
- if its terminal parameter is null.
- .TP 5
- \fBputp\fP
- calls \fBtputs\fP, returning the same error-codes.
- .TP 5
- \fBrestartterm\fP
- returns an error
- if the associated call to \fBsetupterm\fP returns an error.
- .TP 5
- \fBsetupterm\fP
- returns an error
- if it cannot allocate enough memory, or
- create the initial windows (stdscr, curscr, newscr).
- Other error conditions are documented above.
- .TP 5
- \fBtputs\fP
- returns an error if the string parameter is null.
- It does not detect I/O errors:
- X/Open states that \fBtputs\fP ignores the return value
- of the output function \fIputc\fP.
- .RE
- .SH NOTES
- The \fBsetupterm\fR routine should be used in place of \fBsetterm\fR.
- It may be useful when you want to test for terminal capabilities without
- committing to the allocation of storage involved in \fBinitscr\fR.
- .PP
- Note that \fBvidattr\fR and \fBvidputs\fR may be macros.
- .SH PORTABILITY
- The function \fBsetterm\fR is not described by X/Open and must
- be considered non-portable. All other functions are as described by X/Open.
- .PP
- \fBsetupterm\fP copies the terminal name to the array \fBttytype\fP.
- This is not part of X/Open Curses, but is assumed by some applications.
- .PP
- In System V Release 4, \fBset_curterm\fR has an \fBint\fR return type and
- returns \fBOK\fR or \fBERR\fR. We have chosen to implement the X/Open Curses
- semantics.
- .PP
- In System V Release 4, the third argument of \fBtputs\fR has the type
- \fBint (*putc)(char)\fR.
- .PP
- At least one implementation of X/Open Curses (Solaris) returns a value
- other than OK/ERR from \fBtputs\fP.
- That returns the length of the string, and does no error-checking.
- .PP
- X/Open Curses prototypes \fBtparm\fR with a fixed number of parameters,
- rather than a variable argument list.
- This implementation uses a variable argument list.
- Portable applications should provide 9 parameters after the format;
- zeroes are fine for this purpose.
- .PP
- X/Open notes that after calling \fBmvcur\fR, the curses state may not match the
- actual terminal state, and that an application should touch and refresh
- the window before resuming normal curses calls.
- Both ncurses and System V Release 4 curses implement \fBmvcur\fR using
- the SCREEN data allocated in either \fBinitscr\fR or \fBnewterm\fR.
- So though it is documented as a terminfo function,
- \fBmvcur\fR is really a curses function which is not well specified.
- .PP
- X/Open states that the old location must be given for \fBmvcur\fP.
- This implementation allows the caller to use -1's for the old ordinates.
- In that case, the old location is unknown.
- .PP
- Extended terminal capability names, e.g., as defined by \fBtic\ -x\fP,
- are not stored in the arrays described in this section.
- .SH SEE ALSO
- \fBcurses\fR(3X),
- \fBcurs_initscr\fR(3X),
- \fBcurs_kernel\fR(3X),
- \fBcurs_termcap\fR(3X),
- \fBputc\fR(3),
- \fBterminfo\fR(\*n)
- .\"#
- .\"# The following sets edit modes for GNU EMACS
- .\"# Local Variables:
- .\"# mode:nroff
- .\"# fill-column:79
- .\"# End:
|