'\" te .\" Copyright 1989 AT&T .\" Portions Copyright (c) 1996, Sun Microsystems, Inc. All Rights Reserved. .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License. .\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner] .TH curs_kernel 3CURSES "31 Dec 1996" "SunOS 5.11" "Curses Library Functions" .SH NAME curs_kernel, def_prog_mode, def_shell_mode, reset_prog_mode, reset_shell_mode, resetty, savetty, getsyx, setsyx, ripoffline, curs_set, napms \- low-level curses routines .SH SYNOPSIS .LP .nf \fBcc\fR [ \fIflag\fR ... ] \fIfile\fR ... \fB-lcurses\fR [ \fIlibrary\fR ... ] #include \fBint\fR \fBdef_prog_mode\fR(\fBvoid\fR); .fi .LP .nf \fBint\fR \fBdef_shell_mode\fR(\fBvoid\fR); .fi .LP .nf \fBint\fR \fBreset_prog_mode\fR(\fBvoid\fR); .fi .LP .nf \fBint\fR \fBreset_shell_mode\fR(\fBvoid\fR); .fi .LP .nf \fBint\fR \fBresetty\fR(\fBvoid\fR); .fi .LP .nf \fBint\fR \fBsavetty\fR(\fBvoid\fR); .fi .LP .nf \fBint\fR \fBgetsyx\fR(\fBint\fR \fIy\fR, \fBint\fR \fIx\fR); .fi .LP .nf \fBint\fR \fBsetsyx\fR(\fBint\fR \fIy\fR, \fBint\fR \fIx\fR); .fi .LP .nf \fBint\fR \fBripoffline\fR(\fBint\fR \fIline\fR, \fBint (*\fR\fIinit\fR)(WINDOW *, \fBint)\fR); .fi .LP .nf \fBint\fR \fBcurs_set\fR(\fBint\fR \fIvisibility\fR); .fi .LP .nf \fBint\fR \fBnapms\fR(\fBint\fR \fIms\fR); .fi .SH DESCRIPTION .sp .LP The following routines give low-level access to various \fBcurses\fR functionality. Theses routines typically are used inside library routines. .sp .LP The \fBdef_prog_mode()\fR and \fBdef_shell_mode()\fR routines save the current terminal modes as the ``program'' (in \fBcurses\fR) or ``shell'' (not in \fBcurses\fR \fB)\fR state for use by the \fBreset_prog_mode()\fR and \fBreset_shell_mode()\fR routines. This is done automatically by \fBinitscr()\fR. .sp .LP The \fBreset_prog_mode()\fR and \fBreset_shell_mode()\fR routines restore the terminal to ``program'' (in \fBcurses\fR) or ``shell'' (out of \fBcurses\fR) state. These are done automatically by \fBendwin()\fR and, after an \fBendwin()\fR, by \fBdoupdate()\fR, so they normally are not called. .sp .LP The \fBresetty()\fR and \fBsavetty()\fR routines save and restore the state of the terminal modes. \fBsavetty()\fR saves the current state in a buffer and \fBresetty()\fR restores the state to what it was at the last call to \fBsavetty()\fR. .sp .LP With the \fBgetsyx()\fR routine, the current coordinates of the virtual screen cursor are returned in \fIy\fR and \fIx.\fR If \fBleaveok()\fR is currently \fBTRUE\fR, then \fB\(mi1\fR,\fB\(mi1\fR is returned. If lines have been removed from the top of the screen, using \fBripoffline()\fR, \fIy\fR and \fIx\fR include these lines; therefore, \fIy\fR and \fIx\fR should be used only as arguments for \fBsetsyx()\fR. .sp .LP With the \fBsetsyx()\fR routine, the virtual screen cursor is set to \fIy\fR, \fIx\fR. If \fIy\fR and \fIx\fR are both \fB\(mi1\fR, then \fBleaveok()\fR is set. The two routines \fBgetsyx()\fR and \fBsetsyx()\fR are designed to be used by a library routine, which manipulates \fBcurses\fR windows but does not want to change the current position of the program's cursor. The library routine would call \fBgetsyx()\fR at the beginning, do its manipulation of its own windows, do a \fBwnoutrefresh()\fR on its windows, call \fBsetsyx()\fR, and then call \fBdoupdate()\fR. .sp .LP The \fBripoffline()\fR routine provides access to the same facility that \fBslk_init()\fR (see \fBcurs_slk\fR(3CURSES)) uses to reduce the size of the screen. \fBripoffline()\fR must be called before \fBinitscr()\fR or \fBnewterm()\fR is called. If \fBline\fR is positive, a line is removed from the top of \fBstdscr()\fR; if \fBline\fR is negative, a line is removed from the bottom. When this is done inside \fBinitscr()\fR, the routine \fBinit()\fR (supplied by the user) is called with two arguments: a window pointer to the one-line window that has been allocated and an integer with the number of columns in the window. Inside this initialization routine, the integer variables \fBLINES\fR and \fBCOLS\fR (defined in \fB\fR) are not guaranteed to be accurate and \fBwrefresh()\fR or \fBdoupdate()\fR must not be called. It is allowable to call \fBwnoutrefresh()\fR during the initialization routine. .sp .LP \fBripoffline()\fR can be called up to five times before calling \fBinitscr()\fR or \fBnewterm()\fR. .sp .LP With the \fBcurs_set()\fR routine, the cursor state is set to invisible, normal, or very visible for \fIvisibility\fR equal to \fB0\fR, \fB1\fR, or \fB2\fR respectively. If the terminal supports the \fIvisibility\fR requested, the previous \fIcursor\fR state is returned; otherwise, \fBERR\fR is returned. .sp .LP The \fBnapms()\fR routine is used to sleep for \fIms\fR milliseconds. .SH RETURN VALUES .sp .LP Except for \fBcurs_set()\fR, these routines always return \fBOK\fR. \fBcurs_set()\fR returns the previous cursor state, or \fBERR\fR if the requested \fIvisibility\fR is not supported. .SH ATTRIBUTES .sp .LP See \fBattributes\fR(5) for descriptions of the following attributes: .sp .sp .TS tab() box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) . ATTRIBUTE TYPEATTRIBUTE VALUE _ MT-LevelUnsafe .TE .SH SEE ALSO .sp .LP \fBcurs_initscr\fR(3CURSES), \fBcurs_outopts\fR(3CURSES), \fBcurs_refresh\fR(3CURSES), \fBcurs_scr_dump\fR(3CURSES), \fBcurs_slk\fR(3CURSES), \fBcurses\fR(3CURSES), \fBattributes\fR(5) .SH NOTES .sp .LP The header <\fBcurses.h\fR> automatically includes the headers <\fBstdio.h\fR> and <\fBunctrl.h\fR>. .sp .LP Note that \fBgetsyx()\fR is a macro, so an ampersand (\fB&\fR) is not necessary before the variables \fIy\fR and \fIx\fR.