📄 intro.1
字号:
.\" Copyright (c) 1980, 1993.\" The Regents of the University of California. All rights reserved..\".\" 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. All advertising materials mentioning features or use of this software.\" must display the following acknowledgement:.\" This product includes software developed by the University of.\" California, Berkeley and its contributors..\" 4. Neither the name of the University nor the names of its contributors.\" may be used to endorse or promote products derived from this software.\" without specific prior written permission..\".\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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..\".\" @(#)intro.1 8.1 (Berkeley) 6/4/93.\".bp.sh 1 Overview.ppIn making available the generalized terminal descriptions in \*(tc,much information was made available to the programmer,but little work was taken out of one's hands.The purpose of this package is to allow the C programmerto do the most common type of terminal dependent functions,those of movement optimization and optimal screen updating,without doing any of the dirty work,and with nearly as much ease as is necessary to simply printor read things..sh 2 "Terminology".ppIn this document, the following terminology is used:.de Ip.sp.in 5n.ti 0n.b "\\$1" :...Ip windowAn internal representationcontaining an image of what a section of the terminal screen may look likeat some point in time.This subsection can either encompass the entire terminal screen,or any smaller portion down to a single character within that screen..Ip terminalSometimes called.b terminal.b screen .The package's idea of what the terminal's screen currently looks like,.i i.e. ,what the user sees now.This is a special.i screen :.Ip screenThis is a subset of windows which are as large as the terminal screen,.i i.e. ,they start at the upper left hand cornerand encompass the lower right hand corner.One of these,.Vn stdscr ,is automatically provided for the programmer..rm Ip.sh 2 "Compiling Applications".ppIn order to use the library,it is necessary to have certain types and variables defined.Therefore, the programmer must have a line:.(l.b "#include <curses.h>".)lat the top of the program source.Compilations should have the following form:.(l.ie t \fBcc\fR [ \fIflags\fR ] file ... \fB\-lcurses \-ltermcap\fR.el \fIcc\fR [ flags ] file ... \fI\-lcurses \-ltermcap\fR.)l.sh 2 "Screen Updating".ppIn order to update the screen optimally,it is necessary for the routines to know what the screen currently looks likeand what the programmer wants it to look like next.For this purpose,a data type(structure)named.Vn WINDOWis definedwhich describes a window image to the routines,including its starting position on the screen(the \*y of the upper left hand corner)and its size.One of these(called.Vn curscrfor.i "current screen" )is a screen image of what the terminal currently looks like.Another screen(called.Vn stdscr ,for.i "standard screen" )is providedby defaultto make changes on..ppA window is a purely internal representation.It is used to build and storea potential image of a portion of the terminal.It doesn't bear any necessary relationto what is really on the terminal screen.It is more like an array of characters on which to make changes..ppWhen one has a window which describeswhat some part the terminal should look like,the routine.Fn refresh(or.Fn wrefreshif the window is not.Vn stdscr )is called..Fn Refreshmakes the terminal,in the area covered by the window,look like that window.Note, therefore, that changing something on a window.i does.bi not.i "change the terminal" .Actual updates to the terminal screenare made only by calling.Fn refreshor.Fn wrefresh .This allows the programmer to maintain several different ideasof what a portion of the terminal screen should look like.Also, changes can be made to windows in any order,without regard to motion efficiency.Then, at will,the programmer can effectively say.q "make it look like this" ,and the package will execute the changes in an optimal way..sh 2 "Naming Conventions".ppAs hinted above,the routines can use several windows,but two are always available:.Vn curscr ,which is the image of what the terminal looks like at present, and.Vn stdscr ,which is the image of what the programmer wants the terminal to look like next.The user should not access.Vn curscrdirectly.Changes should be made tothe appropriate screen,and then the routine.Fn refresh(or.Fn wrefresh )should be called..ppMany functions are set up to deal with.Vn stdscras a default screen.For example, to add a character to.Vn stdscr ,one calls.Fn addchwith the desired character.If a different window is to be used,the routine.Fn waddch(for.b w indow-specific.Fn addch )is provided\**..(f\**Actually,.Fn addchis really a.q #definemacro with arguments,as are most of the "functions" which act upon.Vn stdscr ..)fThis convention of prepending function names with a.Bq wwhen they are to be applied to specific windowsis consistent.The only routines which do.i notdo this are thoseto which a window must always be specified..ppIn order to move the current \*y from one point to another,the routines.Fn moveand.Fn wmoveare provided.However,it is often desirable to first move and then perform some I/O operation.In order to avoid clumsiness,most I/O routines can be preceded by the prefix.Bq mvand the desired \*y can then be added to the arguments to the function.For example,the calls.(lmove(y\*,x);addch(ch);.)lcan be replaced by.(lmvaddch(y\*,x\*,ch);.)land.(lwmove(win\*,y\*,x);waddch(win\*,ch);.)lcan be replaced by.(lmvwaddch(win\*,y\*,x\*,ch);.)lNote that the window description pointer.Vn win ) (comes before the added \*y.If a window pointer is needed, it is always the first parameter passed.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -