summaryrefslogtreecommitdiff
path: root/doc/screen.texinfo
diff options
context:
space:
mode:
authorAxel Beckert <abe@deuxchevaux.org>2011-09-03 14:05:19 +0200
committerAxel Beckert <abe@deuxchevaux.org>2011-09-03 14:05:19 +0200
commit0636e9ecb5a32db4d4520f50a20652faa825feaf (patch)
treeb94df9221e8ae0de0dc3afac301d5b63b136a7b4 /doc/screen.texinfo
downloadscreen-0636e9ecb5a32db4d4520f50a20652faa825feaf.tar.gz
Imported Upstream version 3.7.2upstream/3.7.2
Diffstat (limited to 'doc/screen.texinfo')
-rw-r--r--doc/screen.texinfo4061
1 files changed, 4061 insertions, 0 deletions
diff --git a/doc/screen.texinfo b/doc/screen.texinfo
new file mode 100644
index 0000000..a500018
--- /dev/null
+++ b/doc/screen.texinfo
@@ -0,0 +1,4061 @@
+\input texinfo @c -*-texinfo-*-
+@c %**start of header
+@setfilename screen.info
+@settitle Screen User's Manual
+@finalout
+@setchapternewpage odd
+@c %**end of header
+@set version 3.7.0
+
+@c For examples, use a literal escape in info.
+@ifinfo
+@set esc 
+@end ifinfo
+@iftex
+@set esc <ESC>
+@end iftex
+
+@ifinfo
+This file documents the @code{Screen} virtual terminal manager.
+
+Copyright (c) 1993 Free Software Foundation, Inc.
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+@ignore
+Permission is granted to process this file through TeX and print the
+results, provided the printed document carries copying permission
+notice identical to this one except for the removal of this paragraph
+(this paragraph not being relevant to the printed manual).
+
+@end ignore
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the entire
+resulting derived work is distributed under the terms of a permission
+notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation approved
+by the Foundation.
+@end ifinfo
+
+@titlepage
+@title Screen
+@subtitle The virtual terminal manager
+@subtitle for Version @value{version}
+@subtitle Oct 1995
+
+@page
+@vskip 0pt plus 1filll
+Copyright @copyright{} 1993 Free Software Foundation, Inc.
+
+Permission is granted to make and distribute verbatim copies of
+this manual provided the copyright notice and this permission notice
+are preserved on all copies.
+
+Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the entire
+resulting derived work is distributed under the terms of a permission
+notice identical to this one.
+
+Permission is granted to copy and distribute translations of this manual
+into another language, under the above conditions for modified versions,
+except that this permission notice may be stated in a translation approved
+by the Foundation.
+@end titlepage
+
+@node Top, Overview, (dir), (dir)
+
+@ifinfo
+@top Screen
+This file documents the @code{Screen} virtual terminal manager, version
+@value{version}.
+@end ifinfo
+
+@menu
+* Overview:: Preliminary information.
+* Getting Started:: An introduction to @code{screen}.
+* Invoking Screen:: Command line options for @code{screen}.
+* Customization:: The @file{.screenrc} file.
+* Commands:: List all of the commands.
+* New Window:: Running a program in a new window.
+* Selecting:: Selecting a window to display.
+* Session Management:: Suspending or detaching a session.
+* Window Settings:: titles, logging, etc.
+* Virtual Terminal:: Controlling the @code{screen} VT100 emulation.
+* Copy and Paste:: Exchanging text between windows and sessions.
+* Subprocess Execution:: I/O filtering with @code{exec}.
+* Key Binding:: Binding commands to keys.
+* Flow Control:: Trap or pass flow control characters.
+* Termcap:: Tweaking your terminal's termcap entry.
+* Message Line:: The @code{screen} message line.
+* Logging:: Keeping a record of your session.
+* Startup:: Functions only useful at @code{screen} startup.
+* Miscellaneous:: Various other commands.
+* Environment:: Environment variables used by @code{screen}.
+* Files:: Files used by @code{screen}.
+* Credits:: Who's who of @code{screen}.
+* Bugs:: What to do if you find a bug.
+* Installation:: Getting @code{screen} running on your system.
+* Concept Index:: Index of concepts.
+* Command Index:: Index of all @code{screen} commands.
+* Keystroke Index:: Index of default key bindings.
+@end menu
+
+@node Overview, Getting Started, Top, Top
+@chapter Overview
+@cindex overview
+
+Screen is a full-screen window manager that multiplexes a physical
+terminal between several processes, typically interactive shells. Each
+virtual terminal provides the functions of the DEC VT100 terminal and,
+in addition, several control functions from the ANSI X3.64 (ISO 6429)
+and ISO 2022 standards (e.g. insert/delete line and support for multiple
+character sets). There is a scrollback history buffer for each virtual
+terminal and a copy-and-paste mechanism that allows the user to move
+text regions between windows.
+
+When @code{screen} is called, it creates a single window with a shell in
+it (or the specified command) and then gets out of your way so that you
+can use the program as you normally would. Then, at any time, you can
+create new (full-screen) windows with other programs in them (including
+more shells), kill the current window, view a list of the active
+windows, turn output logging on and off, copy text between windows, view
+the scrollback history, switch between windows, etc. All windows run
+their programs completely independent of each other. Programs continue
+to run when their window is currently not visible and even when the
+whole screen session is detached from the users terminal.
+
+When a program terminates, @code{screen} (per default) kills the window
+that contained it. If this window was in the foreground, the display
+switches to the previously displayed window; if none are left,
+@code{screen} exits.
+
+Everything you type is sent to the program running in the current
+window. The only exception to this is the one keystroke that is used to
+initiate a command to the window manager. By default, each command
+begins with a control-a (abbreviated @kbd{C-a} from now on), and is
+followed by one other keystroke. The command character (@pxref{Command
+Character}) and all the key bindings (@pxref{Key Binding}) can be fully
+customized to be anything you like, though they are always two
+characters in length.
+
+The standard way to create a new window is to type @kbd{C-a c}. This
+creates a new window running a shell and switches to that window
+immediately, regardless of the state of the process running in the
+current window. Similarly, you can create a new window with a custom
+command in it by first binding the command to a keystroke (in your
+@file{.screenrc} file or at the @kbd{C-a :} command line) and then using it
+just like the @kbd{C-a c} command. In addition, new windows can be created by
+running a command like:
+
+@example
+screen emacs prog.c
+@end example
+
+@noindent
+from a shell prompt within a previously created window. This will not
+run another copy of @code{screen}, but will instead supply the command
+name and its arguments to the window manager (specified in the $STY environment
+variable) who will use it to create the new window. The above example would
+start the @code{emacs} editor (editing @file{prog.c}) and switch to its window.
+
+If @file{/etc/utmp} is writable by @code{screen}, an appropriate record
+will be written to this file for each window, and removed when the
+window is closed. This is useful for working with @code{talk},
+@code{script}, @code{shutdown}, @code{rsend}, @code{sccs} and other
+similar programs that use the utmp file to determine who you are. As
+long as @code{screen} is active on your terminal, the terminal's own
+record is removed from the utmp file. @xref{Login}.
+
+@node Getting Started, Invoking Screen, Overview, Top
+@chapter Getting Started
+@cindex introduction
+
+Before you begin to use @code{screen} you'll need to make sure you have
+correctly selected your terminal type, just as you would for any other
+termcap/terminfo program. (You can do this by using @code{tset},
+@code{qterm}, or just @code{set term=mytermtype}, for example.)
+
+If you're impatient and want to get started without doing a lot more
+reading, you should remember this one command: @kbd{C-a ?} (@pxref{Key
+Binding}). Typing these two characters will display a list of the
+available @code{screen} commands and their bindings. Each keystroke is
+discussed in the section on keystrokes (@pxref{Default Key Bindings}).
+Another section (@pxref{Customization}) deals with the contents of your
+@file{.screenrc}.
+
+If your terminal is a ``true'' auto-margin terminal (it doesn't allow
+the last position on the screen to be updated without scrolling the
+screen) consider to use a version of your terminal's termcap that has
+automatic margins turned @emph{off}. This will ensure an accurate
+and optimal update of the screen in all circumstances. Most terminals
+nowadays have ``magic'' margins (automatic margins plus usable last
+column). This is the VT100 style type and perfectly suited for
+@code{screen}.
+If all you've got is a ``true'' auto-margin terminal @code{screen}
+will be content to use it, but updating a character put into the last
+position on the screen may not be possible until the screen scrolls or
+the character is moved into a safe position in some other way. This
+delay can be shortened by using a terminal with insert-character
+capability.
+
+@xref{Special Capabilities}, for more information about telling
+@code{screen} what kind of terminal you have.
+
+@node Invoking Screen, Customization, Getting Started, Top
+@chapter Invoking @code{Screen}
+@cindex invoking
+@cindex options
+@cindex command line options
+
+Screen has the following command-line options:
+
+@table @samp
+@item -a
+Include @emph{all} capabilities (with some minor exceptions) in each
+window's termcap, even if @code{screen} must redraw parts of the display
+in order to implement a function.
+
+@item -A
+Adapt the sizes of all windows to the size of the display. By default,
+@code{screen} may try to restore its old window sizes when attaching to
+resizable terminals (those with @samp{WS} in their descriptions, e.g.
+@code{suncmd} or some varieties of @code{xterm}).
+
+@item -c @var{file}
+Use @var{file} as the user's configuration file instead of the default
+of @file{$HOME/.screenrc}.
+
+@item -d [@var{pid.sessionname}]
+@itemx -D [@var{pid.sessionname}]
+Do not start @code{screen}, but instead detach a @code{screen} session
+running elsewhere (@pxref{Detach}). @samp{-d} has the same effect as
+typing @kbd{C-a d} from the controlling terminal for the session.
+@samp{-D} is the equivalent to the power detach key. If no session can
+be detached, this option is ignored. The combination @code{screen -D
+-r} can be used to log out from a remote terminal and transport the
+session running there to your current terminal.
+@emph{Note}: It is a good idea to check the status of your sessions
+with @code{screen -list} before using this option.
+
+@item -e @var{xy}
+Set the command character to @var{x}, and the character generating a
+literal command character (when typed after the command character) to
+@var{y}. The defaults are @kbd{C-a} and @kbd{a}, which can be specified
+as @samp{-e^Aa}. When creating a @code{screen} session, this option
+sets the default command caracter. In a multiuser session all users
+added will start off with this command character. But when attaching
+to an already running session, this option only changes the command
+character of the attaching user.
+This option is equivalent to the commands @code{defescape} or
+@code{escape} respectively. (@pxref{Command Character}).
+
+@item -f
+@itemx -fn
+@itemx -fa
+Set flow-control to on, off, or automatic switching mode, respectively.
+This option is equivalent to the @code{defflow} command (@pxref{Flow
+Control}).
+
+@item -h @var{num}
+Set the history scrollback buffer to be @var{num} lines high.
+Equivalent to the @code{defscrollback} command (@pxref{Copy}).
+
+@item -i
+Cause the interrupt key (usually @kbd{C-c}) to interrupt the display
+immediately when flow control is on. This option is equivalent to the
+@code{interrupt} argument to the @code{defflow} command (@pxref{Flow
+Control}). Its use is discouraged.
+
+@item -l
+@itemx -ln
+Turn login mode on or off (for @file{/etc/utmp} updating). This option
+is equivalent to the @code{deflogin} command (@pxref{Login}).
+
+@item -ls
+@itemx -list
+Do not start @code{screen}, but instead print a list of session
+identification strings (usually of the form @var{pid.tty.host};
+@pxref{Session Name}). Sessions marked @samp{detached} can be resumed
+with @code{screen -r}. Those marked @samp{attached} are running and
+have a controlling terminal. Sessions marked as @samp{dead} should be
+thoroughly checked and removed. Ask your system administrator if you are
+not sure why they died. Remove sessions with the @samp{-wipe} option.
+
+@item -L
+Tell @code{screen} that your auto-margin terminal allows programs to
+write to the last column of the last row of the screen without
+scrolling. This can also be set in your @file{.screenrc} by specifying
+@samp{xn} in a @code{termcap} command (@pxref{Termcap}).
+
+@item -m
+Tell @code{screen} to ignore the @code{$STY} environment variable. When
+this option is used, a new session will always be created, regardless of
+whether @code{screen} is being called from within another @code{screen}
+session or not.
+
+@item -r [@var{pid.sessionname}]
+@itemx -r @var{sessionowner/[pid.sessionname]}
+Resume a detached @code{screen} session. No other options (except
+@samp{-d} or @samp{-D}) may be specified, though the session name
+(@pxref{Session Name}) may be needed to distinguish between multiple
+detached @code{screen} sessions.
+The second form is used to connect to another users screen session which
+runs in multi-user mode. This indicates that screen should look for
+sessions in another users directory. This requires setuid-root.
+
+@item -R
+Resume the first appropriate detached @code{screen} session. If
+successful, all other command-line options are ignored. If no detached
+session exists, start a new session using the specified options, just as
+if @samp{-R} had not been specified. This option is set by default if
+screen is run as a login-shell.
+
+@item -s @var{program}
+Set the default shell to be @var{program}. By default, @code{screen}
+uses the value of the environment variable @code{$SHELL}, or
+@file{/bin/sh} if it is not defined. This option is equivalent to the
+@code{shell} command (@pxref{Shell}).
+
+@item -S @var{sessionname}
+Set the name of the new session to @var{sessionname}. This option can
+be used to specify a meaningful name for the session in place of the
+default @var{tty.host} suffix. This name identifies the session for the
+@code{screen -list} and @code{screen -r} commands. This option is
+equivalent to the @code{sessionname} command (@pxref{Session Name}).
+
+@item -t @var{name}
+Set the title (name) for the default shell or specified program.
+This option is equivalent to the @code{shelltitle} command
+(@pxref{Shell}).
+
+@item -v
+Print the version number.
+
+@item -wipe
+List available screens like @code{screen -ls}, but remove destroyed
+sessions instead of marking them as @samp{dead}.
+
+@item -x
+Attach to a session which is already attached elsewhere (multi-display
+mode).
+@end table
+
+@node Customization, Commands, Invoking Screen, Top
+@chapter Customizing @code{Screen}
+@cindex customization
+
+You can modify the default settings for @code{screen} to fit your tastes
+either through a personal @file{.screenrc} file which contains commands
+to be executed at startup, or on the fly using the @code{colon} command.
+
+@menu
+* Startup Files:: The @file{.screenrc} file.
+* Colon:: Entering customization commands interactively.
+@end menu
+
+@node Startup Files, Colon, , Customization
+@section The @file{.screenrc} file
+@cindex .screenrc
+@cindex screenrc
+When @code{screen} is invoked, it executes initialization commands from
+the files @file{.screenrc} in the user's home directory and
+@file{/usr/local/etc/screenrc}. These defaults can be overridden in the
+following ways:
+For the global screenrc file @code{screen} searches for the environment
+variable @code{$SYSSCREENRC} (this override feature may be disabled at
+compile-time). The user specific screenrc file is
+searched for in @code{$SCREENRC}, then
+@file{@code{$HOME}/.screenrc}. The command line option @samp{-c}
+specifies which file to use (@pxref{Invoking Screen}. Commands in these
+files are used to set options, bind commands to keys, and to
+automatically establish one or more windows at the beginning of
+your @code{screen} session. Commands are listed one per line, with
+empty lines being ignored. A command's arguments are separated by tabs
+or spaces, and may be surrounded by single or double quotes. A @samp{#}
+turns the rest of the line into a comment, except in quotes.
+Unintelligible lines are warned about and ignored. Commands may contain
+references to environment variables. The syntax is the shell-like
+@code{$VAR} or @code{$@{VAR@}}. Note that this causes incompatibility
+with previous @code{screen} versions, as now the '$'-character has to be
+protected with '\' if no variable substitution is intended. A string in
+single-quotes is also protected from variable substitution.
+
+Two configuration files are shipped as examples with your screen
+distribution: @file{etc/screenrc} and @file{etc/etcscreenrc}. They
+contain a number of useful examples for various commands.
+
+@node Colon, , Startup Files, Customization
+@section Colon
+Customization can also be done online, with this command:
+
+@kindex :
+@deffn Command colon
+(@kbd{C-a :})@*
+Allows you to enter @file{.screenrc} command lines. Useful for
+on-the-fly modification of key bindings, specific window creation and
+changing settings. Note that the @code{set} keyword no longer exists,
+as of version 3.3. Change default settings with commands starting with
+@samp{def}. You might think of this as the @code{ex} command mode of
+@code{screen}, with @code{copy} as its @code{vi} command mode
+(@pxref{Copy and Paste}).
+@end deffn
+
+@node Commands, New Window, Customization, Top
+@chapter Commands
+
+A command in @code{screen} can either be bound to a key, invoked from a
+screenrc file, or called from the @code{colon} prompt
+(@pxref{Customization}). As of version 3.3, all commands can be bound
+to keys, although some may be less useful than others.
+For a number of real life working examples of the most important
+commands see the files @file{etc/screenrc} and @file{etc/etcscreenrc}
+of your screen distribution.
+
+In this manual, a command definition looks like this:
+
+@table @asis
+@item -- Command: command [-n] ARG1 [ARG2] @dots{}
+(@var{keybindings})@*
+This command does something, but I can't remember what.
+@end table
+
+An argument in square brackets (@samp{[]}) is optional. Many commands
+take an argument of @samp{on} or @samp{off}, which is indicated as
+@var{state} in the definition.
+
+@menu
+* Default Key Bindings:: @code{screen} keyboard commands.
+* Command Summary:: List of all commands.
+@end menu
+
+@node Default Key Bindings, Command Summary, , Commands
+@section Default Key Bindings
+
+As mentioned previously, each keyboard command consists of a
+@kbd{C-a} followed by one other character. For your convenience, all
+commands that are bound to lower-case letters are also bound to their
+control character counterparts (with the exception of @kbd{C-a a}; see
+below). Thus, both @kbd{C-a c} and @kbd{C-a C-c} can be used to create
+a window.
+
+The following table shows the default key bindings:
+
+@table @asis
+@item @kbd{C-a '}
+@itemx @kbd{C-a "}
+(select)@*
+Prompt for a window identifier and switch.
+@xref{Selecting}.
+
+@item @kbd{C-a 0@dots{}9}
+(select 0@dots{}select 9)@*
+Switch to window number 0@dots{}9. @xref{Selecting}.
+
+@item @kbd{C-a C-a}
+(other)@*
+Toggle to the window displayed previously. @xref{Selecting}.
+
+@item @kbd{C-a a}
+(meta)@*
+Send the command character (C-a) to window. See @code{escape} command.
+@xref{Command Character}.
+
+@item @kbd{C-a A}
+(title)@*
+Allow the user to enter a title for the current window.
+@xref{Naming Windows}.
+
+@item @kbd{C-a b}
+itemx @kbd{C-a C-b}
+(break)@*
+Send a break to the tty.
+@xref{Break}.
+
+@item @kbd{C-a B}
+(pow_break)@*
+Close and reopen the tty-line.
+@xref{Break}.
+
+@item @kbd{C-a c}
+@itemx @kbd{C-a C-c}
+(screen)@*
+Create a new window with a shell and switch to that window.
+@xref{Screen Command}.
+
+@item @kbd{C-a C}
+(clear)@*
+Clear the screen. @xref{Clear}.
+
+@item @kbd{C-a d}
+@itemx @kbd{C-a C-d}
+(detach)@*
+Detach @code{screen} from this terminal. @xref{Detach}.
+
+@item @kbd{C-a D D}
+(pow_detach)@*
+Detach and logout. @xref{Power Detach}.
+
+@item @kbd{C-a f}
+@itemx @kbd{C-a C-f}
+(flow)@*
+Cycle flow among @samp{on}, @samp{off} or @samp{auto}. @xref{Flow}.
+
+@item @kbd{C-a C-g}
+(vbell)@*
+Toggle visual bell mode. @xref{Bell}.
+
+@item @kbd{C-a h}
+(hardcopy)@*
+Write a hardcopy of the current window to the file ``hardcopy.@var{n}''.
+@xref{Hardcopy}.
+
+@item @kbd{C-a H}
+(log)@*
+Toggle logging of the current window to the file ``screenlog.@var{n}''.
+@xref{Log}.
+
+@item @kbd{C-a i}
+@itemx @kbd{C-a C-i}
+(info)@*
+Show info about the current window. @xref{Info}.
+
+@item @kbd{C-a k}
+@itemx @kbd{C-a C-k}
+(kill)@*
+Destroy the current window. @xref{Kill}.
+
+@item @kbd{C-a l}
+@itemx @kbd{C-a C-l}
+(redisplay)@*
+Fully refresh the current window. @xref{Redisplay}.
+
+@item @kbd{C-a L}
+(login)@*
+Toggle the current window's login state. @xref{Login}.
+
+@item @kbd{C-a m}
+@itemx @kbd{C-a C-m}
+(lastmsg)@*
+Repeat the last message displayed in the message line.
+@xref{Last Message}.
+
+@item @kbd{C-a M}
+(monitor)
+Toggle monitoring of the current window. @xref{Monitor}.
+
+@item @kbd{C-a @key{SPC}}
+@itemx @kbd{C-a n}
+@itemx @kbd{C-a C-n}
+(next)@*
+Switch to the next window. @xref{Selecting}.
+
+@item @kbd{C-a N}
+(number)@*
+Show the number (and title) of the current window. @xref{Number}.
+
+@item @kbd{C-a p}
+@itemx @kbd{C-a C-p}
+@itemx @kbd{C-a C-h}
+@itemx @kbd{C-a @key{BackSpace}}
+(prev)@*
+Switch to the previous window (opposite of @kbd{C-a n}).
+@xref{Selecting}.
+
+@item @kbd{C-a q}
+@itemx @kbd{C-a C-q}
+(xon)@*
+Send a ^Q (ASCII XON) to the current window. @xref{XON/XOFF}.
+
+@item @kbd{C-a r}
+@itemx @kbd{C-a C-r}
+(wrap)@*
+Toggle the current window's line-wrap setting (turn the current window's
+automatic margins on or off). @xref{Wrap}.
+
+@item @kbd{C-a s}
+@itemx @kbd{C-a C-s}
+(xoff)@*
+Send a ^S (ASCII XOFF) to the current window. @xref{XON/XOFF}.
+
+@item @kbd{C-a t}
+@itemx @kbd{C-a C-t}
+(time)@*
+Show the load average and xref. @xref{Time}.
+
+@item @kbd{C-a v}
+(version)@*
+Display the version and compilation date. @xref{Version}.
+
+@item @kbd{C-a C-v}
+(digraph)@*
+Enter digraph. @xref{Digraph}.
+
+@item @kbd{C-a w}
+@itemx @kbd{C-a C-w}
+(windows)@*
+Show a list of active windows. @xref{Windows}.
+
+@item @kbd{C-a W}
+(width)@*
+Toggle between 80 and 132 columns. @xref{Window Size}.
+
+@item @kbd{C-a x}
+@itemx @kbd{C-a C-x}
+(lockscreen)@*
+Lock your terminal. @xref{Lock}.
+
+@item @kbd{C-a z}
+@itemx @kbd{C-a C-z}
+(suspend)@*
+Suspend @code{screen}. @xref{Suspend}.
+
+@item @kbd{C-a Z}
+(reset)@*
+Reset the virtual terminal to its ``power-on'' values.
+@xref{Reset}.
+
+@item @kbd{C-a .}
+(dumptermcap)@*
+Write out a @file{.termcap} file. @xref{Dump Termcap}.
+
+@item @kbd{C-a ?}
+(help)@*
+Show key bindings. @xref{Help}.
+
+@item @kbd{C-a C-\}
+(quit)@*
+Kill all windows and terminate @code{screen}. @xref{Quit}.
+
+@item @kbd{C-a :}
+(colon)@*
+Enter a command line. @xref{Colon}.
+
+@item @kbd{C-a [}
+@itemx @kbd{C-a C-[}
+@itemx @kbd{C-a @key{ESC}}
+(copy)@*
+Enter copy/scrollback mode. @xref{Copy}.
+
+@item @kbd{C-a ]}
+@itemx @kbd{C-a C-]}
+(paste .)@*
+Write the contents of the paste buffer to the stdin queue of the
+current window. @xref{Paste}.
+
+@item @kbd{C-a @{}
+(history)@*
+Copy and paste a previous (command) line. @xref{History}.
+
+@item @kbd{C-a >}
+(writebuf)@*
+Write the paste buffer out to the screen-exchange file.
+@xref{Screen-Exchange}.
+
+@item @kbd{C-a <}
+(readbuf)@*
+Read the screen-exchange file into the paste buffer.
+@xref{Screen-Exchange}.
+
+@item @kbd{C-a =}
+(removebuf)@*
+Delete the screen-exchange file. @xref{Screen-Exchange}.
+
+@item @kbd{C-a _}
+(silence)@*
+Start/stop monitoring the current window for inactivity. @xref{Silence},
+
+@item @kbd{C-a ,}
+(license)@*
+Show the copyright page.
+@end table
+
+@node Command Summary, , Default Key Bindings, Commands
+@section Command Summary
+@cindex command summary
+
+@table @code
+@item acladd @var{usernames}
+Allow other users in this session. @xref{Multiuser Session}.
+@item aclchg @var{usernames permbits list}
+Change a user's permissions. @xref{Multiuser Session}.
+@item acldel @var{username}
+Disallow other user in this session. @xref{Multiuser Session}.
+@item activity @var{message}
+Set the activity notification message. @xref{Monitor}.
+@item allpartial @var{state}
+Set all windows to partial refresh. @xref{Redisplay}.
+@item at @var{[ident][@kbd{#}@var{|}@kbd{*}@var{|}@kbd{%}] command [args]}
+Execute a command at other displays or windows. @xref{At}.
+@item autodetach @var{state}
+Automatically detach the session on SIGHUP. @xref{Detach}.
+@item autonuke @var{state}
+Enable a clear screen to discard unwritten output. @xref{Autonuke}.
+@item bell_msg @var{message}
+Set the bell notification message. @xref{Bell}.
+@item bind @var{key [command [args]]}
+Bind a command to a key. @xref{Bind}.
+@item bindkey @var{[opts] [string [cmd args]]}
+Bind a string to a series of keystrokes. @xref{Bindkey}.
+@item break @var{[duration]}
+Send a break signal to the current window. @xref{Break}.
+@item bufferfile @var{[exchange-file]}
+Select a file for screen-exchange. @xref{Screen-Exchange}.
+@item c1 @var{[state]}
+Change c1 code processing. @xref{Character Processing}.
+@item charset @var{set}
+Change character set slot designation. @xref{Character Processing}.
+@item chdir @var{[directory]}
+Change the current directory for future windows. @xref{Chdir}.
+@item clear
+Clear the window screen. @xref{Clear}.
+@item colon
+Enter a @code{screen} command. @xref{Colon}.
+@item command
+Simulate the screen escape key. @xref{Command Character}.
+@item console @var{[state]}
+Grab or ungrab console output. @xref{Console}.
+@item copy
+Enter copy mode. @xref{Copy}.
+@item copy_reg @var{[key]}
+Removed. Use @code{paste} instead. @xref{Registers}.
+@item crlf @var{state}
+Select line break behavior for copying. @xref{Line Termination}.
+@item debug @var{state}
+Suppress/allow debugging output. @xref{Debug}.
+@item defautonuke @var{state}
+Select default autonuke behavior. @xref{Autonuke}.
+@item defc1 @var{state}
+Select default c1 processing behavior. @xref{Character Processing}.
+@item defcharset @var{[set]}
+Change defaul character set slot designation. @xref{Character Processing}.
+@item defescape @var{xy}
+Set the default command and @code{meta} characters. @xref{Command Character}.
+@item defflow @var{fstate}
+Select default flow control behavior. @xref{Flow}.
+@item defgr @var{state}
+Select default GR processing behavior. @xref{Character Processing}.
+@item defhstatus @var{[status]}
+Select default window hardstatus line. @xref{Hardstatus}.
+@item defkanji @var{wtype}
+Select default GR processing behavior. @xref{Character Processing}.
+@item deflogin @var{state}
+Select default utmp logging behavior. @xref{Login}.
+@item defmode @var{mode}
+Select default file mode for ptys. @xref{Mode}.
+@item defmonitor @var{state}
+Select default activity monitoring behavior. @xref{Monitor}.
+@item defobuflimit @var{limit}
+Select default output buffer limit. @xref{Obuflimit}.
+@item defscrollback @var{num}
+Set default lines of scrollback. @xref{Scrollback}.
+@item defwrap @var{state}
+Set default line-wrapping behavior. @xref{Wrap}.
+@item defwritelock @var{on|off|auto}
+Set default writelock behavior. @xref{Multiuser}.
+@item defzombie @var{[keys]}
+Keep dead windows. @xref{Zombie}.
+@item detach
+Disconnect @code{screen} from the terminal. @xref{Detach}.
+@item digraph
+Enter digraph sequence. @xref{Digraph}.
+@item dumptermcap
+Write the window's termcap entry to a file. @xref{Dump Termcap}.
+@item echo [-n] @var{message}
+Display a message on startup. @xref{Startup}.
+@item escape @var{xy}
+Set the command and @code{meta} characters. @xref{Command Character}.
+@item exec @var{[[fdpat] command [args ...]]}
+Run a subprocess (filter). @xref{Exec}.
+@item flow @var{[fstate]}
+Set flow control behavior. @xref{Flow}.
+@item gr @var{[state]}
+Change GR charset processing. @xref{Character Processing}.
+@item hardcopy
+Write out the contents of the current window. @xref{Hardcopy}.
+@item hardcopy_append @var{state}
+Append to hardcopy files. @xref{Hardcopy}.
+@item hardcopydir @var{directory}
+Place, where to dump hardcopy files. @xref{Hardcopy}.
+@item hardstatus @var{[state]}
+Use the hardware status line. @xref{Hardware Status Line}.
+@item height @var{[lines]}
+Set display height. @xref{Window Size}.
+@item help
+Display current key bindings. @xref{Help}.
+@item history
+Find previous command beginning @dots{}. @xref{History}.
+@item info
+Display terminal settings. @xref{Info}.
+@item ins_reg @var{[key]}
+Removed, use @code{paste} instead. @xref{Registers}.
+@item kanji @var{wtype [dtype]}
+Set the kanji type of a window. @xref{Character Processing}.
+@item kill
+Destroy the current window. @xref{Kill}.
+@item lastmsg
+Redisplay the last message. @xref{Last Message}.
+@item license
+Display licensing information. @xref{Startup}.
+@item lockscreen
+Lock the controlling terminal. @xref{Lock}.
+@item log @var{[state]}
+Log all output in the current window. @xref{Log}.
+@item logfile @var{filename}
+Place where to collect logfiles. @xref{Log}.
+@item login @var{[state]}
+Log the window in @file{/etc/utmp}. @xref{Login}.
+@item mapdefault
+Use only the default mapping table for the next keystroke. @xref{Bindkey Control}.
+@item mapnotnext
+Don't try to do keymapping on the next keystroke. @xref{Bindkey Control}.
+@item maptimeout @var{timo}
+Set the intercharacter timeout used for keymapping. @xref{Bindkey Control}.
+@item markkeys @var{string}
+Rebind keys in copy mode. @xref{Copy Mode Keys}.
+@item meta
+Insert the command character. @xref{Command Character}.
+@item monitor @var{[state]}
+Monitor activity in window. @xref{Monitor}.
+@item msgminwait @var{sec}
+Set minimum message wait. @xref{Message Wait}.
+@item msgwait @var{sec}
+Set default message wait. @xref{Message Wait}.
+@item multiuser @var{state}
+Go into single or multi user mode. @xref{Multiuser Session}.
+@item nethack @var{state}
+Use @code{nethack}-like error messages. @xref{Nethack}.
+@item next
+Switch to the next window. @xref{Selecting}.
+@item number @var{[n]}
+Change/display the current window's number. @xref{Number}.
+@item obuflimit @var{[limit]}
+Select output buffer limit. @xref{Obuflimit}.
+@item other
+Switch to the window you were in last. @xref{Selecting}.
+@item partial @var{state}
+Set window to partial refresh. @xref{Redisplay}.
+@item password @var{[crypted_pw]}
+Set reattach password. @xref{Detach}.
+@item paste @var{[src_regs [dest_reg]]}
+Paste contents of paste buffer or registers somewhere. @xref{Paste}.
+@item pastefont @var{[state]}
+Include font information in the paste buffer. @xref{Paste}.
+@item pow_break
+Close and Reopen the window's terminal. @xref{Break}.
+@item pow_detach
+Detach and hang up. @xref{Power Detach}.
+@item pow_detach_msg @var{[message]}
+Set message displayed on @code{pow_detach}. @xref{Power Detach}.
+@item prev
+Switch to the previous window. @xref{Selecting}.
+@item printcmd @var{[cmd]}
+Set a command for VT100 printer port emulation. @xref{Printcmd}.
+@item process @var{[key]}
+Treat a register as input to @code{screen}. @xref{Registers}.
+@item quit
+Kill all windows and exit. @xref{Quit}.
+@item readbuf
+Read the paste buffer from the screen-exchange file. @xref{Screen-Exchange}.
+@item readreg @var{[reg [file]]}
+Load a register from paste buffer or file. @xref{Registers}.
+@item redisplay
+Redisplay the current window. @xref{Redisplay}.
+@item register @var{key string}
+Store a string to a register. @xref{Registers}.
+@item removebuf
+Delete the screen-exchange file. @xref{Screen-Exchange}.
+@item reset
+Reset the terminal settings for the window. @xref{Reset}.
+@item screen @var{[opts] [n] [cmd [args]]}
+Create a new window. @xref{Screen Command}.
+@item scrollback @var{num}
+Set size of scrollback buffer. @xref{Scrollback}.
+@item select @var{[n]}
+Switch to a specified window. @xref{Selecting}.
+@item sessionname @var{[name]}
+Name this session. @xref{Session Name}.
+@item setenv @var{[var [string]]}
+Set an environment variable for new windows. @xref{Setenv}.
+@item shell @var{command}
+Set the default program for new windows. @xref{Shell}.
+@item shelltitle @var{title}
+Set the default name for new windows. @xref{Shell}.
+@item silence @var{[state|seconds]}
+Monitor a window for inactivity. @xref{Silence}.
+@item silencewait @var{seconds}
+Default timeout to trigger an inactivity notify. @xref{Silence}.
+@item sleep @var{num}
+Pause during startup. @xref{Startup}.
+@item slowpaste @var{msec}
+Slow down pasting in windows. @xref{Paste}.
+@item sorendition @var{[attr [color]]}
+Change text highlighting. @xref{Sorendition}.
+@item startup_message @var{state}
+Display copyright notice on startup. @xref{Startup}.
+@item stuff @var{string}
+Stuff a string in the input buffer of a window. @xref{Paste}.
+@item suspend
+Put session in background. @xref{Suspend}.
+@item term @var{term}
+Set @code{$TERM} for new windows. @xref{Term}.
+@item termcap @var{term terminal-tweaks [window-tweaks]}
+Tweak termcap entries for best performance. @xref{Termcap Syntax}.
+@item terminfo @var{term terminal-tweaks [window-tweaks]}
+Ditto, for terminfo systems. @xref{Termcap Syntax}.
+@item termcapinfo @var{term terminal-tweaks [window-tweaks]}
+Ditto, for both systems. @xref{Termcap Syntax}.
+@item time
+Display time and load average. @xref{Time}.
+@item title @var{[windowtitle]}
+Set the name of the current window. @xref{Title Command}.
+@item unsetenv @var{var}
+Unset environment variable for new windows. @xref{Setenv}.
+@item vbell @var{[state]}
+Use visual bell. @xref{Bell}.
+@item vbell_msg @var{[message]}
+Set vbell message. @xref{Bell}.
+@item vbellwait @var{sec}
+Set delay for vbell message. @xref{Bell}.
+@item version
+Display @code{screen} version. @xref{Version}.
+@item wall @var{message}
+Write a message to all displays. @xref{Multiuser Session}.
+@item width @var{[num]}
+Set the width of the window. @xref{Window Size}.
+@item windows
+List active windows. @xref{Windows}.
+@item wrap @var{[state]}
+Control line-wrap behavior. @xref{Wrap}.
+@item writebuf
+Write paste buffer to screen-exchange file. @xref{Screen-Exchange}.
+@item writelock @var{on|off|auto}
+Grant exclusive write permission. @xref{Multiuser Session}.
+@item xoff
+Send an XOFF character. @xref{XON/XOFF}.
+@item xon
+Send an XON character. @xref{XON/XOFF}.
+@item zombie @var{[keys]}
+Keep dead windows. @xref{Zombie}.
+@end table
+
+@node New Window, Selecting, Commands, Top
+@chapter New Window
+
+This section describes the commands for creating a new window for
+running programs. When a new window is created, the first available
+number from the range 0@dots{}9 is assigned to it. There can be no more
+than 10 windows active at any one time unless @code{screen} was compiled
+with a higher MAXWIN setting.
+
+@menu
+* Chdir:: Change the working directory for new windows.
+* Screen Command:: Create a new window.
+* Setenv:: Set environment variables for new windows.
+* Shell:: Parameters for shell windows.
+* Term:: Set the terminal type for new windows.
+@end menu
+
+@node Chdir, Screen Command, , New Window
+@section Chdir
+@deffn Command chdir [directory]
+(none)@*
+Change the current directory of @code{screen} to the specified directory
+or, if called without an argument, to your home directory (the value of
+the environment variable @code{$HOME}). All windows that are created by means
+of the @code{screen} command from within @file{.screenrc} or by means of
+@kbd{C-a : screen @dots{}} or @kbd{C-a c} use this as their default
+directory. Without a @code{chdir} command, this would be the directory
+from which @code{screen} was invoked. Hardcopy and log files are always
+written to the @emph{window's} default directory, @emph{not} the current
+directory of the process running in the window. You can use this
+command multiple times in your @file{.screenrc} to start various windows
+in different default directories, but the last @code{chdir} value will
+affect all the windows you create interactively.
+@end deffn
+
+@node Screen Command, Setenv, Chdir, New Window
+@section Screen Command
+@kindex c
+@kindex C-c
+@deffn Command screen [opts] [n] [cmd [args]]
+(@kbd{C-a c}, @kbd{C-a C-c})@*
+Establish a new window. The flow-control options (@samp{-f}, @samp{-fn}
+and @samp{-fa}), title option (@samp{-t}), login options
+(@samp{-l} and @samp{-ln}) , terminal type option (@samp{-T @var{term}})
+and scrollback option (@samp{-h @var{num}}) may be specified for each
+command. If an optional number @var{n} in the range 0@dots{}9 is given,
+the window number @var{n} is assigned to the newly created window (or,
+if this number is already in-use, the next available number). If a
+command is specified after @code{screen}, this command (with the given
+arguments) is started in the window; otherwise, a shell is created.
+
+If a tty (character special device) name (e.g. @samp{/dev/ttyS0})
+is specified as cmd, then the window is directly connected to this
+device. This is similar to the cmd @samp{kermit -l /dev/ttyS0 -c} but
+saves resources and is more efficient.
+@end deffn
+
+Thus, if your @file{.screenrc} contains the lines
+
+@example
+# example for .screenrc:
+screen 1
+screen -fn -t foobar 2 telnet foobar
+@end example
+
+@noindent
+@code{screen} creates a shell window (in window #1) and a window with a
+TELNET connection to the machine foobar (with no flow-control using the
+title @samp{foobar} in window #2). If you do not include any
+@code{screen} commands in your @file{.screenrc} file, then @code{screen}
+defaults to creating a single shell window, number zero. When the
+initialization is completed, @code{screen} switches to the last window
+specified in your .screenrc file or, if none, it opens default window
+#0.
+
+@node Setenv, Shell, Screen Command, New Window
+@section Setenv
+@deffn Command setenv var string
+(none)@*
+Set the environment variable @var{var} to value @var{string}.
+If only @var{var} is specified, the user will be prompted to enter a value.
+If no parameters are specified, the user will be prompted for both variable
+and value. The environment is inherited by all subsequently forked shells.
+@end deffn
+
+@deffn Command unsetenv var
+(none)@*
+Unset an environment variable.
+@end deffn
+
+@node Shell, Term, Setenv, New Window
+@section Shell
+@deffn Command shell command
+(none)@*
+Set the command to be used to create a new shell. This overrides the
+value of the environment variable @code{$SHELL}. This is useful if
+you'd like to run a tty-enhancer which is expecting to execute the
+program specified in @code{$SHELL}. If the command begins with
+a @samp{-} character, the shell will be started as a login-shell.
+@end deffn
+
+@deffn Command shelltitle title
+(none)@*
+Set the title for all shells created during startup or by the C-a C-c
+command. @xref{Naming Windows}, for details about what titles are.
+@end deffn
+
+@node Term, , Shell, New Window
+@section Term
+@deffn Command term term
+(none)@*
+In each window @code{screen} opens, it sets the @code{$TERM}
+variable to @samp{screen} by default, unless no description for
+@samp{screen} is installed in the local termcap or terminfo data base.
+In that case it pretends that the terminal emulator is @samp{vt100}.
+This won't do much harm, as @code{screen} is VT100/ANSI compatible. The
+use of the @code{term} command is discouraged for non-default purpose.
+That is, one may want to specify special @code{$TERM} settings (e.g. vt100) for
+the next @code{screen rlogin othermachine} command. Use the command
+@code{screen -T vt100 rlogin othermachine} rather than setting
+and resetting the default.
+@end deffn
+
+@node Selecting, Session Management, New Window, Top
+@chapter Selecting a Window
+
+This section describes the commands for switching between windows in an
+@code{screen} session. The windows are numbered from 0 to 9, and are created
+in that order by default (@pxref{New Window}).
+
+@menu
+* Next and Previous:: Forward or back one window.
+* Other Window:: Switch back and forth between two windows.
+* Select:: Specify a particular window.
+@end menu
+
+@node Next and Previous, Other Window, , Selecting
+@section Moving Back and Forth
+@kindex SPC
+@kindex n
+@kindex C-n
+@deffn Command next
+(@kbd{C-a @key{SPC}}, @kbd{C-a n}, @kbd{C-a C-n})@*
+Switch to the next window. This command can be used repeatedly to
+cycle through the list of windows. (On some terminals, C-@key{SPC}
+generates a NUL character, so you must release the control key before
+pressing space.)
+@end deffn
+
+@kindex p
+@kindex C-p
+@deffn Command prev
+(@kbd{C-a p}, @kbd{C-a C-p})@*
+Switch to the previous window (the opposite of @kbd{C-a n}).
+@end deffn
+
+@node Other Window, Select, Next and Previous, Selecting
+@section Other Window
+@kindex C-a
+@deffn Command other
+(@kbd{C-a C-a})@*
+Switch to the last window displayed. Note that this command
+defaults to the command character typed twice, unless overridden.
+For instance, if you use the option @samp{-e]x},
+this command becomes @kbd{]]} (@pxref{Command Character}).
+@end deffn
+
+@node Select, , Other Window, Selecting
+@section Select
+@kindex 0@dots{}9
+@kindex '
+@kindex "
+@deffn Command select [n]
+(@kbd{C-a @var{n}}, @kbd{C-a '}, @kbd{C-a "})@*
+Switch to the window with the number @var{n}.
+If no window number is specified, you get prompted for an
+identifier. This can be a window name (title) or a number.
+When a new window is established, the lowest available number
+is assigned to this window.
+Thus, the first window can be activated by @code{select 0}; there
+can be no more than 10 windows present simultaneously (unless screen is
+compiled with a higher MAXWIN setting).
+@end deffn
+
+@node Session Management, Window Settings, Selecting, Top
+@chapter Session Management Commands
+
+Perhaps the most useful feature of @code{screen} is the way it allows
+the user to move a session between terminals, by detaching and
+reattaching. This also makes life easier for modem users who have to
+deal with unexpected loss of carrier.
+
+@menu
+* Detach:: Disconnect @code{screen} from your terminal.
+* Power Detach:: Detach and log out.
+* Lock:: Lock your terminal temporarily.
+* Multiuser Session:: Changing number of allowed users.
+* Session Name:: Rename your session for later reattachment.
+* Suspend:: Suspend your session.
+* Quit:: Terminate your session.
+@end menu
+
+@node Detach, Power Detach, , Session Management
+@section Detach
+
+@deffn Command autodetach state
+(none)@*
+Sets whether @code{screen} will automatically detach upon hangup, which
+saves all your running programs until they are resumed with a
+@code{screen -r} command. When turned off, a hangup signal will
+terminate @code{screen} and all the processes it contains. Autodetach is
+on by default.
+@end deffn
+
+@kindex d
+@kindex C-d
+@deffn Command detach
+(@kbd{C-a d}, @kbd{C-a C-d})@*
+Detach the @code{screen} session (disconnect it from the terminal and
+put it into the background). A detached @code{screen} can be resumed by
+invoking @code{screen} with the @code{-r} option. (@pxref{Invoking
+Screen})
+@end deffn
+
+@deffn Command password [crypted_pw]
+(none)@*
+Present a crypted password in your @file{.screenrc} file and screen will
+ask for it, whenever someone attempts to resume a detached session. This
+is useful, if you have privileged programs running under @code{screen}
+and you want to protect your session from reattach attempts by users
+that managed to assume your uid. (I.e. any superuser.) If no crypted
+password is specified, screen prompts twice a password and places its
+encryption in the paste buffer. Default is `none', which disables
+password checking.
+@end deffn
+
+@node Power Detach, Lock, Detach, Session Management
+@section Power Detach
+
+@kindex D
+@deffn Command pow_detach
+(@kbd{C-a D})@*
+Mainly the same as @code{detach}, but also sends a HANGUP signal
+to the parent process of @code{screen}.@*
+@emph{Caution}: This will result in a
+logout if @code{screen} was started from your login shell.
+@end deffn
+
+@deffn Command pow_detach_msg [message]
+(none)@*
+The @var{message} specified here is output whenever a power detach is
+performed. It may be used as a replacement for a logout message or to reset
+baud rate, etc.
+Without parameter, the current message is shown.
+@end deffn
+
+@node Lock, Multiuser Session, Power Detach, Session Management
+@section Lock
+@kindex x
+@kindex C-x
+@deffn Command lockscreen
+(@kbd{C-a x}, @kbd{C-a C-x})@*
+Call a screenlock program (@file{/local/bin/lck} or @file{/usr/bin/lock}
+or a builtin, if no other is available). Screen does not accept any
+command keys until this program terminates. Meanwhile processes in the
+windows may continue, as the windows are in the detached state.
+The screenlock program may be changed through the environment variable
+@code{$LOCKPRG} (which must be set in the shell from which @code{screen}
+is started) and is executed with the user's uid and gid.
+
+Warning: When you leave other shells unlocked and have no password set
+on @code{screen}, the lock is void: One could easily re-attach from an
+unlocked shell. This feature should rather be called
+@code{lockterminal}.
+@end deffn
+
+@node Multiuser Session, Session Name, Lock, Session Management
+@section Multiuser Session
+@cindex multiuser session
+
+These commands allow other users to gain access to one single @code{screen}
+session. When attaching to a multiuser @code{screen} the sessionname is
+specified as @code{username/sessionname} to the @code{-S} command line option.
+@code{Screen} must be compiled with multiuser support to enable features
+described here.
+
+@menu
+* Multiuser:: Enable / Disable multiuser mode.
+* Acladd:: Enable a specific user.
+* Aclchg:: Change a users permissions.
+* Acldel:: Disable a specific user.
+* Wall:: Write a message to all users.
+* Writelock:: Grant exclusive window access.
+@end menu
+
+@node Multiuser, Acladd, , Multiuser Session
+@subsection Multiuser
+@deffn Command multiuser @var{state}
+(none)@*
+Switch between single-user and multi-user mode. Standard screen operation is
+single-user. In multi-user mode the commands @code{acladd}, @code{aclchg} and
+@code{acldel} can be used to enable (and disable) other users accessing this
+@code{screen}.
+@end deffn
+
+@node Acladd, Aclchg, Multiuser, Multiuser Session
+@subsection Acladd
+@deffn Command acladd @var{usernames}
+(none)@*
+Enable users to fully access this screen session. @var{Usernames} can be one
+user or a comma seperated list of users. This command enables to attach to
+the @code{screen} session and performs the equivalent of
+@code{aclchg @var{usernames} +rwx "#?"}. To add a user with restricted access,
+use the @code{aclchg} command below. Multi-user mode only.
+@end deffn
+
+@node Aclchg, Acldel, Acladd, Multiuser Session
+@subsection Aclchg
+@deffn Command aclchg @var{usernames permbits list}
+(none)@*
+Change permissions for a comma seperated list of users.
+Permission bits are represented as @samp{r}, @samp{w} and @samp{x}.
+Prefixing @samp{+} grants the permission, @samp{-} removes it. The third
+parameter is a comma seperated list of commands or windows (specified either
+by number or title). The special list @samp{#} refers to all windows, @samp{?}
+to all commands. If @var{usernames} consists of a single @samp{*}, all
+known users is affected.
+A command can be executed when the user has the @samp{x} bit for it. The user
+can type input to a window when he has its @samp{w} bit set and no other
+user obtains a writelock for this window. Other bits are currently ignored.
+To withdraw the writelock from another user in e.g. window 2:
+@samp{aclchg @var{username} -w+w 2}. To allow readonly access
+to the session: @samp{aclchg @var{username} -w "#"}. As soon as a user's name
+is known to screen, he can attach to the session and (per default) has full
+permissions for all command and windows. Execution permission for the acl
+commands, @code{at} and others should also be removed or the user may be able
+to regain write permission.
+Multi-user mode only.
+@end deffn
+
+@node Acldel, Wall, Aclchg, Multiuser Session
+@subsection Acldel
+@deffn Command acldel @var{username}
+(none)@*
+Remove a user from screen's access control list. If currently attached, all the
+user's displays are detached from the session. He cannot attach again.
+Multi-user mode only.
+@end deffn
+
+@node Wall, Writelock, Acldel, Multiuser Session
+@subsection Wall
+@deffn Command wall @var{message}
+(none)@*
+Write a message to all displays. The message will appear in the terminal's
+status line.
+@end deffn
+
+@node Writelock, , Wall, Multiuser Session
+@subsection Writelock
+@deffn Command writelock @var{on|off|auto}
+(none)@*
+In addition to access control lists, not all users may be able to write to
+the same window at once. Per default, writelock is in @samp{auto} mode and
+grants exclusive input permission to the user who is the first to switch
+to the particular window. When he leaves the window, other users may obtain
+the writelock (automatically). The writelock of the current window is disabled
+by the command @code{writelock off}. If the user issues the command
+@code{writelock on} he keeps the exclusive write permission while switching
+to other windows.
+@end deffn
+
+@deffn Command defwritelock @var{on|off|auto}
+(none)@*
+Sets the default writelock behaviour for new windows. Initially all windows
+will be created with automatic writelocks.
+@end deffn
+
+
+@node Session Name, Suspend, Multiuser Session, Session Management
+@section Session Name
+@deffn Command sessionname [name]
+(none)@*
+Rename the current session. Note that for @code{screen -list} the name
+shows up with the process-id prepended. If the argument @var{name} is
+omitted, the name of this session is displayed.@*
+@emph{Caution}: The @code{$STY}
+environment variable still reflects the old name. This may result in
+confusion. The default is constructed from the tty and host names.
+@end deffn
+
+@node Suspend, Quit, Session Name, Session Management
+@section Suspend
+@kindex z
+@kindex C-z
+@deffn Command suspend
+(@kbd{C-a z}, @kbd{C-a C-z})@*
+Suspend @code{screen}. The windows are in the detached state while
+@code{screen} is suspended. This feature relies on the parent shell
+being able to do job control.
+@end deffn
+
+@node Quit, , Suspend, Session Management
+@section Quit
+@kindex C-\
+@deffn Command quit
+(@kbd{C-a C-\})@*
+Kill all windows and terminate @code{screen}. Note that on VT100-style
+terminals the keys @kbd{C-4} and @kbd{C-\} are identical. So be careful
+not to type @kbd{C-a C-4} when selecting window no. 4. Use the empty
+bind command (as in @code{bind "^\"}) to remove a key binding
+(@pxref{Key Binding}).
+@end deffn
+
+@node Window Settings, Virtual Terminal, Session Management, Top
+@chapter Window Settings
+
+These commands control the way @code{screen} treats individual windows
+in a session. @xref{Virtual Terminal}, for commands to control the
+terminal emulation itself.
+
+@menu
+* Naming Windows:: Control the name of the window
+* Console:: See the host's console messages
+* Kill:: Destroy an unwanted window
+* Login:: Control @file{/etc/utmp} logging
+* Mode:: Control the file mode of the pty
+* Monitor:: Watch for activity in a window
+* Windows:: List the active windows
+* Hardstatus:: Set a window's hardstatus line
+@end menu
+
+@node Naming Windows, Console, , Window Settings
+@section Naming Windows (Titles)
+@cindex title
+
+You can customize each window's name in the window display (viewed with
+the @code{windows} command (@pxref{Windows}) by setting it with
+one of the title commands. Normally the name displayed is the actual
+command name of the program created in the window. However, it is
+sometimes useful to distinguish various programs of the same name or to
+change the name on-the-fly to reflect the current state of the window.
+
+The default name for all shell windows can be set with the
+@code{shelltitle} command (@pxref{Shell}). You can specify the name you
+want for a window with the @samp{-t} option to the @code{screen} command
+when the window is created (@pxref{Screen Command}). To change the name after
+the window has been created you can use the title-string escape-sequence
+(@kbd{@key{ESC} k @var{name} @key{ESC} \}) and the @code{title} command
+(C-a A). The former can be output from an application to control the
+window's name under software control, and the latter will prompt for a
+name when typed. You can also bind predefined names to keys with the
+@code{title} command to set things quickly without prompting.
+
+@menu
+* Title Command:: The @code{title} command.
+* Dynamic Titles:: Make shell windows change titles dynamically.
+* Title Prompts:: Set up your shell prompt for dynamic Titles.
+* Title Screenrc:: Set up Titles in your @file{.screenrc}.
+@end menu
+
+@node Title Command, Dynamic Titles, , Naming Windows
+@subsection Title Command
+@kindex A
+@deffn Command title [windowtitle]
+(@kbd{C-a A})@*
+Set the name of the current window to @var{windowalias}. If no name is
+specified, screen prompts for one.
+@end deffn
+
+@node Dynamic Titles, Title Prompts, Title Command, Naming Windows
+@subsection Dynamic Titles
+@code{screen} has a shell-specific heuristic that is enabled by
+setting the window's name to @var{search|name} and arranging to have a
+null title escape-sequence output as a part of your prompt. The
+@var{search} portion specifies an end-of-prompt search string, while the
+@var{name} portion specifies the default shell name for the window. If
+the @var{name} ends in a @samp{:} @code{screen} will add what it
+believes to be the current command running in the window to the end of
+the specified name (e.g. @var{name:cmd}). Otherwise the current
+command name supersedes the shell name while it is running.
+
+Here's how it works: you must modify your shell prompt to output a null
+title-escape-sequence (@key{ESC} k @key{ESC} \) as a part of your prompt.
+The last part of your prompt must be the same as the string you
+specified for the @var{search} portion of the title. Once this is set
+up, @code{screen} will use the title-escape-sequence to clear the previous
+command name and get ready for the next command. Then, when a newline
+is received from the shell, a search is made for the end of the prompt.
+If found, it will grab the first word after the matched string and use
+it as the command name. If the command name begins with @samp{!},
+@samp{%}, or @samp{^}, @code{screen} will use the first word on the
+following line (if found) in preference to the just-found name. This
+helps csh users get more accurate titles when using job control or
+history recall commands.
+
+@node Title Prompts, Title Screenrc, Dynamic Titles, Naming Windows
+@subsection Setting up your prompt for shell titles
+One thing to keep in mind when adding a null title-escape-sequence to your
+prompt is that some shells (like the csh) count all the non-control
+characters as part of the prompt's length. If these invisible
+characters aren't a multiple of 8 then backspacing over a tab will
+result in an incorrect display. One way to get around this is to use a
+prompt like this:
+
+@example
+set prompt='@value{esc}[0000m@value{esc}k@value{esc}\% '
+@end example
+
+The escape-sequence @samp{@value{esc}[0000m} not only normalizes the
+character attributes, but all the zeros round the length of the
+invisible characters up to 8.
+
+Tcsh handles escape codes in the prompt more intelligently, so you can
+specify your prompt like this:
+
+@example
+set prompt="%@{\ek\e\\%@}\% "
+@end example
+
+Bash users will probably want to echo the escape sequence in the
+PROMPT_COMMAND:
+
+@example
+PROMPT_COMMAND='echo -n -e "\033k\033\134"'
+@end example
+
+(I used @samp{\134} to output a @samp{\} because of a bug in v1.04).
+
+@node Title Screenrc, , Title Prompts, Naming Windows
+@subsection Setting up shell titles in your @file{.screenrc}
+Here are some .screenrc examples:
+
+@example
+screen -t top 2 nice top
+@end example
+
+Adding this line to your .screenrc would start a niced version of the
+@code{top} command in window 2 named @samp{top} rather than @samp{nice}.
+
+@example
+shelltitle '> |csh'
+screen 1
+@end example
+
+This file would start a shell using the given shelltitle. The title
+specified is an auto-title that would expect the prompt and the typed
+command to look something like the following:
+
+@example
+/usr/joe/src/dir> trn
+@end example
+
+(it looks after the '> ' for the command name).
+The window status would show the name @samp{trn} while the command was
+running, and revert to @samp{csh} upon completion.
+
+@example
+bind R screen -t '% |root:' su
+@end example
+
+Having this command in your .screenrc would bind the key sequence
+@kbd{C-a R} to the @code{su} command and give it an auto-title name of
+@samp{root:}. For this auto-title to work, the screen could look
+something like this:
+
+@example
+% !em
+emacs file.c
+@end example
+
+Here the user typed the csh history command @code{!em} which ran the
+previously entered @code{emacs} command. The window status would show
+@samp{root:emacs} during the execution of the command, and revert to
+simply @samp{root:} at its completion.
+
+@example
+bind o title
+bind E title ""
+bind u title (unknown)
+@end example
+
+The first binding doesn't have any arguments, so it would prompt you for
+a title when you type @kbd{C-a o}. The second binding would clear an
+auto-titles current setting (C-a E). The third binding would set the
+current window's title to @samp{(unknown)} (C-a u).
+
+@node Console, Kill, Naming Windows, Window Settings
+@section Console
+@deffn Command console @var{[state]}
+(none)@*
+Grabs or ungrabs the machines console output to a window. When the argument
+is omitted the current state is displayed.
+@emph{Note}: Only the owner of @file{/dev/console} can grab the console
+output. This command is only available if the host supports the ioctl
+@code{TIOCCONS}.
+@end deffn
+
+@node Kill, Login, Console, Window Settings
+@section Kill
+
+@kindex k
+@kindex C-k
+@deffn Command kill
+(@kbd{C-a k}, @kbd{C-a C-k})@*
+Kill the current window.@*
+If there is an @code{exec} command running (@pxref{Exec}) then it is killed.
+Otherwise the process (e.g. shell) running in the window receives a
+@code{HANGUP} condition,
+the window structure is removed and screen switches to the previously
+displayed window. When the last window is destroyed, @code{screen} exits.
+@*
+@emph{Caution}: @code{emacs} users may find themselves killing their
+@code{emacs} session when trying to delete the current line. For this
+reason, it is probably wise to use a different command character
+(@pxref{Command Character}) or rebind @code{kill} to another key
+sequence, such as @kbd{C-a K} (@pxref{Key Binding}).
+@end deffn
+
+@node Login, Mode, Kill, Window Settings
+@section Login
+
+@deffn Command deflogin state
+(none)@*
+Same as the @code{login} command except that the default setting for new
+windows is changed. This defaults to `on' unless otherwise specified at
+compile time (@pxref{Installation}). Both commands are only present when
+@code{screen} has been compiled with utmp support.
+@end deffn
+
+@kindex L
+@deffn Command login [state]
+(@kbd{C-a L})@*
+Adds or removes the entry in @file{/etc/utmp} for the current window.
+This controls whether or not the window is @dfn{logged in}. In addition
+to this toggle, it is convenient to have ``log in'' and ``log out''
+keys. For instance, @code{bind I login on} and @code{bind O
+login off} will map these keys to be @kbd{C-a I} and @kbd{C-a O}
+(@pxref{Key Binding}).
+@end deffn
+
+@node Mode, Monitor, Login, Window Settings
+@section Mode
+@deffn Command defmode mode
+(none)@*
+The mode of each newly allocated pseudo-tty is set to @var{mode}.
+@var{mode} is an octal number as used by chmod(1). Defaults to 0622 for
+windows which are logged in, 0600 for others (e.g. when @code{-ln} was
+specified for creation. @xref{Screen Command}).
+@end deffn
+
+@node Monitor, Windows, Mode, Window Settings
+@section Monitoring
+
+@deffn Command activity message
+(none)@*
+When any activity occurs in a background window that is being monitored,
+@code{screen} displays a notification in the message line. The
+notification message can be redefined by means of the @code{activity}
+command. Each occurrence of @samp{%} in @var{message} is replaced by
+the number of the window in which activity has occurred, and each
+occurrence of @samp{~} is replaced by the definition for bell in your
+termcap (usually an audible bell). The default message is
+
+@example
+'Activity in window %'
+@end example
+
+Note that monitoring is off for all windows by default, but can be altered
+by use of the @code{monitor} command (@kbd{C-a M}).
+@end deffn
+
+@deffn Command defmonitor state
+(none)@*
+Same as the @code{monitor} command except that the default setting for
+new windows is changed. Initial setting is `off'.
+@end deffn
+
+@kindex M
+@deffn Command monitor [state]
+(@kbd{C-a M})@*
+Toggles monitoring of the current window. When monitoring is turned on
+and the affected window is switched into the background, the activity
+notification message will be displayed in the status line at the first
+sign of output, and the window will also be marked with an @samp{@@} in
+the window-status display (@pxref{Windows}). Monitoring defaults to
+@samp{off} for all windows.
+@end deffn
+
+@node Windows, Hardstatus, Monitor, Window Settings
+@section Windows
+@kindex w
+@kindex C-w
+@deffn Command windows
+(@kbd{C-a w}, @kbd{C-a C-w})@*
+Uses the message line to display a list of all the windows. Each
+window is listed by number with the name of the program running in the
+window (or its title); the current window is marked with a @samp{*};
+the previous window is marked with a @samp{-}; all the windows that are
+logged in are marked with a @samp{$} (@pxref{Login}); a background
+window that has received a bell is marked with a @samp{!}; a background
+window that is being monitored and has had activity occur is marked with
+an @samp{@@} (@pxref{Monitor}); a window which has output logging turned
+on is marked with @samp{(L)}; windows occupied by other users are marked with
+@samp{&}; windows in the zombie state are marked with @samp{Z}.
+If this list is too long to fit on the terminal's status line only the
+portion around the current window is displayed.
+@end deffn
+
+@node Hardstatus, , Windows, Window Settings
+@section Hardstatus
+
+@code{Screen} maintains a hardstatus line for every window. If a window
+gets selected, the display's hardstatus will be updated to match
+the window's hardstatus line. If the display has no hardstatus
+the line will be displayed as a standard screen message.
+The hardstatus line can be changed with the ANSI Application
+Program Command (APC): @samp{ESC_<string>ESC\}. As a convenience
+for xterm users the sequence @samp{ESC]0..2;<string>^G} is
+also accepted.
+
+@deffn Command defhstatus
+(none)@*
+The hardstatus line that all new windows will get is set to
+@var{status}.
+This command is useful to make the hardstatus of every window
+display the window number or title or the like. @var{status}
+may contain the same directives as in the window messages, but
+the directive escape character is @samp{^E} (octal 005) instead
+of @samp{%}. This was done to make a misinterpretion of program
+generated hardstatus lines impossible.
+If the parameter @var{status}
+is omitted, the current default string is displayed.
+Per default the hardstatus line of new windows is empty.
+@end deffn
+
+@node Virtual Terminal, Copy and Paste, Window Settings, Top
+@chapter Virtual Terminal
+
+Each window in a @code{screen} session emulates a VT100 terminal, with
+some extra functions added. The VT100 emulator is hardcoded, no other
+terminal types can be emulated.
+The commands described here modify the terminal emulation.
+
+@menu
+* Control Sequences:: Details of the internal VT100 emulation.
+* Input Translation:: How keystrokes are remapped.
+* Digraph:: Entering digraph sequences.
+* Bell:: Getting your attention.
+* Clear:: Clear the window display.
+* Info:: Terminal emulation statistics.
+* Redisplay:: When the display gets confusing.
+* Wrap:: Automatic margins.
+* Reset:: Recovering from ill-behaved applications.
+* Window Size:: Changing the size of your terminal.
+* Character Processing:: Change the effect of special characters.
+@end menu
+
+@node Control Sequences, Input Translation, , Virtual Terminal
+@section Control Sequences
+@cindex control sequences
+The following is a list of control sequences recognized by
+@code{screen}. @samp{(V)} and @samp{(A)} indicate VT100-specific and
+ANSI- or ISO-specific functions, respectively.
+
+@example
+ESC E Next Line
+ESC D Index
+ESC M Reverse Index
+ESC H Horizontal Tab Set
+ESC Z Send VT100 Identification String
+ESC 7 (V) Save Cursor and Attributes
+ESC 8 (V) Restore Cursor and Attributes
+ESC [s (A) Save Cursor and Attributes
+ESC [u (A) Restore Cursor and Attributes
+ESC c Reset to Initial State
+ESC g Visual Bell
+ESC Pn p Cursor Visibility (97801)
+ Pn = 6 Invisible
+ 7 Visible
+ESC = (V) Application Keypad Mode
+ESC > (V) Numeric Keypad Mode
+ESC # 8 (V) Fill Screen with E's
+ESC \ (A) String Terminator
+ESC ^ (A) Privacy Message String (Message Line)
+ESC ! Global Message String (Message Line)
+ESC k Title Definition String
+ESC P (A) Device Control String
+ Outputs a string directly to the host
+ terminal without interpretation.
+ESC _ (A) Application Program Command (Hardstatus)
+ESC ] (A) Operating System Command (Hardstatus, xterm
+ title hack)
+Control-N (A) Lock Shift G1 (SO)
+Control-O (A) Lock Shift G0 (SI)
+ESC n (A) Lock Shift G2
+ESC o (A) Lock Shift G3
+ESC N (A) Single Shift G2
+ESC O (A) Single Shift G3
+ESC ( Pcs (A) Designate character set as G0
+ESC ) Pcs (A) Designate character set as G1
+ESC * Pcs (A) Designate character set as G2
+ESC + Pcs (A) Designate character set as G3
+ESC [ Pn ; Pn H Direct Cursor Addressing
+ESC [ Pn ; Pn f Direct Cursor Addressing
+ESC [ Pn J Erase in Display
+ Pn = None or 0 From Cursor to End of Screen
+ 1 From Beginning of Screen to Cursor
+ 2 Entire Screen
+ESC [ Pn K Erase in Line
+ Pn = None or 0 From Cursor to End of Line
+ 1 From Beginning of Line to Cursor
+ 2 Entire Line
+ESC [ Pn A Cursor Up
+ESC [ Pn B Cursor Down
+ESC [ Pn C Cursor Right
+ESC [ Pn D Cursor Left
+ESC [ Ps ;...; Ps m Select Graphic Rendition
+ Ps = None or 0 Default Rendition
+ 1 Bold
+ 2 (A) Faint
+ 3 (A) @i{Standout} Mode (ANSI: Italicized)
+ 4 Underlined
+ 5 Blinking
+ 7 Negative Image
+ 22 (A) Normal Intensity
+ 23 (A) @i{Standout} Mode off (ANSI: Italicized off)
+ 24 (A) Not Underlined
+ 25 (A) Not Blinking
+ 27 (A) Positive Image
+ 30 (A) Foreground Black
+ 31 (A) Foreground Red
+ 32 (A) Foreground Green
+ 33 (A) Foreground Yellow
+ 34 (A) Foreground Blue
+ 35 (A) Foreground Magenta
+ 36 (A) Foreground Cyan
+ 37 (A) Foreground White
+ 39 (A) Foreground Default
+ 40 (A) Background Black
+ ... ...
+ 49 (A) Background Default
+ESC [ Pn g Tab Clear
+ Pn = None or 0 Clear Tab at Current Position
+ 3 Clear All Tabs
+ESC [ Pn ; Pn r (V) Set Scrolling Region
+ESC [ Pn I (A) Horizontal Tab
+ESC [ Pn Z (A) Backward Tab
+ESC [ Pn L (A) Insert Line
+ESC [ Pn M (A) Delete Line
+ESC [ Pn @@ (A) Insert Character
+ESC [ Pn P (A) Delete Character
+ESC [ Pn S Scroll Scrolling Region Up
+ESC [ Pn T Scroll Scrolling Region Down
+ESC [ Ps ;...; Ps h Set Mode
+ESC [ Ps ;...; Ps l Reset Mode
+ Ps = 4 (A) Insert Mode
+ 20 (A) @samp{Automatic Linefeed} Mode.
+ 34 Normal Cursor Visibility
+ ?1 (V) Application Cursor Keys
+ ?3 (V) Change Terminal Width to 132 columns
+ ?5 (V) Reverse Video
+ ?6 (V) @samp{Origin} Mode
+ ?7 (V) @samp{Wrap} Mode
+ ?25 (V) Visible Cursor
+ESC [ 5 i (A) Start relay to printer (ANSI Media Copy)
+ESC [ 4 i (A) Stop relay to printer (ANSI Media Copy)
+ESC [ 8 ; Ph ; Pw t Resize the window to @samp{Ph} lines and
+ @samp{Pw} columns (SunView special)
+ESC [ c Send VT100 Identification String
+ESC [ x (V) Send Terminal Parameter Report
+ESC [ > c Send Secondary Device Attributes String
+ESC [ 6 n Send Cursor Position Report
+
+@end example
+
+
+@node Input Translation, Digraph, Control Sequences, Virtual Terminal
+@section Input Translation
+@cindex input translation
+In order to do a full VT100 emulation @code{screen} has to detect
+that a sequence of characters in the input stream was generated
+by a keypress on the user's keyboard and insert the VT100
+style escape sequence. @code{Screen} has a very flexible way of doing
+this by making it possible to map arbitrary commands on arbitrary
+sequences of characters. For standard VT100 emulation the command
+will always insert a string in the input buffer of the window
+(see also command @code{stuff}, @pxref{Paste}).
+Because the sequences generated by a keypress can
+change after a reattach from a different terminal type, it is
+possible to bind commands to the termcap name of the keys.
+@code{Screen} will insert the correct binding after each
+reattach. @xref{Bindkey} for further details on the syntax and examples.
+
+Here is the table of the default key bindings. (A) means that the
+command is executed if the keyboard is switched into application
+mode.
+@example
+
+Key name Termcap name Command
+-----------------------------------------------------
+Cursor up ku stuff \033[A
+ stuff \033OA (A)
+Cursor down kd stuff \033[B
+ stuff \033OB (A)
+Cursor right kr stuff \033[C
+ stuff \033OC (A)
+Cursor left kl stuff \033[D
+ stuff \033OD (A)
+Function key 0 k0 stuff \033[10~
+Function key 1 k1 stuff \033OP
+Function key 2 k2 stuff \033OQ
+Function key 3 k3 stuff \033OR
+Function key 4 k4 stuff \033OS
+Function key 5 k5 stuff \033[15~
+Function key 6 k6 stuff \033[17~
+Function key 7 k7 stuff \033[18~
+Function key 8 k8 stuff \033[19~
+Function key 9 k9 stuff \033[20~
+Function key 10 k; stuff \033[21~
+Function key 11 F1 stuff \033[22~
+Function key 12 F2 stuff \033[23~
+Backspace kb stuff \010
+Home kh stuff \033[1~
+End kH stuff \033[4~
+Insert kI stuff \033[2~
+Delete kD stuff \033[3~
+Page up kP stuff \033[5~
+Page down kN stuff \033[6~
+Keypad 0 f0 stuff 0
+ stuff \033Op (A)
+Keypad 1 f1 stuff 1
+ stuff \033Oq (A)
+Keypad 2 f2 stuff 2
+ stuff \033Or (A)
+Keypad 3 f3 stuff 3
+ stuff \033Os (A)
+Keypad 4 f4 stuff 4
+ stuff \033Ot (A)
+Keypad 5 f5 stuff 5
+ stuff \033Ou (A)
+Keypad 6 f6 stuff 6
+ stuff \033Ov (A)
+Keypad 7 f7 stuff 7
+ stuff \033Ow (A)
+Keypad 8 f8 stuff 8
+ stuff \033Ox (A)
+Keypad 9 f9 stuff 9
+ stuff \033Oy (A)
+Keypad + f+ stuff +
+ stuff \033Ok (A)
+Keypad - f- stuff -
+ stuff \033Om (A)
+Keypad * f* stuff *
+ stuff \033Oj (A)
+Keypad / f/ stuff /
+ stuff \033Oo (A)
+Keypad = fq stuff =
+ stuff \033OX (A)
+Keypad . f. stuff .
+ stuff \033On (A)
+Keypad , f, stuff ,
+ stuff \033Ol (A)
+Keypad enter fe stuff \015
+ stuff \033OM (A)
+@end example
+
+@node Digraph, Bell, Input Translation, Virtual Terminal
+@section Digraph
+
+@kindex C-v
+@deffn Command digraph [preset]
+(none)@*
+This command prompts the user for a digraph sequence. The next
+two characters typed are looked up in a builtin table and the
+resulting character is inserted in the input stream. For example,
+if the user enters @samp{a"}, an a-umlaut will be inserted. If the
+first character entered is a 0 (zero), @code{screen}
+will treat the following charcters (up to three) as an octal
+number instead. The optional argument @var{preset}
+is treated as user input, thus one can create an "umlaut" key.
+For example the command @samp{bindkey ^K digraph '"'} enables the user
+to generate an a-umlaut by typing @samp{CTRL-K a}.
+@end deffn
+
+@node Bell, Clear, Digraph, Virtual Terminal
+@section Bell
+
+@deffn Command bell_msg [message]
+(none)@*
+When a bell character is sent to a background window, @code{screen}
+displays a notification in the message line. The notification message
+can be re-defined by means of the @code{bell} command. Each occurrence
+of @samp{%} in @var{message} is replaced by the number of the window to
+which a bell has been sent, and each occurrence of @samp{~} is replaced
+by the definition for bell in your termcap (usually an audible bell).
+The default message is
+
+@example
+'Bell in window %'
+@end example
+
+An empty message can be supplied to the @code{bell_msg} command to suppress
+output of a message line (@code{bell_msg ""}).
+@end deffn
+
+@kindex C-g
+@deffn Command vbell [state]
+(@kbd{C-a C-g})@*
+Sets or toggles the visual bell setting for the current window. If
+@code{vbell} is switched to @samp{on}, but your
+terminal does not support a visual bell, the visual bell message is
+displayed in the status line when the bell character is received.
+Visual bell support of a terminal is
+defined by the termcap variable @code{vb}. @xref{Bell, , Visual Bell,
+termcap, The Termcap Manual}, for more information on visual bells.
+The equivalent terminfo capability is @code{flash}.
+
+Per default, @code{vbell} is @samp{off}, thus the audible bell is used.
+@end deffn
+
+@deffn Command vbell_msg [message]
+(none)@*
+Sets the visual bell message. @var{Message} is printed to the status
+line if the window receives a bell character (^G), @code{vbell} is
+set to @samp{on} and the terminal does not support a visual bell.
+The default message is @samp{Wuff, Wuff!!}.
+Without parameter, the current message is shown.
+@end deffn
+
+@deffn Command vbellwait sec
+(none)@*
+Define a delay in seconds after each display of @code{screen} 's visual
+bell message. The default is 1 second.
+@end deffn
+
+@node Clear, Info, Bell, Virtual Terminal
+@section Clear
+@kindex C
+@deffn Command clear
+(@kbd{C-a C})@*
+Clears the screen and saves its contents to the scrollback buffer.
+@end deffn
+
+@node Info, Redisplay, Clear, Virtual Terminal
+@section Info
+@kindex i
+@kindex C-i
+@deffn Command info
+(@kbd{C-a i}, @kbd{C-a C-i})@*
+Uses the message line to display some information about the current
+window: the cursor position in the form @samp{(@var{column},@var{row})}
+starting with @samp{(1,1)}, the terminal width and height plus the size
+of the scrollback buffer in lines, like in @samp{(80,24)+50}, various
+flag settings (flow-control, insert mode, origin mode, wrap mode,
+application-keypad mode, output logging, activity monitoring, and redraw
+(@samp{+} indicates enabled, @samp{-} not)), the currently active
+character set (@samp{G0}, @samp{G1}, @samp{G2}, or @samp{G3}), and in
+square brackets the terminal character sets that are currently
+designated as @samp{G0} through @samp{G3}. For system information use
+@code{time}.
+@end deffn
+
+@node Redisplay, Wrap, Info, Virtual Terminal
+@section Redisplay
+
+@deffn Command allpartial state
+(none)@*
+If set to on, only the current cursor line is refreshed on window change.
+This affects all windows and is useful for slow terminal lines. The
+previous setting of full/partial refresh for each window is restored
+with @code{allpartial off}. This is a global flag that immediately takes effect
+on all windows overriding the @code{partial} settings. It does not change the
+default redraw behaviour of newly created windows.
+@end deffn
+
+@deffn Command partial state
+(none)@*
+Defines whether the display should be refreshed (as with
+@code{redisplay}) after switching to the current window. This command
+only affects the current window. To immediately affect all windows use the
+@code{allpartial} command. Default is @samp{off}, of course. This default is
+fixed, as there is currently no @code{defpartial} command.
+@end deffn
+
+@kindex l
+@kindex C-l
+@deffn Command redisplay
+(@kbd{C-a l}, @kbd{C-a C-l})@*
+Redisplay the current window. Needed to get a full redisplay in
+partial redraw mode.
+@end deffn
+
+@node Wrap, Reset, Redisplay, Virtual Terminal
+@section Wrap
+
+@kindex r
+@kindex C-r
+@deffn Command wrap state
+(@kbd{C-a r}, @kbd{C-a C-r}) @*
+Sets the line-wrap setting for the current window. When line-wrap is
+on, the second consecutive printable character output at the last column
+of a line will wrap to the start of the following line. As an added
+feature, backspace (^H) will also wrap through the left margin to the
+previous line. Default is @samp{on}.
+@end deffn
+
+@deffn Command defwrap state
+(none) @*
+Same as the @code{wrap} command except that the default setting for new
+windows is changed. Initially line-wrap is on and can be toggled with the
+@code{wrap} command (@kbd{C-a r}) or by means of "C-a : wrap on|off".
+@end deffn
+
+@node Reset, Window Size, Wrap, Virtual Terminal
+@section Reset
+@kindex Z
+@deffn Command reset
+(@kbd{C-a Z})@*
+Reset the virtual terminal to its ``power-on'' values. Useful when strange
+settings (like scroll regions or graphics character set) are left over from
+an application.
+@end deffn
+
+@node Window Size, Character Processing, Reset, Virtual Terminal
+@section Window Size
+@kindex W
+@deffn Command width [num]
+(@kbd{C-a W})@*
+Toggle the window width between 80 and 132 columns, or set it to
+@var{num} columns if an argument is specified. This requires a
+capable terminal and the termcap entries @samp{Z0} and @samp{Z1}. See
+the @code{termcap} command (@pxref{Termcap}), for more information.
+@end deffn
+
+@deffn Command height @var{[lines]}
+(none)@*
+Set the display height to a specified number of lines. When no
+argument is given it toggles between 24 and 42 lines display.
+@end deffn
+
+@node Character Processing, ,Window Size, Virtual Terminal
+@section Character Processing
+
+@deffn Command c1 [state]
+(none)@*
+Change c1 code processing. @samp{c1 on} tells screen to treat
+the input characters between 128 and 159 as control functions.
+Such an 8-bit code is normally the same as ESC followed by the
+corresponding 7-bit code. The default setting is to process c1
+codes and can be changed with the @samp{defc1} command.
+Users with fonts that have usable characters in the
+c1 positions may want to turn this off.
+
+@end deffn
+@deffn Command gr [state]
+(none)@*
+Turn GR charset switching on/off. Whenever screens sees an input
+char with an 8th bit set, it will use the charset stored in the
+GR slot and print the character with the 8th bit stripped. The
+default (see also @samp{defgr}) is not to process GR switching because
+otherwise the ISO88591 charset would not work.
+@end deffn
+
+@deffn Command kanji wtype [dtype]
+(none)@*
+Tell screen how to process kanji input/output. @var{wtype} and
+@var{dtype} must be one of the strings @samp{jis}, @samp{euc} or
+@samp{sjis}. The first argument sets the kanji type of the current
+window. Each window can emulate a different type. The optional second
+parameter tells screen how to write the kanji codes to the
+connected terminal. The preferred method of setting the display type
+is to use the @samp{KJ} termcap entry. @xref{Special Capabilities}.
+See also @samp{defkanji}, which changes the default setting of a new
+window.
+@end deffn
+
+@deffn Command charset set
+(none)@*
+Change the current character set slot designation and charset
+mapping. The first four character of @var{set}
+are treated as charset designators while the fifth and sixth
+character must be in range @samp{0} to @samp{3} and set the GL/GR
+charset mapping. On every position a @samp{.} may be used to indicate
+that the corresponding charset/mapping should not be changed
+(@var{set} is padded to six characters internally by appending
+@samp{.} chars). New windows have @samp{BBBB02} as default
+charset, unless a @samp{kanji} command is active.
+
+The current setting can be viewed with the @xref{Info} command.
+@end deffn
+
+@deffn Command defc1 state
+(none)@*
+Same as the @samp{c1} command except that the default setting for
+new windows is changed. Initial setting is @samp{on}.
+@end deffn
+
+@deffn Command defgr state
+(none)@*
+Same as the @samp{gr} command except that the default setting for
+new windows is changed. Initial setting is @samp{off}.
+@end deffn
+
+@deffn Command defkanji wtype
+(none)@*
+Same as the @samp{kanji} command except that the default setting for
+new windows is changed. Initial setting is @samp{off}, i.e. @samp{jis}.
+@end deffn
+
+@deffn Command defcharset [set]
+Like the @samp{charset} command except that the default setting for
+new windows is changed. Shows current default if called without
+argument.
+@end deffn
+
+@node Copy and Paste, Subprocess Execution, Virtual Terminal, Top
+@chapter Copy and Paste
+@cindex copy and paste
+
+For those confined to a hardware terminal, these commands provide a cut
+and paste facility more powerful than those provided by most windowing
+systems.
+
+@menu
+* Copy:: Copy from scrollback to buffer
+* Paste:: Paste from buffer into window
+* Registers:: Longer-term storage
+* Screen-Exchange:: Sharing data between screen users
+* History:: Recalling previous input
+@end menu
+
+@node Copy, Paste, , Copy and Paste
+@section Copying
+@cindex marking
+@cindex scrollback
+@kindex [
+@kindex C-[
+@kindex ESC
+@deffn Command copy
+(@kbd{C-a [}, @kbd{C-a C-[}, @kbd{C-a @key{ESC}})@*
+Enter copy/scrollback mode. This allows you to copy text from the
+current window and its history into the paste buffer. In this mode a
+@code{vi}-like full screen editor is active, with controls as
+outlined below.
+@end deffn
+
+@menu
+* Line Termination:: End copied lines with CR/LF
+* Scrollback:: Set the size of the scrollback buffer
+* Copy Mode Keys:: Remap keys in copy mode
+* Movement:: Move around in the scrollback buffer
+* Marking:: Select the text you want
+* Repeat count:: Repeat a command
+* Searching:: Find the text you want
+* Specials:: Other random keys
+@end menu
+
+@node Line Termination, Scrollback, , Copy
+@subsection CR/LF
+@deffn Command crlf [state]
+(none)@*
+This affects the copying of text regions with the @kbd{C-a [} command.
+If it is set to @samp{on}, lines will be separated by the two character
+sequence @samp{CR}/@samp{LF}. Otherwise only @samp{LF} is used.
+@code{crlf} is off by default.
+When no parameter is given, the state is toggled.
+@end deffn
+
+@node Scrollback, Copy Mode Keys, Line Termination, Copy
+@subsection Scrollback
+@deffn Command defscrollback num
+(none)@*
+Same as the @code{scrollback} command except that the default setting
+for new windows is changed. Defaults to 100.
+@end deffn
+
+@deffn Command scrollback num
+(none)@*
+Set the size of the scrollback buffer for new windows to @var{num}
+lines. The default scrollback is 100 lines. Use @kbd{C-a i} to view
+the current setting.
+@end deffn
+
+@node Copy Mode Keys, Movement, Scrollback, Copy
+@subsection markkeys
+@deffn Command markkeys string
+(none)@*
+This is a method of changing the keymap used for copy/history mode. The
+string is made up of @var{oldchar}=@var{newchar} pairs which are
+separated by @samp{:}. Example: The command @code{markkeys
+h=^B:l=^F:$=^E} would set some keys to be more familiar to @code{emacs}
+users.
+If your terminal sends characters, that cause you to abort copy mode,
+then this command may help by binding these characters to do nothing.
+The no-op character is `@' and is used like this: @code{markkeys @@=L=H}
+if you do not want to use the `H' or `L' commands any longer.
+As shown in this example, multiple keys can be assigned to one function
+in a single statement.
+@end deffn
+
+@node Movement, Marking, Copy Mode Keys, Copy
+@subsection Movement Keys
+
+@noindent
+@kbd{h}, @kbd{j}, @kbd{k}, @kbd{l} move the cursor line by line or
+column by column.
+
+@noindent
+@kbd{0}, @kbd{^} and @kbd{$} move to the leftmost column or to the first
+or last non-whitespace character on the line.
+
+@noindent
+@kbd{H}, @kbd{M} and @kbd{L} move the cursor to the leftmost column
+of the top, center or bottom line of the window.
+
+@noindent
+@kbd{+} and @kbd{-} move the cursor to the leftmost column of the next
+or previous line.
+
+@noindent
+@kbd{G} moves to the specified absolute line (default: end of buffer).
+
+@noindent
+@kbd{|} moves to the specified absolute column.
+
+@noindent
+@kbd{w}, @kbd{b}, @kbd{e} move the cursor word by word.
+
+@noindent
+@kbd{C-u} and @kbd{C-d} scroll the display up/down by the specified
+amount of lines while preserving the cursor position. (Default: half
+screenfull).
+
+@noindent
+@kbd{C-b} and @kbd{C-f} move the cursor up/down a full screen.
+
+@noindent
+@kbd{g} moves to the beginning of the buffer.
+
+@noindent
+@kbd{%} jumps to the specified percentage of the buffer.
+
+Note that Emacs-style movement keys can be specified by a .screenrc
+command. (@code{markkeys "h=^B:l=^F:$=^E"}) There is no simple method for
+a full emacs-style keymap, however, as this involves multi-character codes.
+
+@node Marking, Repeat count, Movement, Copy
+@subsection Marking
+
+The copy range is specified by setting two marks. The text between these
+marks will be highlighted. Press @kbd{space} to set the first or second
+mark respectively.
+
+@noindent
+@kbd{Y} and @kbd{y} can be used to mark one whole line or to mark from
+start of line.
+
+@noindent
+@kbd{W} marks exactly one word.
+
+@node Repeat count, Searching, Marking, Copy
+@subsection Repeat Count
+
+Any command in copy mode can be prefixed with a number (by pressing
+digits @kbd{0@dots{}9}) which is taken as a repeat count. Example:
+@kbd{C-a C-[ H 10 j 5 Y} will copy lines 11 to 15 into the paste buffer.
+
+@node Searching, Specials, Repeat count, Copy
+@subsection Searching
+
+@noindent
+@kbd{/} @code{vi}-like search forward.
+
+@noindent
+@kbd{?} @code{vi}-like search backward.
+
+@noindent
+@kbd{C-a s} @code{emacs} style incremental search forward.
+
+@noindent
+@kbd{C-r} @code{emacs} style reverse i-search.
+
+@node Specials, , Searching, Copy
+@subsection Specials
+
+There are, however, some keys that act differently here from in
+@code{vi}. @code{Vi} does not allow to yank rectangular blocks of text,
+but @code{screen} does. Press
+
+@noindent
+@kbd{c} or @kbd{C} to set the left or right margin respectively. If no
+repeat count is given, both default to the current cursor position.@*
+Example: Try this on a rather full text screen:
+@kbd{C-a [ M 20 l SPACE c 10 l 5 j C SPACE}.
+
+@noindent
+This moves one to the middle line of the screen, moves in 20 columns left,
+marks the beginning of the paste buffer, sets the left column, moves 5 columns
+down, sets the right column, and then marks the end of
+the paste buffer. Now try:@*
+@kbd{C-a [ M 20 l SPACE 10 l 5 j SPACE}
+
+@noindent
+and notice the difference in the amount of text copied.
+
+@noindent
+@kbd{J} joins lines. It toggles between 3 modes: lines separated by a
+newline character (012), lines glued seamless, or lines separated by a
+single space. Note that you can prepend the newline character with
+a carriage return character, by issuing a @code{set crlf on}.
+
+@noindent
+@kbd{v} is for all the @code{vi} users who use @code{:set numbers} - it
+toggles the left margin between column 9 and 1.
+
+@noindent
+@kbd{a} before the final space key turns on append mode. Thus
+the contents of the paste buffer will not be overwritten, but appended to.
+
+@noindent
+@kbd{A} turns on append mode and sets a (second) mark.
+
+@noindent
+@kbd{>} sets the (second) mark and writes the contents of the paste buffer
+to the screen-exchange file (@file{/tmp/screen-exchange} per default)
+once copy-mode is finished. @xref{Screen-Exchange}.@*
+This example demonstrates how to dump the
+whole scrollback buffer to that file: @*@kbd{C-a [ g SPACE G $ >}.
+
+@noindent
+@kbd{C-g} gives information about the current line and column.
+
+@noindent
+@kbd{x} exchanges the first mark and the current cursor position. You
+can use this to adjust an already placed mark.
+
+@noindent
+@kbd{@@} does nothing. Absolutely nothing. Does not even exit copy
+mode.
+
+@noindent
+All keys not described here exit copy mode.
+
+@node Paste, Registers, Copy, Copy and Paste
+@section Paste
+
+@kindex ]
+@kindex C-]
+@deffn Command paste [registers [destination]]
+(@kbd{C-a ]}, @kbd{C-a C-]})@*
+Write the (concatenated) contents of the specified registers to the stdin
+stream of the current window. The register @samp{.} is treated as the
+paste buffer. If no parameter is specified the user is prompted to enter a
+single register. The paste buffer can be filled with the
+@code{copy}, @code{history} and @code{readbuf} commands.
+Other registers can be filled with the @code{register}, @code{readreg} and
+@code{paste} commands.
+If @code{paste} is called with a second argument, the contents of the specified
+registers is pasted into the named destination register rather than
+the window. If @samp{.} is used as the second argument, the display's paste
+buffer is the destination.
+Note, that @code{paste} uses a wide variety of resources: Usually both, a
+current window and a current display are required. But whenever a second
+argument is specified no current window is needed. When the source specification
+only contains registers (not the paste buffer) then there need not be a current
+display (terminal attached), as the registers are a global resource. The
+paste buffer exists once for every user.
+@end deffn
+
+@deffn Command pastefont [state]
+Tell screen to include font information in the paste buffer. The
+default is not to do so. This command is especially usefull for
+multi character fonts like kanji.
+@end deffn
+
+@deffn Command slowpaste msec
+(none)@*
+Define the speed text is inserted by the @code{paste} command.
+If the slowpaste value is nonzero text is written character by character.
+@code{screen} will pause for @var{msec} milliseconds after each write
+to allow the application to process the input. only use @code{slowpaste} if
+your underlying system exposes flow control problems while pasting large
+amounts of text.
+@end deffn
+
+@deffn Command readreg [register [filename]]
+(none)@*
+Does one of two things, dependent on number of arguments: with zero or one
+arguments it it duplicates the paste buffer contents into the register specified
+or entered at the prompt. With two arguments it reads the contents of the named
+file into the register, just as @code{readbuf} reads the screen-exchange file
+into the paste buffer.
+The following example will paste the system's password file into
+the screen window (using register p, where a copy remains):
+
+@example
+C-a : readreg p /etc/passwd
+C-a : paste p
+@end example
+@end deffn
+
+@node Registers, Screen-Exchange, Paste, Copy and Paste
+@section Registers
+
+@deffn Command copy_reg [key]
+(none)@*
+Removed. Use @code{readreg} instead.
+@end deffn
+
+@deffn Command ins_reg [key]
+(none)@*
+Removed. Use @code{paste} instead.
+@end deffn
+
+@deffn Command process [key]
+(none)@*
+Stuff the contents of the specified register into the @code{screen}
+input queue. If no argument is given you are prompted for a
+register name. The text is parsed as if it had been typed in from the user's
+keyboard. This command can be used to bind multiple actions to a single key.
+@end deffn
+
+@deffn Command register key string
+(none)@*
+Save the specified @var{string} to the register @var{key}.
+@end deffn
+
+@deffn Command stuff string
+(none)@*
+Stuff the string @var{string} in the input buffer of the current window.
+This is like the @code{paste} command, but with much less overhead.
+You cannot paste large buffers with the @code{stuff} command. It is most
+useful for key bindings. @xref{Bindkey}
+
+@end deffn
+
+@node Screen-Exchange, History, Registers, Copy and Paste
+@section Screen-Exchange
+
+@deffn Command bufferfile [exchange-file]
+(none)@*
+Change the filename used for reading and writing with the paste buffer.
+If the @var{exchange-file} parameter is omitted, @code{screen} reverts
+to the default of @file{/tmp/screen-exchange}. The following example
+will paste the system's password file into the screen window (using the
+paste buffer, where a copy remains):
+
+@example
+C-a : bufferfile /etc/passwd
+C-a < C-a ]
+C-a : bufferfile
+@end example
+@end deffn
+
+@kindex <
+@deffn Command readbuf
+(@kbd{C-a <})@*
+Reads the contents of the current screen-exchange file into the paste buffer.
+@end deffn
+
+@kindex =
+@deffn Command removebuf
+(@kbd{C-a =})@*
+Unlinks the screen-exchange file.
+@end deffn
+
+@kindex >
+@deffn Command writebuf
+(@kbd{C-a >})@*
+Writes the contents of the paste buffer to a public accessible
+screen-exchange file. This is thought of as a primitive means of
+communication between @code{screen} users on the same host. See also
+@kbd{C-a @key{ESC}} (@pxref{Copy}).
+@end deffn
+
+@node History, , Screen-Exchange, Copy and Paste
+@section History
+
+@kindex @{
+@deffn Command history
+(@kbd{C-a @{})@*
+Usually users work with a shell that allows easy access to previous
+commands. For example, @code{csh} has the command @code{!!} to repeat
+the last command executed. @code{screen} provides a primitive way of
+recalling ``the command that started @dots{}'': You just type the first
+letter of that command, then hit @kbd{C-a @{} and @code{screen} tries to
+find a previous line that matches with the prompt character to the left
+of the cursor. This line is pasted into this window's input queue. Thus
+you have a crude command history (made up by the visible window and its
+scrollback buffer).
+@end deffn
+
+@node Subprocess Execution, Key Binding, Copy and Paste, Top
+@chapter Subprocess Execution
+Control Input or Output of a window by another filter process.
+Use with care!
+
+@menu
+* Exec:: The @code{exec} command syntax.
+* Using Exec:: Weird things that filters can do.
+@end menu
+
+@node Exec, Using Exec, , Subprocess Execution
+@section Exec
+@deffn Command exec @var{[[fdpat] newcommand [args ... ]]}
+(none)@*
+Run a unix subprocess (specified by an executable path @var{newcommand} and
+its optional arguments) in the current window. The flow of data between
+newcommand's stdin/stdout/stderr, the process already running (shell) and
+screen itself (window) is controlled by the filedescriptor pattern @var{fdpat}.
+This pattern is basically a three character sequence representing stdin, stdout
+and stderr of newcommand. A dot (@code{.}) connects the file descriptor
+to screen. An exclamation mark (@code{!}) causes the file descriptor to be
+connected to the already running process. A colon (@code{:}) combines both.
+@*
+User input will go to newcommand unless newcommand requests the old process'
+output (@var{fdpat}s first character is @samp{!} or @samp{:}) or a pipe symbol
+(@samp{|}) is added to the end of @var{fdpat}.
+@*
+Invoking @code{exec} without arguments shows name and arguments of the currently
+running subprocess in this window.
+@*
+When a subprocess is running the @code{kill} command will affect it instead of
+the window's process.
+@*
+Refer to the postscript file @file{doc/fdpat.ps} for a confusing
+illustration of all 21 possible combinations. Each drawing shows the digits
+2, 1, 0 representing the three file descriptors of newcommand. The box
+marked `W' is usual pty that has the application-process on its slave side.
+The box marked `P' is the secondary pty that now has screen at its master
+side.
+@end deffn
+
+@node Using Exec, , Exec, Subprocess Execution
+@section Using Exec
+@noindent
+Abbreviations:
+
+@itemize @bullet
+@item
+Whitespace between the word @samp{exec} and @var{fdpat} and the command name
+can be omitted.
+
+@item
+Trailing dots and a @var{fdpat} consisting only of dots can be omitted.
+
+@item
+A simple @samp{|} is synonymous for the @samp{!..|} pattern.
+
+@item
+The word @samp{exec} can be omitted when the @samp{|} abbreviation is used.
+
+@item
+The word @samp{exec} can always be replaced by leading @samp{!}.
+@end itemize
+
+@noindent
+Examples:
+
+@table @code
+@item !/bin/sh
+@itemx exec /bin/sh
+@itemx exec ... /bin/sh
+Creates another shell in the same window, while the original shell is still
+running. Output of both shells is displayed and user input is sent to the new
+@file{/bin/sh}.
+
+@item !!stty 19200
+@itemx exec!stty 19200
+@itemx exec !.. stty 19200
+Set the speed of the window's tty. If your stty command operates on stdout, then
+add another @samp{!}. This is a useful command, when a screen window is
+directly connected to a serial line that needs to be configured.
+
+@item |less
+@itemx exec !..| less
+This adds a pager to the window output. The special character @samp{|} is
+needed to give the user control over the pager although it gets its input from
+the window's process. This works, because @samp{less} listens on stderr
+(a behavior that @code{screen} would not expect without the @samp{|})
+when its stdin is not a tty. @code{Less} versions newer than 177 fail miserably
+here; good old @code{pg} still works.
+
+@item !:sed -n s/.*Error.*/\007/p
+Sends window output to both, the user and the sed command. The sed inserts an
+additional bell character (oct. 007) to the window output seen by screen.
+This will cause 'Bell in window x' messages, whenever the string @samp{Error}
+appears in the window.
+@end table
+
+@node Key Binding, Flow Control, Subprocess Execution, Top
+@chapter Key Binding
+@cindex key binding
+@cindex binding
+
+You may disagree with some of the default bindings (I know I do). The
+@code{bind} command allows you to redefine them to suit your
+preferences.
+
+@menu
+* Bind:: @code{bind} syntax.
+* Bind Examples:: Using @code{bind}.
+* Command Character:: The character used to start keyboard commands.
+* Help:: Show current key bindings.
+* Bindkey:: @code{bindkey} syntax.
+* Bindkey Examples:: Some easy examples.
+* Bindkey Control:: How to control the bindkey mechanism.
+@end menu
+
+@node Bind, Bind Examples, , Key Binding
+@section The @code{bind} command
+@deffn Command bind key [command [args]]
+(none)@*
+Bind a command to a key. The @var{key} argument is either a single
+character, a two-character sequence of the form @samp{^x} (meaning
+@kbd{C-x}), a backslash followed by an octal number (specifying the
+ASCII code of the character), or a backslash followed by a second
+character, such as @samp{\^} or @samp{\\}. The argument can also be
+quoted, if you like. If no further argument is given, any previously
+established binding for this key is removed. The @var{command}
+argument can be any command (@pxref{Command Index}).
+
+By default, most suitable commands are bound to one or more keys
+(@pxref{Default Key Bindings}; for instance, the command to create a
+new window is bound to @kbd{C-c} and @kbd{c}. The @code{bind} command
+can be used to redefine the key bindings and to define new bindings.
+@end deffn
+
+@node Bind Examples, Command Character, Bind, Key Binding
+@section Examples of the @code{bind} command
+@noindent
+Some examples:
+
+@example
+bind ' ' windows
+bind ^f screen telnet foobar
+bind \033 screen -ln -t root -h 1000 9 su
+@end example
+
+@noindent
+would bind the space key to the command that displays a list of windows
+(so that the command usually invoked by @kbd{C-a C-w} would also be
+available as @kbd{C-a space}), bind @kbd{C-f} to the command
+``create a window with a TELNET connection to foobar'', and bind
+@key{ESC} to the command that creates an non-login window with title
+@samp{root} in slot #9, with a super-user shell and a scrollbackbuffer
+of 1000 lines.
+
+@node Command Character, Help, Bind Examples, Key Binding
+@section Command Character
+
+@deffn Command escape xy
+(none)@*
+Set the command character to @var{x} and the character generating a
+literal command character to @var{y} (just like with the @samp{-e}
+option). Each argument is either a single character, a two-character
+sequence of the form @samp{^x} (meaning @kbd{C-x}), a backslash followed
+by an octal number (specifying the ASCII code of the character), or a
+backslash followed by a second character, such as @samp{\^} or
+@samp{\\}. The default is @samp{^Aa}, but @samp{``} is recommended by
+one of the authors.
+@end deffn
+
+@deffn Command defescape xy
+(none)@*
+Set the default command characters. This is equivalent to the command
+@code{escape} except that it is useful for multiuser sessions only.
+In a multiuser session
+@code{escape} changes the command character of the calling user, where
+@code{defescape} changes the default command characters for users that
+will be added later.
+@end deffn
+
+@kindex a
+@deffn Command meta
+(@kbd{C-a a})@*
+Send the command character (@kbd{C-a}) to the process in the current
+window. The keystroke for this command is the second parameter to the
+@samp{-e} command line switch (@pxref{Invoking Screen}), or the
+@code{escape} .screenrc directive.
+@end deffn
+
+@deffn Command command
+(none)@*
+This command has the same effect as typing the screen escape character
+(@kbd{C-a}). It is probably only useful for key bindings.
+@xref{Bindkey}.
+@end deffn
+
+@node Help, Bindkey, Command Character, Key Binding
+@section Help
+@kindex ?
+@deffn Command help
+(@kbd{C-a ?})@*
+Displays a help screen showing you all the key bindings. The first
+pages list all the internal commands followed by their bindings.
+Subsequent pages will display the custom commands, one command per key.
+Press space when you're done reading each page, or return to exit early.
+All other characters are ignored.
+@xref{Default Key Bindings}.
+@end deffn
+
+@node Bindkey, Bindkey Examples, Help, Key Binding
+@section Bindkey
+@deffn Command bindkey @var{[opts] [string [cmd args]]}
+(none)@*
+This command manages screen's input translation tables. Every
+entry in one of the tables tells screen how to react if a certain
+sequence of characters is encountered. There are three tables:
+one that should contain actions programmed by the user, one for
+the default actions used for terminal emulation and one for
+screen's copy mode to do cursor movement. @xref{Input Translation}
+for a list of default key bindings.
+
+If the @samp{-d}
+option is given, bindkey modifies the default table, @samp{-m}
+changes the copy mode table and with neither option the user
+table is selected. The argument @samp{string} is the sequence of
+characters to which an action is bound. This can either be a fixed
+tring or a termcap keyboard capability name (selectable with the
+@samp{-k} option).
+
+Some keys on a VT100 terminal can send a different
+string if application mode is turned on (e.g. the cursor keys).
+Such keys have two entries in the translation table. You can
+select the application mode entry by specifying the @samp{-a}
+option.
+
+The @samp{-t} option tells screen not to do intercharacter
+timing. One cannot turn off the timing if a termcap capabilty is
+used.
+
+@samp{cmd} can be any of screen's commands with an arbitrary
+number of @samp{args}. If @samp{cmd} is omitted the keybinding is
+removed from the table.
+@end deffn
+
+@node Bindkey Examples, Bindkey Control,Bindkey, Key Binding
+@section Bindkey Examples
+@noindent
+Here are some examples of keyboard bindings:
+
+@example
+bindkey -d
+@end example
+@noindent
+Show all of the default key bindings. The application mode entries
+are marked with [A].
+
+@example
+bindkey -k k1 select 1
+@end example
+@noindent
+Make the "F1" key switch to window one.
+
+@example
+bindkey -t foo stuff barfoo
+@end example
+@noindent
+Make @samp{foo} an abrevation of the word @samp{barfoo}. Timeout is
+disabled so that users can type slowly.
+
+@example
+bindkey "\024" mapdefault
+@end example
+@noindent
+This keybinding makes @samp{C-t} an escape character for keybindings. If
+you did the above @samp{stuff barfoo} binding, you can enter the word
+@samp{foo} by typing @samp{C-t foo}. If you want to insert a
+@samp{C-t} you have to press the key twice (i.e. escape the escape
+binding).
+
+@example
+bindkey -k F1 command
+@end example
+@noindent
+Make the F11 (not F1!) key an alternative screen
+escape (besides @samp{C-a}).
+
+@node Bindkey Control, , Bindkey Examples, Key Binding
+@section Bindkey Control
+@deffn Command mapdefault
+(none)@*
+Tell screen that the next input character should only be looked up
+in the default bindkey table.
+@end deffn
+@deffn Command mapnotnext
+(none)@*
+Like mapdefault, but don't even look in the default bindkey table.
+@end deffn
+@deffn Command maptimeout timo
+(none)@*
+Set the intercharacter timer for input sequence detection to a timeout
+of @var{timo} ms. The default timeout is 300ms. Maptimeout with no
+arguments shows the current setting.
+@end deffn
+
+@node Flow Control, Termcap, Key Binding, Top
+@chapter Flow Control
+@cindex flow control
+
+@code{screen} can trap flow control characters or pass them to the
+program, as you see fit. This is useful when your terminal wants to use
+XON/XOFF flow control and you are running a program which wants to use
+^S/^Q for other purposes (i.e. @code{emacs}).
+
+@menu
+* Flow Control Summary:: The effect of @code{screen} flow control
+* Flow:: Setting the flow control behavior
+* XON/XOFF:: Sending XON or XOFF to the window
+@end menu
+
+@node Flow Control Summary, Flow, , Flow Control
+@section About @code{screen} flow control settings
+Each window has a flow-control setting that determines how screen deals
+with the XON and XOFF characters (and perhaps the interrupt character).
+When flow-control is turned off, screen ignores the XON and XOFF
+characters, which allows the user to send them to the current program by
+simply typing them (useful for the @code{emacs} editor, for instance).
+The trade-off is that it will take longer for output from a
+``normal'' program to pause in response to an XOFF. With
+flow-control turned on, XON and XOFF characters are used to immediately
+pause the output of the current window. You can still send these
+characters to the current program, but you must use the appropriate
+two-character screen commands (typically @kbd{C-a q} (xon) and @kbd{C-a
+s} (xoff)). The xon/xoff commands are also useful for typing C-s and
+C-q past a terminal that intercepts these characters.
+
+Each window has an initial flow-control value set with either the
+@samp{-f} option or the @code{defflow} command. By default the
+windows are set to automatic flow-switching. It can then be toggled
+between the three states 'fixed on', 'fixed off' and 'automatic'
+interactively with the @code{flow} command bound to @kbd{C-a f}.
+
+The automatic flow-switching mode deals with flow control using the
+TIOCPKT mode (like @code{rlogin} does). If the tty driver does not
+support TIOCPKT, screen tries to determine the right mode based on the
+current setting of the application keypad --- when it is enabled,
+flow-control is turned off and visa versa. Of course, you can still
+manipulate flow-control manually when needed.
+
+If you're running with flow-control enabled and find that pressing the
+interrupt key (usually C-c) does not interrupt the display until another
+6-8 lines have scrolled by, try running screen with the @samp{interrupt}
+option (add the @samp{interrupt} flag to the @code{flow} command in your
+.screenrc, or use the @samp{-i} command-line option). This causes the
+output that @code{screen} has accumulated from the interrupted program
+to be flushed. One disadvantage is that the virtual terminal's memory
+contains the non-flushed version of the output, which in rare cases can
+cause minor inaccuracies in the output. For example, if you switch
+screens and return, or update the screen with @kbd{C-a l} you would see
+the version of the output you would have gotten without @samp{interrupt}
+being on. Also, you might need to turn off flow-control (or use
+auto-flow mode to turn it off automatically) when running a program that
+expects you to type the interrupt character as input, as the
+@samp{interrupt} parameter only takes effect when flow-control is
+enabled. If your program's output is interrupted by mistake, a simple
+refresh of the screen with @kbd{C-a l} will restore it. Give each mode
+a try, and use whichever mode you find more comfortable.
+
+@node Flow, XON/XOFF, Flow Control Summary, Flow Control
+@section Flow
+@deffn Command defflow fstate [interrupt]
+(none)@*
+Same as the @code{flow} command except that the default setting for new
+windows is changed. Initial setting is `auto'.
+Specifying @code{flow auto interrupt} has the same effect as the
+command-line options @samp{-fa} and @samp{-i}.
+Note that if @samp{interrupt} is enabled, all existing displays are
+changed immediately to forward interrupt signals.
+@end deffn
+
+@kindex f
+@kindex C-f
+@deffn Command flow [fstate]
+(@kbd{C-a f}, @kbd{C-a C-f})@*
+Sets the flow-control mode for this window to @var{fstate}, which can be
+@samp{on}, @samp{off} or @samp{auto}.
+Without parameters it cycles the current window's
+flow-control setting. Default is set by `defflow'.
+@end deffn
+
+@node XON/XOFF, , Flow, Flow Control
+@section XON and XOFF
+@kindex q
+@kindex C-q
+@deffn Command xon
+(@kbd{C-a q}, @kbd{C-a C-q})@*
+Send a ^Q (ASCII XON) to the program in the current window. Redundant
+if flow control is set to @samp{off} or @samp{auto}.
+@end deffn
+
+@kindex s
+@kindex C-s
+@deffn Command xoff
+(@kbd{C-a s}, @kbd{C-a C-s})@*
+Send a ^S (ASCII XOFF) to the program in the current window.
+@end deffn
+
+@node Termcap, Message Line, Flow Control, Top
+@chapter Termcap
+
+@code{screen} demands the most out of your terminal so that it can
+perform its VT100 emulation most efficiently. These functions provide
+means for tweaking the termcap entries for both your physical terminal
+and the one simulated by @code{screen}.
+
+@menu
+* Window Termcap:: Choosing a termcap entry for the window.
+* Dump Termcap:: Write out a termcap entry for the window.
+* Termcap Syntax:: The @code{termcap} and @code{terminfo} commands.
+* Termcap Examples:: Uses for @code{termcap}.
+* Special Capabilities:: Non-standard capabilities used by @code{screen}.
+* Autonuke:: Flush unseen output
+* Obuflimit:: Allow pending output when reading more
+* Character Translation:: Emulating fonts and charsets.
+@end menu
+
+@node Window Termcap, Dump Termcap, , Termcap
+@section Choosing the termcap entry for a window
+Usually @code{screen} tries to emulate as much of the VT100/ANSI
+standard as possible. But if your terminal lacks certain capabilities
+the emulation may not be complete. In these cases @code{screen} has to
+tell the applications that some of the features are missing. This is no
+problem on machines using termcap, because @code{screen} can use the
+@code{$TERMCAP} variable to customize the standard screen termcap.
+
+But if you do a rlogin on another machine or your machine supports only
+terminfo this method fails. Because of this @code{screen} offers a way
+to deal with these cases. Here is how it works:
+
+When @code{screen} tries to figure out a terminal name for itself, it
+first looks for an entry named @samp{screen.@var{term}}, where
+@var{term} is the contents of your @code{$TERM} variable. If no such entry
+exists, @code{screen} tries @samp{screen} (or @samp{screen-w}, if the
+terminal is wide (132 cols or more)). If even this entry cannot be
+found, @samp{vt100} is used as a substitute.
+
+The idea is that if you have a terminal which doesn't support an
+important feature (e.g. delete char or clear to EOS) you can build a new
+termcap/terminfo entry for @code{screen} (named
+@samp{screen.@var{dumbterm}}) in which this capability has been
+disabled. If this entry is installed on your machines you are able to
+do a rlogin and still keep the correct termcap/terminfo entry. The
+terminal name is put in the @code{$TERM} variable of all new windows.
+@code{screen} also sets the @code{$TERMCAP} variable reflecting the
+capabilities of the virtual terminal emulated.
+Furthermore, the variable @code{$WINDOW} is set to the window number of each
+window.
+
+The actual set of capabilities supported by the virtual terminal depends
+on the capabilities supported by the physical terminal. If, for
+instance, the physical terminal does not support underscore mode,
+@code{screen} does not put the @samp{us} and @samp{ue} capabilities into
+the window's @code{$TERMCAP} variable, accordingly. However, a minimum number
+of capabilities must be supported by a terminal in order to run
+@code{screen}; namely scrolling, clear screen, and direct cursor
+addressing (in addition, @code{screen} does not run on hardcopy
+terminals or on terminals that over-strike).
+
+Also, you can customize the @code{$TERMCAP} value used by @code{screen} by
+using the @code{termcap} command, or by defining the variable
+@code{$SCREENCAP} prior to startup. When the latter defined, its value will be
+copied verbatim into each window's @code{$TERMCAP} variable. This can either
+be the full terminal definition, or a filename where the terminal
+@samp{screen} (and/or @samp{screen-w}) is defined.
+
+Note that @code{screen} honors the @code{terminfo} command if the system
+uses the terminfo database rather than termcap. On such machines the
+@code{$TERMCAP} variable has no effect and you must use the
+@code{dumptermcap} command (@pxref{Dump Termcap}) and the @code{tic}
+program to generate terminfo entries for @code{screen} windows.
+
+When the boolean @samp{G0} capability is present in the termcap entry
+for the terminal on which @code{screen} has been called, the terminal
+emulation of @code{screen} supports multiple character sets. This
+allows an application to make use of, for instance, the VT100 graphics
+character set or national character sets. The following control
+functions from ISO 2022 are supported: @samp{lock shift G0} (@samp{SI}),
+@samp{lock shift G1} (@samp{SO}), @samp{lock shift G2}, @samp{lock shift
+G3}, @samp{single shift G2}, and @samp{single shift G3}. When a virtual
+terminal is created or reset, the ASCII character set is designated as
+@samp{G0} through @samp{G3}. When the @samp{G0} capability is present,
+screen evaluates the capabilities @samp{S0}, @samp{E0}, and @samp{C0} if
+present. @samp{S0} is the sequence the terminal uses to enable and start
+the graphics character set rather than @samp{SI}. @samp{E0} is the
+corresponding replacement for @samp{SO}. @samp{C0} gives a character by
+character translation string that is used during semi-graphics mode.
+This string is built like the @samp{acsc} terminfo capability.
+
+When the @samp{po} and @samp{pf} capabilities are present in the
+terminal's termcap entry, applications running in a @code{screen} window
+can send output to the printer port of the terminal. This allows a user
+to have an application in one window sending output to a printer
+connected to the terminal, while all other windows are still active (the
+printer port is enabled and disabled again for each chunk of output).
+As a side-effect, programs running in different windows can send output
+to the printer simultaneously. Data sent to the printer is not
+displayed in the window.
+
+Some capabilities are only put into the @code{$TERMCAP} variable of the virtual
+terminal if they can be efficiently implemented by the physical
+terminal. For instance, @samp{dl} (delete line) is only put into the
+@code{$TERMCAP} variable if the terminal supports either delete line itself or
+scrolling regions. Note that this may provoke confusion, when the
+session is reattached on a different terminal, as the value of @code{$TERMCAP}
+cannot be modified by parent processes. You can force @code{screen} to
+include all capabilities in @code{$TERMCAP} with the @samp{-a}
+command-line option (@pxref{Invoking Screen}).
+
+@node Dump Termcap, Termcap Syntax, Window Termcap, Termcap
+@section Write out the window's termcap entry
+@kindex .
+@deffn Command dumptermcap
+(@kbd{C-a .})@*
+Write the termcap entry for the virtual terminal optimized for the
+currently active window to the file @file{.termcap} in the user's
+@file{$HOME/.screen} directory (or wherever @code{screen} stores its
+sockets. @pxref{Files}). This termcap entry is identical to
+the value of the environment variable @code{$TERMCAP} that is set up by
+@code{screen} for each window. For terminfo based systems you will need
+to run a converter like @code{captoinfo} and then compile the entry with
+@code{tic}.
+@end deffn
+
+@node Termcap Syntax, Termcap Examples, Dump Termcap, Termcap
+@section The @code{termcap} command
+@deffn Command termcap term terminal-tweaks [window-tweaks]
+@deffnx Command terminfo term terminal-tweaks [window-tweaks]
+@deffnx Command termcapinfo term terminal-tweaks [window-tweaks]
+(none)@*
+Use this command to modify your terminal's termcap entry without going
+through all the hassles involved in creating a custom termcap entry.
+Plus, you can optionally customize the termcap generated for the
+windows.
+You have to place these commands in one of the screenrc starup files, as
+they are meaningless once the terminal emulator is booted.
+
+If your system uses the terminfo database rather than
+termcap, @code{screen} will understand the @code{terminfo} command which
+has the same effects as the @code{termcap} command. Two separate commands are
+provided, as there are subtle syntactic differences, e.g. when parameter
+interpolation (using @samp{%}) is required. Note that the termcap names of
+the capabilities have to be used with the @code{terminfo} command.
+
+In many cases, where the arguments are valid in both terminfo and termcap
+syntax, you can use the command @code{termcapinfo}, which is just a
+shorthand for a pair of @code{termcap} and @code{terminfo} commands with
+identical arguments.
+@end deffn
+
+The first argument specifies which terminal(s) should be affected by
+this definition. You can specify multiple terminal names by separating
+them with @samp{|}s. Use @samp{*} to match all terminals and @samp{vt*}
+to match all terminals that begin with @samp{vt}.
+
+Each @var{tweak} argument contains one or more termcap defines
+(separated by @samp{:}s) to be inserted at the start of the appropriate
+termcap entry, enhancing it or overriding existing values. The first
+tweak modifies your terminal's termcap, and contains definitions that
+your terminal uses to perform certain functions. Specify a null string
+to leave this unchanged (e.g. ""). The second (optional) tweak modifies
+all the window termcaps, and should contain definitions that screen
+understands (@pxref{Virtual Terminal}).
+
+@node Termcap Examples, Special Capabilities, Termcap Syntax, Termcap
+@section Termcap Examples
+Some examples:
+
+@example
+termcap xterm* xn:hs@@
+@end example
+
+@noindent
+Informs @code{screen} that all terminals that begin with @samp{xterm}
+have firm auto-margins that allow the last position on the screen to be
+updated (xn), but they don't really have a status line (no 'hs' --
+append @samp{@@} to turn entries off). Note that we assume @samp{xn} for
+all terminal names that start with @samp{vt}, but only if you don't
+specify a termcap command for that terminal.
+
+@example
+termcap vt* xn
+termcap vt102|vt220 Z0=\E[?3h:Z1=\E[?3l
+@end example
+
+@noindent
+Specifies the firm-margined @samp{xn} capability for all terminals that
+begin with @samp{vt}, and the second line will also add the
+escape-sequences to switch into (Z0) and back out of (Z1)
+132-character-per-line mode if this is a VT102 or VT220. (You must
+specify Z0 and Z1 in your termcap to use the width-changing commands.)
+
+@example
+termcap vt100 "" l0=PF1:l1=PF2:l2=PF3:l3=PF4
+@end example
+
+@noindent
+This leaves your vt100 termcap alone and adds the function key labels to
+each window's termcap entry.
+
+@example
+termcap h19|z19 am@@:im=\E@@:ei=\EO dc=\E[P
+@end example
+
+@noindent
+Takes a h19 or z19 termcap and turns off auto-margins (am@@) and enables
+the insert mode (im) and end-insert (ei) capabilities (the @samp{@@} in
+the @samp{im} string is after the @samp{=}, so it is part of the
+string). Having the @samp{im} and @samp{ei} definitions put into your
+terminal's termcap will cause screen to automatically advertise the
+character-insert capability in each window's termcap. Each window will
+also get the delete-character capability (dc) added to its termcap,
+which screen will translate into a line-update for the terminal (we're
+pretending it doesn't support character deletion).
+
+If you would like to fully specify each window's termcap entry, you
+should instead set the @code{$SCREENCAP} variable prior to running
+@code{screen}. @xref{Virtual Terminal}, for the details of the
+@code{screen} terminal emulation. @xref{Top, , Termcap, termcap, The
+Termcap Manual}, for more information on termcap definitions.
+
+@node Special Capabilities, Autonuke, Termcap Examples, Termcap
+@section Special Terminal Capabilities
+@cindex terminal capabilities
+@cindex capabilities
+The following table describes all terminal capabilities that are
+recognized by @code{screen} and are not in the termcap manual
+(@pxref{Top, , Termcap, termcap, The Termcap Manual}).
+You can place these capabilities in your termcap entries (in
+@file{/etc/termcap}) or use them with the commands @code{termcap},
+@code{terminfo} and @code{termcapinfo} in your @code{screenrc} files. It is
+often not possible to place these capabilities in the terminfo database.
+@table @samp
+@item LP
+(bool)@*
+Terminal has VT100 style margins (`magic margins'). Note that
+this capability is obsolete --- @code{screen} now uses the standard
+@samp{xn} instead.
+
+@item Z0
+(str)@*
+Change width to 132 columns.
+
+@item Z1
+(str)@*
+Change width to 80 columns.
+
+@item WS
+(str)@*
+Resize display. This capability has the desired width and height as
+arguments. SunView(tm) example: @samp{\E[8;%d;%dt}.
+
+@item NF
+(bool)@*
+Terminal doesn't need flow control. Send ^S and ^Q direct to
+the application. Same as @code{flow off}. The opposite of this
+capability is @samp{nx}.
+
+@item G0
+(bool)@*
+Terminal can deal with ISO 2022 font selection sequences.
+
+@item S0
+(str)@*
+Switch charset @samp{G0} to the specified charset. Default
+is @samp{\E(%.}.
+
+@item E0
+(str)@*
+Switch charset @samp{G0} back to standard charset. Default
+is @samp{\E(B}.
+
+@item C0
+(str)@*
+Use the string as a conversion table for font 0. See
+the @samp{ac} capability for more details.
+
+@item CS
+(str)@*
+Switch cursor keys to application mode.
+
+@item CE
+(str)@*
+Switch cursor keys to cursor mode.
+
+@item AN
+(bool)@*
+Enable autonuke for displays of this terminal type.
+(@pxref{Autonuke}).
+
+@item OL
+(num)@*
+Set the output buffer limit. See the @samp{obuflimit} command
+(@pxref{Obuflimit}) for more details.
+
+@item KJ
+(str)@*
+Set the kanji type of the terminal. Valid strings are @samp{jis},
+@samp{euc} and @samp{sjis}.
+
+@item AF
+(str)@*
+Change character forground color in an ANSI conform way. This
+capability will almost always be set to @samp{\E[3%dm}
+(@samp{\E[3%p1%dm} on terminfo machines).
+
+@item AB
+(str)@*
+Same as @samp{AF}, but change background color.
+
+@item AX
+(bool)@*
+Does understand ANSI set default fg/bg color (@samp{\E[39m / \E[49m}).
+
+@item XC
+(str)@*
+Describe a translation of characters to strings depending on the
+current font. (@pxref{Character Translation}).
+@end table
+
+@node Autonuke, Obuflimit, Special Capabilities, Termcap
+@section Autonuke
+@deffn Command autonuke @var{state}
+(none)@*
+Sets whether a clear screen sequence should nuke all the output
+that has not been written to the terminal. @xref{Obuflimit}.
+This property is set per display, not per window.
+@end deffn
+
+@deffn Command defautonuke @var{state}
+(none)@*
+Same as the @code{autonuke} command except that the default setting for
+new displays is also changed. Initial setting is @code{off}.
+Note that you can use the special @code{AN} terminal capability if you
+want to have a terminal type dependent setting.
+@end deffn
+
+@node Obuflimit, Character Translation, Autonuke, Termcap
+@section Obuflimit
+@deffn Command obuflimit @var{[limit]}
+(none)@*
+If the output buffer contains more bytes than the specified limit, no
+more data will be read from the windows. The default value is 256. If
+you have a fast display (like @code{xterm}), you can set it to some
+higher value. If no argument is specified, the current setting is displayed.
+This property is set per display, not per window.
+@end deffn
+
+@deffn Command defobuflimit @var{limit}
+(none)@*
+Same as the @code{obuflimit} command except that the default setting for new
+displays is also changed. Initial setting is 256 bytes. Note that you can use
+the special @code{OL} terminal capability if you want to have a terminal
+type dependent limit.
+@end deffn
+
+@node Character Translation, , Obuflimit, Termcap
+@section Character Translation
+@code{Screen} has a powerful mechanism to translate characters to
+arbitrary strings depending on the current font and terminal type.
+Use this feature if you want to work with a common standard character
+set (say ISO8851-latin1) even on terminals that scatter the more
+unusual characters over several national language font pages.
+
+Syntax:
+
+@example
+ XC=@var{<charset-mapping>}@{,,@var{<charset-mapping>}@}
+ @var{<charset-mapping>} := @var{<designator>}@var{<template>}@{,@var{<mapping>}@}
+ @var{<mapping>} := @var{<char-to-be-mapped>}@var{<template-arg>}
+@end example
+
+The things in braces may be repeated any number of times.
+
+A @var{<charset-mapping>} tells screen how to map characters
+in font @var{<designator>} (@samp{B}: Ascii, @samp{A}: UK,
+@samp{K}: german, etc.)
+to strings. Every @var{<mapping>} describes to what string a single
+character will be translated. A template mechanism is used, as
+most of the time the codes have a lot in common (for example
+strings to switch to and from another charset). Each occurence
+of @samp{%} in @var{<template>} gets substituted with the
+@var{template-arg}
+specified together with the character. If your strings are not
+similar at all, then use @samp{%} as a template and place the full
+string in @var{<template-arg>}. A quoting mechanism was added to make
+it possible to use a real @samp{%}. The @samp{\} character quotes the
+special characters @samp{\}, @samp{%}, and @samp{,}.
+
+Here is an example:
+
+@example
+ termcap hp700 'XC=B\E(K%\E(B,\304[,\326\\\\,\334]'
+@end example
+
+This tells @code{screen}, how to translate ISOlatin1 (charset @samp{B})
+upper case umlaut characters on a @code{hp700} terminal that has a
+german charset. @samp{\304} gets translated to
+@samp{\E(K[\E(B} and so on.
+Note that this line gets parsed *three* times before the internal
+lookup table is built, therefore a lot of quoting is needed to
+create a single @samp{\}.
+
+Another extension was added to allow more emulation: If a mapping
+translates the unquoted @samp{%} char, it will be sent to the terminal
+whenever screen switches to the corresponding @var{<designator>}.
+In this
+special case the template is assumed to be just @samp{%} because
+the charset switch sequence and the character mappings normaly
+haven't much in common.
+
+This example shows one use of the extension:
+@example
+ termcap xterm 'XC=K%,%\E(B,[\304,\\\\\326,]\334'
+@end example
+
+Here, a part of the german (@samp{K}) charset is emulated on an xterm.
+If screen has to change to the @samp{K} charset, @samp{\E(B} will be
+sent
+to the terminal, i.e. the ASCII charset is used instead. The
+template is just @samp{%}, so the mapping is straightforward:
+@samp{[} to @samp{\304}, @samp{\} to @samp{\326}, and @samp{]} to
+@samp{\334}.
+
+@node Message Line, Logging, Termcap, Top
+@chapter The Message Line
+@cindex message line
+
+@code{screen} displays informational messages and other diagnostics in a
+@dfn{message line} at the bottom of the screen. If your terminal has a
+status line defined in its termcap, screen will use this for displaying
+its messages, otherwise the last line of the screen will be temporarily
+overwritten and output will be momentarily interrupted. The message
+line is automatically removed after a few seconds delay, but it can also
+be removed early (on terminals without a status line) by beginning to
+type.
+
+@menu
+* Privacy Message:: Using the message line from your program.
+* Hardware Status Line:: Use the terminal's hardware status line.
+* Last Message:: Redisplay the last message.
+* Message Wait:: Control how long messages are displayed.
+@end menu
+
+@node Privacy Message, Hardware Status Line, , Message Line
+@section Using the message line from your program
+The message line facility can be used by an application running in the
+current window by means of the ANSI @dfn{Privacy message} control
+sequence. For instance, from within the shell, try something like:
+
+@example
+echo "@value{esc}^Hello world from window $WINDOW@value{esc}\"
+@end example
+
+where @samp{@value{esc}} is ASCII ESC and @samp{^} is a literal caret or
+up-arrow.
+
+@node Hardware Status Line, Last Message, Privacy Message, Message Line
+@section Hardware Status Line
+@deffn Command hardstatus [state]
+(none)@*
+Toggles the use of the terminal's hardware status line. If @samp{on},
+@code{screen} will use this facility to display one line messages.
+Otherwise these messages are overlayed in reverse video mode at the
+display line. Note that the hardstatus feature can only be used if the
+termcap/terminfo capabilities "hs", "ts", "fs" and "ds" are set
+properly. Default is @samp{on} whenever the "hs" capability is present.
+@end deffn
+
+@node Last Message, Message Wait, Hardware Status Line, Message Line
+@section Display Last Message
+@kindex m
+@kindex C-m
+@deffn Command lastmsg
+(@kbd{C-a m}, @kbd{C-a C-m})@*
+Repeat the last message displayed in the message line. Useful if you're
+typing when a message appears, because (unless your terminal has a
+hardware status line) the message goes away when you press a key.
+@end deffn
+
+@node Message Wait, , Last Message, Message Line
+@section Message Wait
+@deffn Command msgminwait sec
+(none)@*
+Defines the time @code{screen} delays a new message when another is
+currently displayed. Defaults to 1 second.
+@end deffn
+
+@deffn Command msgwait sec
+(none)@*
+Defines the time a message is displayed, if @code{screen} is not
+disturbed by other activity. Defaults to 5 seconds.
+@end deffn
+
+@node Logging, Startup, Message Line, Top
+@chapter Logging
+
+This section describes the commands for keeping a record of your session.
+
+@menu
+* Hardcopy:: Dump the current screen to a file
+* Log:: Log the output of a window to a file
+@end menu
+
+@node Hardcopy, Log, , Logging
+@section hardcopy
+@kindex h
+@kindex C-h
+@deffn Command hardcopy
+(@kbd{C-a h}, @kbd{C-a C-h})@*
+Writes out the current display contents to the file @file{hardcopy.@var{n}}
+in the window's default directory, where @var{n} is the number of the
+current window. This either appends or overwrites the file if it
+exists, as determined by the @code{hardcopy_append} command.
+@end deffn
+
+@deffn Command hardcopy_append state
+(none)@*
+If set to @samp{on}, @code{screen} will append to the
+@file{hardcopy.@var{n}} files created by the command @code{hardcopy};
+otherwise, these files are overwritten each time.
+@end deffn
+
+@deffn Command hardcopydir directory
+(none)@*
+Defines a directory where hardcopy files will be placed.
+If unset hardcopys are dumped in screen's current working
+directory.
+@end deffn
+
+@node Log, , Hardcopy, Logging
+@section log
+@kindex H
+@deffn Command log [state]
+(@kbd{C-a H})@*
+Begins/ends logging of the current window to the file
+@file{screenlog.@var{n}} in the window's default directory, where
+@var{n} is the number of the current window.
+This filename can be changed with the @samp{logfile} command.
+If no parameter is given,
+the logging state is toggled. The session log is
+appended to the previous contents of the file if it already exists. The
+current contents and the contents of the scrollback history are not
+included in the session log. Default is @samp{off}.
+@end deffn
+
+@deffn Command logfile filename
+(none)@*
+Defines the name the logfiles will get. The default is @samp{screenlog.%n}.
+@end deffn
+
+@node Startup, Miscellaneous, Logging, Top
+@chapter Startup
+
+This section describes commands which are only useful in the
+@file{.screenrc} file, for use at startup.
+
+@menu
+* echo:: Display a message.
+* sleep:: Pause execution of the @file{.screenrc}.
+* Startup Message:: Control display of the copyright notice.
+@end menu
+
+@node echo, sleep, , Startup
+@section echo
+@deffn Command echo [@t{-n}] message
+(none)@*
+The echo command may be used to annoy @code{screen} users with a
+'message of the day'. Typically installed in a global screenrc.
+The option @samp{-n} may be used to suppress the line feed.
+See also @code{sleep}.
+Echo is also useful for online checking of environment variables.
+@end deffn
+
+@node sleep, Startup Message, echo, Startup
+@section sleep
+@deffn Command sleep num
+(none)@*
+This command will pause the execution of a .screenrc file for @var{num}
+seconds. Keyboard activity will end the sleep. It may be used to give
+users a chance to read the messages output by @code{echo}.
+@end deffn
+
+@node Startup Message, , sleep, Startup
+@section Startup Message
+@deffn Command startup_message state
+(none)@*
+Select whether you want to see the copyright notice during startup.
+Default is @samp{on}, as you probably noticed.
+@end deffn
+
+@node Miscellaneous, Environment, Startup, Top
+@chapter Miscellaneous commands
+
+The commands described here do not fit well under any of the other
+categories.
+
+@menu
+* At:: Execute a command at other displays or windows.
+* Break:: Send a break signal to the window.
+* Debug:: Suppress/allow debugging output.
+* License:: Display the disclaimer page.
+* Nethack:: Use @code{nethack}-like error messages.
+* Number:: Change the current window's number.
+* Silence:: Notify on inactivity.
+* Time:: Display the time and load average.
+* Version:: Display the version of @code{screen}.
+* Zombie:: Keep dead windows.
+* Printcmd:: Set command for VT100 printer port emulation.
+* Sorendition:: Change the text highlighting method.
+@end menu
+
+@node At, Break, , Miscellaneous
+@section At
+@deffn Command at [identifier][#|*|%] command [args]
+(none)@*
+Execute a command at other displays or windows as if it had been entered there.
+@code{At} changes the context (the `current window' or `current display'
+setting) of the command. If the first parameter describes a non-unique context,
+the command will be executed multiple times. If the first parameter is of the
+form @samp{@var{identifier}*} then identifier is matched against user names.
+The command is executed once for each display of the selected user(s).
+If the first parameter is of the form @samp{@var{identifier}%} identifier is
+matched against displays. Displays are named after the ttys they attach. The
+prefix @samp{/dev/} or @samp{/dev/tty} may be omitted from the identifier.
+If @var{identifier} has a @code{#} or nothing appended it is matched against
+window numbers and titles. Omitting an identifier in front of the @code{#},
+@code{*} or @code{%} character selects all users, displays or windows because
+a prefix-match is performed. Note that on the affected display(s) a short
+message will describe what happened. Caution: Permission is checked for the
+owners or the affected display(s), not for the initiator of the `at' command.
+@end deffn
+
+@node Break, Debug, At, Miscellaneous
+@section Break
+@deffn Command break [duration]
+(none)@*
+Send a break signal for @var{duration}*0.25 seconds to this window.
+Most useful if a character device is attached to the window rather than
+a shell process.
+@end deffn
+
+@deffn Command pow_break
+(none)@*
+Reopen the window's terminal line and send a break condition.
+@end deffn
+
+@node Debug, License, Break, Miscellaneous
+@section Debug
+@deffn Command debug [on|off]
+(none)@*
+Turns runtime debugging on or off. If @code{screen} has been compiled with
+option @code{-DDEBUG} debugging is available and is turned on per default.
+Note that this command only affects debugging output from the main
+@samp{SCREEN} process.
+@end deffn
+
+@node License, Nethack, Debug, Miscellaneous
+@section License
+@deffn Command license
+(none)@*
+Display the disclaimer page. This is done whenever @code{screen} is
+started without options, which should be often enough.
+@end deffn
+
+@node Nethack, Number, License, Miscellaneous
+@section Nethack
+@deffn Command nethack state
+(none)@*
+Changes the kind of error messages used by @code{screen}. When you are
+familiar with the game @code{nethack}, you may enjoy the nethack-style
+messages which will often blur the facts a little, but are much funnier
+to read. Anyway, standard messages often tend to be unclear as well.
+
+This option is only available if @code{screen} was compiled with the
+NETHACK flag defined (@pxref{Installation}). The default setting is then
+determined by the presence of the environment variable
+@code{$NETHACKOPTIONS}.
+@end deffn
+
+@node Number, Silence, Nethack, Miscellaneous
+@section Number
+@kindex N
+@deffn Command number @var{[n]}
+(@kbd{C-a N})@*
+Change the current window's number. If the given number @var{n} is already
+used by another window, both windows exchange their numbers. If no argument is
+specified, the current window number (and title) is shown.
+@end deffn
+
+@node Silence, Time, Number, Miscellaneous
+@section Silence
+@deffn Command silence @var{[state|sec]}
+(none)@*
+Toggles silence monitoring of windows. When silence is turned on and an
+affected window is switched into the background, you will receive the
+silence notification message in the status line after a specified period
+of inactivity (silence). The default timeout can be changed with the
+@code{silencewait} command or by specifying a number of seconds instead of
+@code{on} or @code{off}. Silence is initially off for all windows.
+@end deffn
+
+@deffn Command silencewait @var{seconds}
+(none)@*
+Define the time that all windows monitored for silence should wait
+before displaying a message. Default is 30 seconds.
+@end deffn
+
+@node Time, Version, Silence, Miscellaneous
+@section Time
+@kindex t
+@kindex C-t
+@deffn Command time
+(@kbd{C-a t}, @kbd{C-a C-t})@*
+Uses the message line to display the time of day, the host name, and the
+load averages over 1, 5, and 15 minutes (if this is available on your
+system). For window-specific information use @code{info} (@pxref{Info}).
+@end deffn
+
+@node Version, Zombie, Time, Miscellaneous
+@section Version
+@kindex v
+@deffn Command version
+(@kbd{C-a v})@*
+Display the version and modification date in the message line.
+@end deffn
+
+@node Zombie, Printcmd, Version, Miscellaneous
+@section Zombie
+@deffn Command zombie @var{[keyx]}
+@deffnx Command defzombie @var{[keyx]}
+(none)@*
+Per default windows are removed from the window list as soon as the
+windows process (e.g. shell) exits. When a string of two keys is
+specified to the zombie command, `dead' windows will remain in the list.
+The @code{kill} kommand may be used to remove the window. Pressing the first key
+in the dead window has the same effect. Pressing the second key, however,
+screen will attempt to resurrect the window. The process that was initially
+running in the window will be launched again. Calling @code{zombie} without
+parameters will clear the zombie setting, thus making windows disappear when
+the process terminates.
+
+As the zombie setting is affected globally for all windows, this command
+should only be called @code{defzombie}. Until we need this as a per window
+setting, the commands @code{zombie} and @code{defzombie} are synonymous.
+@end deffn
+
+@node Printcmd, Sorendition, Zombie, Miscellaneous
+@section Printcmd
+@deffn Command printcmd @var{[cmd]}
+(none)@*
+If @var{cmd} is not an empty string, screen will not use the terminal
+capabilities @code{po/pf} for printing if it detects an ansi print
+sequence @code{ESC [ 5 i}, but pipe the output into @var{cmd}.
+This should normally be a command like @samp{lpr} or
+@samp{cat > /tmp/scrprint}.
+@code{Printcmd} without an argument displays the current setting.
+The ansi sequence @code{ESC \} ends printing and closes the pipe.
+
+Warning: Be careful with this command! If other user have write
+access to your terminal, they will be able to fire off print commands.
+@end deffn
+
+@node Sorendition, , Printcmd, Miscellaneous
+@section Sorendition
+@deffn Command sorendition @var{[attr [color]]}
+(none)@*
+Change the way screen does highlighting for text marking and printing
+messages.
+@var{attr} is a hexadecimal number and describes the attributes
+(inverse, underline, ...) the text will get. @var{color}
+is a 2 digit number and changes the
+forground/background of the highlighted text.
+Some knowledge of screen's internal character representation is
+needed to make the characters appear in the desired way. The default
+is currently @samp{10 99} (standout, default colors).
+@end deffn
+
+@node Environment, Files, Miscellaneous, Top
+@chapter Environment Variables
+@cindex environment
+
+@table @code
+@item COLUMNS
+Number of columns on the terminal (overrides termcap entry).
+
+@item HOME
+Directory in which to look for .screenrc.
+
+@item ISCREENRC
+Alternate user screenrc file.
+
+@item LINES
+Number of lines on the terminal (overrides termcap entry).
+
+@item LOCKPRG
+Screen lock program.
+
+@item NETHACKOPTIONS
+Turns on @code{nethack} option.
+
+@item PATH
+Used for locating programs to run.
+
+@item SCREENCAP
+For customizing a terminal's @code{TERMCAP} value.
+
+@item SCREENDIR
+Alternate socket directory.
+
+@item SCREENRC
+Alternate user screenrc file.
+
+@item SHELL
+Default shell program for opening windows (default @file{/bin/sh}).
+
+@item STY
+Alternate socket name. If @code{screen} is invoked, and the environment variable
+@code{STY} is set, then it creates only a window in the running @code{screen}
+session rather than starting a new session.
+
+@item SYSSCREENRC
+Alternate system screenrc file.
+
+@item TERM
+Terminal name.
+
+@item TERMCAP
+Terminal description.
+@end table
+
+@node Files, Credits, Environment, Top
+@chapter Files Referenced
+@cindex files
+
+@table @file
+@item .../screen-3.?.??/etc/screenrc
+@itemx .../screen-3.?.??/etc/etcscreenrc
+Examples in the @code{screen} distribution package for private and
+global initialization files.
+
+@item @code{$SYSSCREENRC}
+@itemx /local/etc/screenrc
+@code{screen} initialization commands
+
+@item @code{$ISCREENRC}
+@itemx @code{$SCREENRC}
+@itemx @code{$HOME}/.iscreenrc
+@itemx @code{$HOME}/.screenrc
+Read in after /local/etc/screenrc
+
+@item @code{$ISCREENDIR}/S-@var{login}
+@itemx @code{$SCREENDIR}/S-@var{login}
+
+@item /local/screens/S-@var{login}
+Socket directories (default)
+
+@item /usr/tmp/screens/S-@var{login}
+Alternate socket directories.
+
+@item @var{socket directory}/.termcap
+Written by the @code{dumptermcap} command
+
+@item /usr/tmp/screens/screen-exchange or
+@itemx /tmp/screen-exchange
+@code{screen} interprocess communication buffer
+
+@item hardcopy.[0-9]
+Screen images created by the hardcopy command
+
+@item screenlog.[0-9]
+Output log files created by the log command
+
+@item /usr/lib/terminfo/?/* or
+@itemx /etc/termcap
+Terminal capability databases
+
+@item /etc/utmp
+Login records
+
+@item @code{$LOCKPRG}
+Program for locking the terminal.
+@end table
+
+@node Credits, Bugs, Files, Top
+@chapter Credits
+
+@noindent
+Authors @*
+=======
+
+Originally created by Oliver Laumann, this latest version was
+produced by Wayne Davison, Juergen Weigert and Michael Schroeder.
+
+@noindent
+Contributors @*
+============
+
+@example
+ Ken Beal (kbeal@@amber.ssd.csd.harris.com),
+ Rudolf Koenig (rfkoenig@@informatik.uni-erlangen.de),
+ Toerless Eckert (eckert@@informatik.uni-erlangen.de),
+ Wayne Davison (davison@@borland.com),
+ Patrick Wolfe (pat@@kai.com, kailand!pat),
+ Bart Schaefer (schaefer@@cse.ogi.edu),
+ Nathan Glasser (nathan@@brokaw.lcs.mit.edu),
+ Larry W. Virden (lvirden@@cas.org),
+ Howard Chu (hyc@@hanauma.jpl.nasa.gov),
+ Tim MacKenzie (tym@@dibbler.cs.monash.edu.au),
+ Markku Jarvinen (mta@@@{cc,cs,ee@}.tut.fi),
+ Marc Boucher (marc@@CAM.ORG),
+ Doug Siebert (dsiebert@@isca.uiowa.edu),
+ Ken Stillson (stillson@@tsfsrv.mitre.org),
+ Ian Frechett (frechett@@spot.Colorado.EDU),
+ Brian Koehmstedt (bpk@@gnu.ai.mit.edu),
+ Don Smith (djs6015@@ultb.isc.rit.edu),
+ Frank van der Linden (vdlinden@@fwi.uva.nl),
+ Martin Schweikert (schweik@@cpp.ob.open.de),
+ David Vrona (dave@@sashimi.lcu.com),
+ E. Tye McQueen (tye%spillman.UUCP@@uunet.uu.net),
+ Matthew Green (mrgreen@@mame.mu.oz.au),
+ Christopher Williams (cgw@@unt.edu),
+ Matt Mosley (mattm@@access.digex.net),
+ Gregory Neil Shapiro (gshapiro@@wpi.WPI.EDU),
+ Jason Merrill (jason@@jarthur.Claremont.EDU).
+@end example
+
+@noindent
+Version @*
+=======
+
+This manual describes version @value{version} of the @code{screen}
+program. Its roots are a merge of a custom version 2.3PR7 by Wayne
+Davison and several enhancements to Oliver Laumann's version 2.0.
+Note that all versions numbered 2.x are copyright by Oliver Laumann.
+
+See also @xref{Availability}.
+
+@node Bugs, Installation, Credits, Top
+@chapter Bugs
+@cindex bugs
+
+Just like any other significant piece of software, @code{screen} has a
+few bugs and missing features. Please send in a bug report if you have
+found a bug not mentioned here.
+
+@menu
+* Known Bugs:: Problems we know about.
+* Reporting Bugs:: How to contact the maintainers.
+* Availability:: Where to find the lastest screen version.
+@end menu
+
+@node Known Bugs, Reporting Bugs, , Bugs
+@section Known Bugs
+
+@itemize @bullet
+@item
+@samp{dm} (delete mode) and @samp{xs} are not handled correctly (they
+are ignored). @samp{xn} is treated as a magic-margin indicator.
+
+@item
+@code{screen} has no clue about double-high or double-wide characters.
+But this is the only area where @code{vttest} is allowed to fail.
+
+@item
+It is not possible to change the environment variable @code{$TERMCAP}
+when reattaching under a different terminal type.
+
+@item
+The support of terminfo based systems is very limited. Adding extra
+capabilities to @code{$TERMCAP} may not have any effects.
+
+@item
+@code{screen} does not make use of hardware tabs.
+
+@item
+@code{screen} must be installed setuid root in order to be able to
+correctly change the owner of the tty device file for each window.
+Special permission may also be required to write the file
+@file{/etc/utmp}.
+
+@item
+Entries in @file{/etc/utmp} are not removed when @code{screen} is killed
+with SIGKILL. This will cause some programs (like "w" or "rwho") to
+advertise that a user is logged on who really isn't.
+
+@item
+@code{screen} may give a strange warning when your tty has no utmp
+entry.
+
+@item
+When the modem line was hung up, @code{screen} may not automatically
+detach (or quit) unless the device driver sends a HANGUP signal.
+To detach such a @code{screen} session use the -D or -d command
+line option.
+
+@item
+A weird imagination is most useful to gain full advantage of all the
+features.
+@end itemize
+
+@node Reporting Bugs, Availability, Known Bugs, Bugs
+@section Reporting Bugs
+@cindex bug report
+
+If you find a bug in @code{Screen}, please send electronic mail to
+@w{@samp{screen@@uni-erlangen.de}}, and also to
+@w{@samp{bug-gnu-utils@@prep.ai.mit.edu}}. Include the version number
+of @code{Screen} which you are using. Also include in your message the
+hardware and operating system, the compiler used to compile, a
+description of the bug behavior, and the conditions that triggered the
+bug. Please recompile @code{screen} with the @samp{-DDEBUG -DTMPTEST} options
+enabled, reproduce the bug, and have a look at the debug output written to
+the directory @file{/tmp/debug}. If necessary quote suspect passages from the
+debug output and show the contents of your @file{config.h} if it matters.
+
+@node Availability, , Reporting Bugs, Bugs
+@section Availability
+@cindex availability
+
+@code{Screen} is available under the @code{GNU} copyleft.
+
+The latest official release of @code{screen} available via anonymous
+ftp from @samp{prep.ai.mit.edu}, @samp{nic.funet.fi} or any other
+@code{GNU} distribution site. The latest beta testing release of
+@code{screen} is available from @samp{ftp.uni-erlangen.de
+(131.188.1.43)}, in the directory @file{pub/utilities/screen}.
+
+@node Installation, Concept Index, Bugs, Top
+@chapter Installation
+@cindex installation
+
+Since @code{screen} uses pseudo-ttys, the select system call, and
+UNIX-domain sockets/named pipes, it will not run under a system that
+does not include these features of 4.2 and 4.3 BSD UNIX.
+
+@menu
+* Socket Directory:: Where screen stores its handle.
+* Compiling Screen::
+@end menu
+
+@node Socket Directory,
+@section Socket Directory
+@cindex socket directory
+
+The socket directory defaults either to @file{$HOME/.screen} or simply to
+@file{/tmp/screens} or preferably to @file{/usr/local/screens} chosen at
+compile-time. If @code{screen} is installed
+setuid root, then the administrator should compile screen with an
+adequate (not NFS mounted) @code{SOCKDIR}. If @code{screen} is not
+running setuid-root, the user can specify any mode 777 directory in the
+environment variable @code{$SCREENDIR}.
+
+@node Compiling Screen, , Socket Directory, Installation
+@section Compiling Screen
+@cindex compiling screen
+
+To compile and install screen:
+
+The @code{screen} package comes with a @code{GNU Autoconf} configuration
+script. Before you compile the package run
+
+@center @code{sh ./configure}
+
+This will create a @file{config.h} and @file{Makefile} for your machine.
+If @code{configure} fails for some reason, then look at the examples and
+comments found in the @file{Makefile.in} and @file{config.h.in} templates.
+Rename @file{config.status} to @file{config.status.@var{machine}} when
+you want to keep configuration data for multiple architectures. Running
+@code{sh ./config.status.@var{machine}} recreates your configuration
+significantly faster than rerunning @code{configure}.
+@*
+Read through the "User Configuration" section of @file{config.h}, and verify
+that it suits your needs.
+A comment near the top of this section explains why it's best to
+install screen setuid to root.
+Check for the place for the global @file{screenrc}-file and for the socket
+directory.
+@*
+Check the compiler used in @file{Makefile}, the prefix path where to install
+@code{screen}. Then run
+
+@center @code{make}
+
+If @code{make} fails to produce one of the files @file{term.h}, @file{comm.h}
+or @file{tty.c}, then use @code{@var{filename.x}.dist} instead.
+For additional information about installation of @code{screen} refer to the
+file @file{INSTALLATION}, coming with this package.
+
+@node Concept Index, Command Index, Installation, Top
+@unnumbered Concept Index
+
+@printindex cp
+
+@node Command Index, Keystroke Index, Concept Index, Top
+@unnumbered Command Index
+
+This is a list of all the commands supported by @code{screen}.
+
+@printindex fn
+
+@node Keystroke Index, , Command Index, Top
+@unnumbered Keystroke Index
+
+This is a list of the default key bindings.
+
+The leading escape character (@pxref{Command Character}) has been omitted
+from the key sequences, since it is the same for all bindings.
+
+@printindex ky
+
+@shortcontents
+@contents
+@bye
+