HPUX curses[3x]

curses(3X) curses(3X)
NAME
curses() - CRT screen handling and optimization package
SYNOPSIS
#include <curses.h>
cc [flags] file ... -lcurses [libraries]
DESCRIPTION
These routines provide a method for updating screens with reasonable
optimization. To initialize curses routines, initscr() must be called
before calling any other routine that deals with windows and screens.
endwin() should be called before exiting. To get character-at-a-time
input without echoing, (most interactive, screen oriented-programs
need this) after calling initscr() the program should call:
nonl(); cbreak(); noecho();
The full curses interface permits manipulation of data structures
called "windows", which can be thought of as two-dimensional arrays of
characters representing all or part of a CRT screen. A default window
called stdscr is supplied, and others can be created using newwin.
Windows are referred to by variables declared WINDOW *, the type
WINDOW is defined in <curses.h> to be a C structure. These data
structures are manipulated by using functions described below, among
which the most basic are move(), and addch(). (More general versions
of these functions are included. Their names begin with w, allowing
the programmer to specify a window. Routines not beginning with w
affect stdscr.) Then refresh() is called, telling the routines to make
the user's CRT screen resemble stdscr.
Mini-Curses is a subset of curses which does not allow manipulation of
more than one window. To invoke this subset, use -DMINICURSES as an
option to the cc(1) command. This level is smaller and faster than
full curses.
If the environment variable TERMINFO is defined, any program using
curses checks for a local terminal definition before checking in the
standard place. For example, if the standard place is
/usr/lib/terminfo, and TERM is set to vt100, the compiled file is
normally found in /usr/lib/terminfo/v/vt100 (the v is copied from the
first letter of vt100 to avoid creation of huge directories).
However, if TERMINFO is set to /usr/mark/myterms, curses first checks
/usr/mark/myterms/v/vt100, then, if that fails, checks
/usr/lib/terminfo/v/vt100. This is useful for developing experimental
definitions, or when write permission in /usr/lib/terminfo is not
available.
Functions
All routines listed here can be called when using the full curses.
Those marked with an asterisk can be called when using Mini-Curses.
Hewlett-Packard Company - 1 - HP-UX Release 9.0: August 1992
curses(3X) curses(3X)
addch(ch)* Add a character to stdscr (similar
to putchar(); wraps to next line at
end of line).
addstr(str)* Call addch() with each character in
str
attroff(attrs)* Turn off attributes named
attron(attrs)* Turn on attributes named
attrset(attrs)* Set current attributes to attrs
baudrate()* Current terminal speed
beep()* Sound beep on terminal
box(win, vert, hor) Draw a box around edges of win.
vert and hor are chars to use for
vertical and horizontal edges of
box
clear() Clear stdscr
clearok(win, bf) Clear screen before next redraw of
win
clrtobot() Clear to bottom of stdscr
clrtoeol() Clear to end of line on stdscr
cbreak()* Set cbreak mode
delay_output(ms)* Insert ms millisecond pause in
output
delch() Delete a character
deleteln() Delete a line
delwin(win) Delete win
doupdate() Update screen from all
wnooutrefresh()
echo()* Set echo mode
endwin()* End window modes
erase() Erase stdscr
erasechar() Return user's erase character
fixterm() Restore tty to ``in-curses'' state
flash() Flash screen or beep
flushinp()* Throw away any type-ahead
characters
getch() Get a char from tty
getstr(str) Get a string through stdscr
gettmode() Establish current tty modes
getyx(win, y, x) Get (y, x) co-ordinates
has_ic() True if terminal can do insert
character
has_il() True if terminal can do insert line
idlok(win, bf)* Use terminal's insert/delete line
if bf != 0
inch() Get char at current (y, x) co-
ordinates
initscr()* Initialize screens
insch(c) Insert a char
insertln() Insert a line
intrflush(win, bf) Interrupts flush output if bf is
TRUE
Hewlett-Packard Company - 2 - HP-UX Release 9.0: August 1992
curses(3X) curses(3X)
keypad(win, bf) Enable keypad input
killchar() Return current user's kill
character
leaveok(win, flag) Permissible to leave cursor
anywhere after refresh if flag !=0
for win; otherwise cursor must be
left at current position.
longname() Return verbose name of terminal
meta(win, flag)* Allow meta characters on input if
flag != 0
move(y, x)* move to (y, x) on stdscr
mvaddch(y, x, ch) move(y, x) then addch(ch)
mvaddstr(y, x, str) Similar...
mvcur(oldrow, oldcol, newrow, newcol)
Low-level cursor motion
mvdelch(y, x) Similar to delch(), but move(y, x)
first
mvgetch(y, x) etc.
mvgetstr(y, x)
mvinch(y, x)
mvinsch(y, x, c)
mvprintw(y, x, fmt, args)
mvscanw(y, x, fmt, args)
mvwaddch(win, y, x, ch)
mvwaddstr(win, y, x, str)
mvwdelch(win, y,, x)
mvwgetch(win, y,, x)
mvwgetstr(win, y,, x)
mvwin(win, by,, bx)
mvwinch(win, y,, x)
mvwinsch(win, y, x, c)
mvwprintw(win, y, x, fmt, args)
mvwscanw(win, y, x, fmt, args)
newpad(nlines, ncols) Create a new pad with given
dimensions
newterm(type, outfd, infd) Set up new terminal of given type
to output on outfd, using input (if
needed) from infd
newwin(lines, cols, begin_y, begin_x)
Create a new window
nl()* Set new-line mapping
nocbreak()* Unset cbreak mode
nodelay(win, bf) Enable nodelay input mode through
getch()
noecho()* Unset echo mode
nonl()* Unset new-line mapping
noraw()* Unset raw mode
overlay(win1, win2) Overlay win1 on win2
overwrite(win1, win2) Overwrite win1 on win2
pnoutrefresh(pad, pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol)
Similar to prefresh() but with no
Hewlett-Packard Company - 3 - HP-UX Release 9.0: August 1992
curses(3X) curses(3X)
output until doupdate() called
prefresh(pad, pminrow, pmincol, sminrow, smincol, smaxrow, smaxcol)
Refresh from pad starting with
given upper left corner of pad with
output to given portion of screen
printw(fmt, arg1, arg2, ...) printf() on stdscr
raw()* Set raw mode
refresh()* Make current screen look like
stdscr
resetterm()* Set tty modes to "out of curses"
state
resetty()* Reset tty flags to stored value
saveterm()* Save current modes as "in curses"
state
savetty()* Store current tty flags
scanw(fmt, arg1, arg2, ...) scanf() through stdscr
scroll(win) Scroll win one line
scrollok(win, flag) Allow terminal to scroll if flag !=
0
set_term(new) Switch to terminal new
setscrreg(t, b) set user scrolling region to lines
t through b
setterm(type) Establish terminal with given type
setupterm(term, filenum, errret)
standend()* Clear standout mode attribute
standout()* Set standout mode attribute
subwin(win, lines, cols, begin_y, begin_x)
create a subwindow
touchwin(win) Change all of win
traceoff() Turn off debugging trace output
traceon() Turn on debugging trace output
typeahead(fd) Use file descriptor fd to check
type-ahead
unctrl(ch)* Printable version of ch
waddch(win, ch) Add char to win
waddstr(win, str) Add string to win
wattroff(win, attrs) Turn off attrs in win
wattron(win, attrs) Turn on attrs in win
wattrset(win, attrs) Set attrs in win to attrs
wclear(win) Clear win
wclrtobot(win) Clear to bottom of win
wclrtoeol(win) Clear to end of line on win
wdelch(win, c) Delete char from win
wdeleteln(win) Delete line from win
werase(win) Erase win
wgetch(win) Get a char through win
wgetstr(win, str) Get a string through win
winch(win) Get char at current (y, x) in win
winsch(win, c) Insert char into win
winsertln(win) Insert line into win
Hewlett-Packard Company - 4 - HP-UX Release 9.0: August 1992
curses(3X) curses(3X)
wmove(win, y, x) Set current (y, x) co-ordinates on
win
wnoutrefresh(win) Refresh but no screen output
wprintw(win, fmt, arg1, arg2, ...) printf() on win
wrefresh(win) Make screen look like win
wscanw(win, fmt, arg1, arg2, ...) scanf() through win
wsetscrreg(win, t, b) Set scrolling region of win
wstandend(win) Clear standout attribute in win
wstandout(win) Set standout attribute in win
Terminfo Level Routines
These routines should be called by programs that need to deal directly
with the terminfo(4) database. Due to the low level of this
interface, its use is discouraged. Initially, setupterm() should be
called to define the set of terminal-dependent variables defined in
terminfo(4). The header files <curses.h> and <term.h> should be
included to get the definitions for these strings, numbers, and flags.
Parameterized strings should be passed through tparm() to instantiate
them. All terminfo(4) strings (including the output of tparm())
should be printed with tputs() or putp(). Before exiting, resetterm()
should be called to restore the tty modes. (Programs desiring shell
escapes or suspending with control-Z can call resetterm() before the
shell is called and fixterm() after returning from the shell.)
fixterm() Restore tty modes for terminfo use
(called by setupterm())
resetterm() Reset tty modes to state before
program entry
setupterm(term, fd, rc) Read in database. Terminal type is
the character string term, all
output is to HP-UX System file
descriptor fd. A status value is
returned in the integer pointed to
by rc: 1 is normal. The simplest
call would be setupterm(0, 1, 0)
which uses all defaults.
tparm(str, p1, p2, ..., p9) Instantiate string str with parms
p .
i
tputs(str, affcnt, putc) Apply padding info to string str.
affcnt is the number of lines
affected, or 1 if not applicable.
putc() is a putchar-like function
to which the characters are passed,
one at a time.
putp(str) A handy function that calls
tputs(str, 1, putchar).
Hewlett-Packard Company - 5 - HP-UX Release 9.0: August 1992
curses(3X) curses(3X)
vidputs(attrs, putc) output the string to put terminal
in video attribute mode attrs,
which is any combination of the
attributes listed below. Chars are
passed to putchar-like function
putc().
vidattr(attrs) Like vidputs but outputs through
putchar
set_curterm(term) Set the database pointed to by term
del_curterm(term) Free the space pointed to by term
Termcap Compatibility Routines
These routines were included as a conversion aid for programs that use
termcap. Calling parameters are the same as for termcap. They are
emulated using the terminfo(4) database. Their use in new software is
not recommended because they might be deleted in future HP-UX
releases.
tgetent(bp, name) look up termcap entry for name
tgetflag(id) get boolean entry for id
tgetnum(id) get numeric entry for id
tgetstr(id, area) get string entry for id
tgoto(cap, col, row) apply parms to given cap
tputs(cap, affcnt, fn) apply padding to cap calling fn as
putchar
Attributes
The following video attributes can be passed to the functions
attron(), attroff(), and attrset().
A_STANDOUT Terminal's best highlighting mode
A_UNDERLINE Underlining
A_REVERSE Reverse video
A_BLINK Blinking
A_DIM Half bright
A_BOLD Extra bright or bold
A_BLANK Blanking (invisible)
A_PROTECT Protected
A_ALTCHARSET Alternate character set
NLS Attributes
The following NLS attributes might be returned by inch():
A_FIRSTOF2 First byte of 16-bit character
A_SECOF2 Second byte of 16-bit character
Function Keys
Hewlett-Packard Company - 6 - HP-UX Release 9.0: August 1992
curses(3X) curses(3X)
The following function keys could possibly be returned by getch if
keypad has been enabled. Note that not all of these are currently
supported due to lack of definitions in terminfo or the terminal not
transmitting a unique code when the key is pressed.
Name Value Key name
KEY_BREAK 0401 break key (unreliable)
KEY_DOWN 0402 The four arrow keys ...
KEY_UP 0403
KEY_LEFT 0404
KEY_RIGHT 0405
KEY_HOME 0406 Home key (upward+left arrow)
KEY_BACKSPACE 0407 backspace (unreliable)
KEY_F0 0410 Function keys. Space reserved
for up to 64 keys.
KEY_F(n) (KEY_F0+(n)) Formula for fn.
KEY_DL 0510 Delete line
KEY_IL 0511 Insert line
KEY_DC 0512 Delete character
KEY_IC 0513 Insert char or enter insert
mode
KEY_EIC 0514 Exit insert char mode
KEY_CLEAR 0515 Clear screen
KEY_EOS 0516 Clear to end of screen
KEY_EOL 0517 Clear to end of line
KEY_SF 0520 Scroll 1 line forward
KEY_SR 0521 Scroll 1 line backwards
(reverse)
KEY_NPAGE 0522 Next page
KEY_PPAGE 0523 Previous page
KEY_STAB 0524 Set tab
KEY_CTAB 0525 Clear tab
KEY_CATAB 0526 Clear all tabs
KEY_ENTER 0527 Enter or send (unreliable)
KEY_SRESET 0530 soft (partial) reset
(unreliable)
KEY_RESET 0531 reset or hard reset
(unreliable)
KEY_PRINT 0532 print or copy
KEY_LL 0533 home down or bottom (lower
left)
Window-Change Signal Support
All curses routines except the min-curses subset provide SIGWINCH
support. Applications that are linked with curses routines
immediately redraw the screen in response to window size changes. The
environmental variables LINES and COLUMNS are also updated so that
children processes work with the correct window size.
If there is a window size reduction, part of the application display
is trimmed. The trimmed portion is saved in internal memory at the
Hewlett-Packard Company - 7 - HP-UX Release 9.0: August 1992
curses(3X) curses(3X)
time of resize. Moreover, this portion is not affected by the
application as long as it stays invisible. If the application's
cursor is trimmed, unexpected behavior results.
On the other hand, if the window is enlarged, any previously trimmed
area is re-displayed (and re-activated). If the window is enlarged
beyond its initial size, the extra area is padded with blank spaces.
The default SIGWINCH support can be disabled by installing a custom
SIGWINCH signal handler via the sigvector command (see sigvector(2)).
WARNINGS
HP supports only terminals listed on the current list of HP-supported
devices. However, the terminfo(4) database may contain information
for other terminals besides those that are officially supported. If
you use such unsupported terminals, they may not work correctly.
The endwin() routine does not release memory allocated by the
initscr() routine.
Repeated calls to initscr() can cause a program to use more memory
than was intended.
Some of these routines call malloc() to allocate memory (see
malloc(3C)) and can therefore fail for any of the reasons described in
the malloc(3C) manual entry.
SEE ALSO
sigvector(2), terminfo(4).
Using Curses and Terminfo, tutorial in Terminal Control User's Guide.
STANDARDS CONFORMANCE
curses(): SVID2, XPG2, XPG3, XPG4
Hewlett-Packard Company - 8 - HP-UX Release 9.0: August 1992