summaryrefslogtreecommitdiff
path: root/static/netbsd/man3/curses_screen.3
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:55:15 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:55:15 -0400
commit253e67c8b3a72b3a4757fdbc5845297628db0a4a (patch)
treeadf53b66087aa30dfbf8bf391a1dadb044c3bf4d /static/netbsd/man3/curses_screen.3
parenta9157ce950dfe2fc30795d43b9d79b9d1bffc48b (diff)
docs: Added All NetBSD Manuals
Diffstat (limited to 'static/netbsd/man3/curses_screen.3')
-rw-r--r--static/netbsd/man3/curses_screen.3317
1 files changed, 317 insertions, 0 deletions
diff --git a/static/netbsd/man3/curses_screen.3 b/static/netbsd/man3/curses_screen.3
new file mode 100644
index 00000000..d01ad8c6
--- /dev/null
+++ b/static/netbsd/man3/curses_screen.3
@@ -0,0 +1,317 @@
+.\" $NetBSD: curses_screen.3,v 1.30 2025/04/11 23:57:20 uwe Exp $
+.\"
+.\" Copyright (c) 2002
+.\" Brett Lymn (blymn@NetBSD.org, brett_lymn@yahoo.com.au)
+.\"
+.\" This code is donated to the NetBSD Foundation by the Author.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\" 3. The name of the Author may not be used to endorse or promote
+.\" products derived from this software without specific prior written
+.\" permission.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND
+.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE
+.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.\"
+.Dd May 16, 2024
+.Dt CURSES_SCREEN 3
+.Os
+.Sh NAME
+.Nm curses_screen ,
+.Nm filter ,
+.Nm ripoffline ,
+.Nm use_env ,
+.Nm newterm ,
+.Nm set_term ,
+.Nm delscreen ,
+.Nm endwin ,
+.Nm initscr ,
+.Nm isendwin ,
+.Nm is_term_resized ,
+.Nm resize_term ,
+.Nm resizeterm ,
+.Nm setterm ,
+.Nm set_tabsize
+.Nd curses terminal and screen routines
+.Sh LIBRARY
+.Lb libcurses
+.Sh SYNOPSIS
+.In curses.h
+.Ft void
+.Fn filter "void"
+.Ft int
+.Fn ripoffline "int line" "int (*init)(WINDOW *win, int cols)"
+.Ft void
+.Fn use_env "bool value"
+.Ft SCREEN *
+.Fn newterm "const char *type" "FILE *outfd" "FILE *infd"
+.Ft SCREEN *
+.Fn set_term "SCREEN *screen"
+.Ft void
+.Fn delscreen "SCREEN *screen"
+.Ft int
+.Fn endwin "void"
+.Ft WINDOW *
+.Fn initscr "void"
+.Ft bool
+.Fn isendwin "void"
+.Ft bool
+.Fn is_term_resized "int lines" "int cols"
+.Ft int
+.Fn resize_term "int lines" "int cols"
+.Ft int
+.Fn resizeterm "int lines" "int cols"
+.Ft int
+.Fn setterm "const char *name"
+.Ft int
+.Fn set_tabsize "int value"
+.Pp
+.Va extern int LINES ;
+.Pp
+.Va extern int COLS ;
+.Sh DESCRIPTION
+These functions initialize terminals and screens.
+.Pp
+The
+.Fn newterm
+function initialises the curses data structures and pointers ready for
+use by curses.
+The
+.Fa type
+argument points to a
+.Xr terminfo 5
+entry, or it may be
+.Dv NULL
+in which case the
+.Ev TERM
+environment variable is used.
+The
+.Fa outfd
+and
+.Fa infd
+are the output and input file descriptors for the terminal.
+The
+.Fn newterm
+function must only be called once per terminal.
+.Pp
+The
+.Fn set_term
+function can be used to switch between the screens defined by calling
+.Fn newterm ,
+a pointer to the previous screen structure that was in use will be
+returned on success.
+.Pp
+Calling
+.Fn delscreen
+will destroy the given screen and free all allocated resources.
+.Pp
+Calling
+.Fn endwin
+will end the curses session and restore the saved terminal settings.
+.Pp
+The curses session must be initialised by calling
+.Fn initscr
+which saves the current terminal state and sets up the terminal and
+internal data structures to support the curses application.
+This
+function call must be, with few exceptions, the first Curses library
+call made.
+The exception to this rule is the
+.Fn newterm
+call which may be called prior to
+.Fn initscr .
+The size of the curses screen is determined by checking the
+.Xr tty 4
+size and then the
+.Xr terminfo 5
+entries for the terminal type.
+If the environment variables
+.Ev LINES
+or
+.Ev COLUMNS
+are set, then these will be used instead.
+.Pp
+When either
+.Fn newterm
+or
+.Fn initscr
+are called, the Curses library sets up signal handlers for
+.Dv SIGTSTP
+and
+.Dv SIGWINCH .
+If a signal handler is already installed for
+.Dv SIGWINCH ,
+this will also be called when the Curses library handler is called.
+.Pp
+The
+.Fn isendwin
+function can be used to determine whether or not a refresh of the
+screen has occurred since the last call to
+.Fn endwin .
+.Pp
+The size of the screen may be changed by calling
+.Fn resize_term
+with the updated number of lines and columns.
+This will resize the curses internal data structures to accommodate the
+changed terminal geometry.
+The
+.Dv curscr
+and
+.Va stdscr
+windows and any of their subwindows will be resized to fit the new
+screen size.
+The application must redraw the screen after a call to
+.Fn resize_term .
+The
+.Fn resizeterm
+function is a wrapper for
+.Fn resize_term
+and adjusts other structure data that handles window dimensions.
+The
+.Fn is_term_resized
+function tests if either of the above functions need to be called.
+.Pp
+The
+.Fn setterm
+function sets the terminal type for the current screen to the one
+passed, initialising all the curses internal data structures with
+information related to the named terminal.
+The
+.Fa name
+argument must be a valid name or alias in the
+.Xr terminfo 5
+database for this function to succeed.
+.Pp
+The
+.Fn filter
+function changes the way the terminal is initialised.
+A subsequent call to
+.Fn initscr
+or
+.Fn newterm
+performs the following additional actions:
+.Bl -bullet -compact
+.It
+Disable use of clear, cud, cud1, cup, cuu, cuu1 and vpa.
+.It
+Set the value of the home string to the value of the cr string.
+.It
+Set lines equal to 1.
+.El
+.Pp
+The
+.Fn ripoffline
+function will rip a line from
+.Va stdscr
+at the top if
+.Fa line
+is positive, or at the bottom if negative.
+When
+.Fn initscr
+or
+.Fn newterm
+is called, a window will be created for each line ripped and passed
+to the
+.Fa init
+function pointer alongwith the number of columns in the window.
+This init function cannot use the
+.Dv LINES
+or
+.Dv COLS
+variables and cannot call
+.Xr wrefresh 3
+or
+.Xr doupdate 3 ,
+but may call
+.Xr wnoutrefresh 3 .
+.Fn ripoffline
+can be called up to five times.
+.Pp
+The
+.Fn use_env
+function determines whether the environment variables
+.Ev LINES
+and
+.Ev COLUMNS
+override the normal values.
+The default is true.
+Any call to
+.Fn use_env
+must precede calls to
+.Fn initscr ,
+.Fn newterm ,
+or
+.Fn setupterm .
+.Pp
+The
+.Fn set_tabsize
+function will set
+.Va TABSIZE
+of the current screen to
+.Va tabsize .
+.Sh RETURN VALUES
+Functions returning pointers will return
+.Dv NULL
+if an error is detected with the exception of
+.Fn initscr
+which will log a diagnostic to standard error output and then call
+.Xr exit 3 .
+The functions that return an int will return one of the following
+values:
+.Pp
+.Bl -tag -width ERR -compact
+.It Er OK
+The function completed successfully.
+.It Er ERR
+An error occurred in the function.
+.El
+.Sh SEE ALSO
+.Xr curses_window 3 ,
+.Xr tty 4 ,
+.Xr terminfo 5 ,
+.Xr signal 7
+.Sh STANDARDS
+The
+.Nx
+Curses library complies with the X/Open Curses specification, part of the
+Single Unix Specification.
+.Sh HISTORY
+The Curses package appeared in
+.Bx 4.0 .
+The
+.Fn resizeterm
+function is an
+.Em ncurses
+extension to the Curses library and was added in
+.Nx 1.6 .
+The
+.Fn is_term_resized ,
+.Fn resize_term
+and
+.Fn set_tabsize
+functions are
+.Em ncurses
+extensions to the Curses library and were added in
+.Nx 8.0 .
+.Sh BUGS
+There is currently an issue with cursor movement in a 1 line sized window
+which causes the screen to scroll up.
+This can obviously be seen when using
+.Fn ripoffline .