Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
This  is a description of how to actually use the screen package.
In it, we assume all updating, reading,	etc.  is applied  to  All
instructions  will work	on any window, with changing the function
name and parameters as mentioned above.	  In  order  to	 use  the
screen	package, the routines must know	about terminal character-
istics,	and the	space for and must be allocated.  These	functions
are performed by Since it must allocate	space for the windows, it
can overflow core when attempting to do	so.  On	this rather  rare
occasion, returns ERR.	must be	called before any of the routines
which affect windows are used.	If it is not,  the  program  will
core  dump  as	soon as	either or are referenced.  However, it is
usually	best to	wait to	call it	until after you	are sure you will
need it, like after checking for startup errors.  Terminal status
changing routines like and should be called after  Now	that  the
screen	windows	 have been allocated, you can set them up for the
run.  If you want to, say, allow the window to scroll, use If you
want  the  cursor  to  be left after the last change, use If this
isn't done, will move the cursor to the	window's  current   after
updating it.  New windows of your own can be created, too, by us-
ing the	functions and will allow you to	get rid	of  old	 windows.
If  you	wish to	change the official size of the	terminal by hand,
just set the variables and to be what you  want,  and  then  call
This is	best done before, but can be done either before	or after,
the first call to as it	will always delete  any	 existing  and/or
before	creating  new  ones.   Now that	we have	set things up, we
will want to actually update the terminal.  The	 basic	functions
used  to change	what will go on	a window are and adds a	character
at the current , returning ERR if it would cause  the  window  to
illegally  scroll,  printing  a	character in the lower right-hand
corner of a terminal which automatically scrolls if scrolling  is
not  allowed.	changes	the current  to	whatever you want them to
be.  It	returns	ERR if you  try	 to  move  off	the  window  when
scrolling  is  not  allowed.  As mentioned above, you can combine
the two	into to	do both	things in one fell swoop.  The other out-
put functions, such as and all call to add characters to the win-
dow.  After you	have put on the	window what you	want there,  when
you  want the portion of the terminal covered by the window to be
made to	look like it, you must call In order to	optimize  finding
changes,  assumes  that	 any part of the window	not changed since
the last of that window	has not	been  changed  on  the	terminal,
that  you  have	 not  refreshed	a portion of the terminal with an
overlapping window.  If	this is	not the	case,  the  routines  and
are  provided  to  make	it look	like a desired part of window has
been changed, thus forcing check that  whole  subsection  of  the
terminal  for  changes.	 If you	call with it will make the screen
look like thinks it looks like.	 This is useful	for  implementing
a command which	would redraw the screen	in case	it get messed up.
Input is essentially a mirror image of output.	The complementary
function to is which, if echo is set, will call	to echo	the char-
acter.	Since the screen package needs to know	what  is  on  the
terminal  at  all  times, if characters	are to be echoed, the tty
must be	in raw or cbreak mode.	If it  is  not,	 sets  it  to  be
cbreak,	 and then reads	in the character.  All sorts of	fun func-
tions exists for maintaining and changing information  about  the
windows.   For	the  most  part, the descriptions in section 5.4.
should suffice.	 In order to do	certain	 optimizations,	 and,  on
some  terminals,  to work at all, some things must be done before
the screen routines start up.  These functions are  performed  in
and  which are called by In order to clean up after the	routines,
the routine is provided.  It restores tty modes	to what	they were
when  was first	called.	 Thus, anytime after the call to initscr,
should be called before	exiting.

Want to link to this manual page? Use this URL:

home | help