VERSION X10/6.6A
------- -------

General
-------

vt102 and Tektronix 4015 emulation in separate windows, each with its own
mode menu (control middle button).

Switching between each mode can be done via the menus, or with escape
sequences:
	vt102 -- \E[?38h --> tek
	tek   -- \E\003  --> vt102

The windows hilite themselves when the mouse is with either window or when
one of these is the focus window.  The windows unhilite when the mouse moves
out of the window and neither is the focus window.  Hiliting appears as
windows with solid color borders and solid block cursors.  Unhiliting appears
as windows with "grayed" borders and a rectangle cursor.

The parser for both modes is table-driven and is much more efficient than the
original parsers.

If UTMP is define in the Makefile, then each instance of xterm makes an entry
in /etc/utmp and thus appears with the "who" command.

If both windows are visible and one is iconified, both disappear.  Deiconifing
causes both to appear again.

If the initial mode is vt102, /etc/termcap is searched, in order, for the
following termcaps, until one is found:
	xterms, xterm, vt102, vt100, ansi, dumb
If the vt102 window happens to be 80x24, then xterms is added to the begining
of the list.  If the initial mode is tek, the termcaps searched for are:
	tek4015, tek4014, tek4013, tek4010, dumb

The window size is passed to the operating system via TIOCSWINSZ (4.3) or
TIOCSSIZE (sun).  A SIGWINCH siganl is sent if the vt102 window is resized.

For login windows, menus are disabled until a user has successfully login.

A new menu (xterm) has been added (control left button) that gives the version
number.  The menu allows titlebars to be displayed (see below), the windows
redrawn, or for various signals to be sent to the process group of the command
xterm is executing.  The signals include SIGCONT, SIGTSTP,SIGHUP, SIGINT,
SIGTERM and SIGKILL.

Titlebars for the window can be turned off with .Xdefaults
"xterm.TitleBar off", with command line option -tb or via the xterm menu.

The titlebar font is, by default, vtsingle.  The font can be changed with
.Xdefaults "xterm.TitleFont helv12b" for helv12b font or via command line
option -ft helv12b.

The titlebar look like Macintosh titlebars.  A series of strips appears when the
window is hilited, and are gone when unhilited.

Both windows are visible and the mouse cursor is in either window, only the
active window is hilited (before both windows were hilited).

A time delay has been added for window hiliting/unhiliting so that the mouse
passing momentarily through a window will not cause it to hilite and then
unhilite when autoraise is on.

Automatic raising of windows has been added, so that the window is automatically
raised (after the time delay) when the mouse enters a window.  The mode is
turned on via .Xdefaults "xterm.AutoRaise on", via command line option -ar
or via the xterm menu.  This is a dubious feature.

Visual bell mode can be turned on via .Xdefaults "xterm.VisualBell on", via
command line option -vb and from the xterm menu.

If the NOWINDOWMENU is not defined, then
Control right button activates a windows menu that lists the visible (named)
windows in back to front order reading down.  Selecting a window name cause
that window to be raised to the top (useful for getting to a buried
window).  This feature does not belong in xterm, and will be
completely removed in V11 of X, where window managers can be more intellegent.

The tek window has the same name as the vt102 window, but with " (Tek)"
appended (before they were the same).

During startup, xterm tries to create unique window names so that the
windows menu will not contain ambiguous windows.  It does this by look
through the list of windows and if a name exist that is the same, " #N"
will be appended to make it unique (N is a number two or greater).

Some reorganization of the code and data has been done to put more data in
the text segment so many xterm processes can share the (read-only) data, rather
than having n copies in core.

There are several bug fixes including better sun compatibility and a problem
in the vt102 parse table.

With some mods to libX.a, xterm solves a problem of running xterm on a remote
host with a local window, when the remote host uses a different keymap (like
running on a remote microvax on a sun).  If the environment variable KEYBD
is set or the command line option "-kb name" is given, then a keymap file
with the given name is used, rather than the default of your .Xkeymap file.
Standard names for keymap files is yet to be made.  (This option is turned on
via defining KEYBD in the Makefile.)

Xterm now always creates its own icon(s), which includes the window's name.
The -i option now means startup showing the icon.  The option #[+-]x[+-]y
means to position the icon there instead of centered within the window.
The bitmap within the icon show the current active mode (either vt102 or
tek).  The icon reverse-videos with the windows.
By default, the icons are miniture versions of the window.

When the mouse is in the stripped area of the titlebar, you can get any
of the three menus without pressing the control key.  Clicking in the
actual title iconifies.  Clicking in an icon deiconifies it.

Many mode option on the command line allow a '+' instead of '-' to indicate
turning off the indicated mode.

Color support has been improved, so that an unselected cursor is an empty
rectangle with the foreground color, and the selected cursor is a filled
rectangle with the cursor color.

A better and faster menu package has been added that supports (Mac-like)
checkmarks and dimmed (disabled and grayed) item, as well as line separator
items.

To conserve on resources, the unhilited border of the window(s) is now
always a gray pixmap, which is shared by the menu package.

Logging capability has been added, in which all characters sent to the
xterm window are recorded.  The mode is turned on by using .Xdefaults option
"xterm.Logging on", -l on the command line, from the xterm menu or the
escape sequence \E[?46h in vt102 mode.  Logging is turned off through the
xterm menu or \E[?46l in vt102 mode.  The default log file is XtermLog.XXXXX
(XXXXX is the process id of xterm) and is in the initial directory in which
xterm was started (the home directory for login xterms).  Each logging start
appends to the end of the loggin file, and each logging stop closes the file.

An alternate logging file may be given with .Xdefaults "xterm.LogFile file"
(file is the alternate filename) or with command line option "-lf file".
If the first character of the logfile name is `|', then the rest of the
name passed to the shell for execution and a pipe is created to the process.
In this case, each time the log is started, a new process is created and
when logging is turned off, the pipe is closed.  Thus, a logfile name of
"| lpr", will send text to the line printer each time logging is turned off.

Certain modes may be inhibited by specifying in the .Xdefaults file.  A
change to the initial logging mode may be prevented with "xterm.LogInhibit on",
which will prevent changes to logging from the menu or from escape sequences.
"xterm.SignalInhibit on" disables the xterm menu signal sending (Continue is
still allowed).  "xterm.TekInhibit on" prevents entering into Tektronix mode.

As per edjames@eros, xterm sets the environment variable WINDOWID, which
contains the Window id of the initial window (normally vt102, but could be
the tek window if the -t option were specified).  This "feature" is
bogus, as it may not always give you all information you need to
access a window.

The title in the title bar may be changed with the \E]0;new title\007 escape
sequence.  Any non-printing character terminates the title string.  The
windows and icons are also renamed, and the icons are resized to fit the
new title.

The log file may be changed with the \E]46;new log file\007 escape sequence.
If the log file name is empty, the default log file name is used.

In visual bell mode, the icons now flash on receipt of a control-G.

If xterm is iconified and new input comes in, a box is drawn around the
icon title.

The bitmap used for the icons is now user definable.  The VT102 bitmap may be
set with .Xdefaults "xterm.IconBitmap file" or with "-ib file" on the command
line.  The Tek bitmap may be set with .Xdefaults "xterm.TekIconBitmap file"
or with "-it file" on the command line.  These files are assumed to be
bitmap(1) format files.  If only one bitmap file is specified, it is used for
both modes.  If both are specified as null file names, then no bitmap is drawn.

Normally, the title text of the icon is displayed to the right of the
bitmap.  The text may be displayed under the bitmap by using .Xdefaults
"xterm.TextUnderIcon on" or with -ti on the command line.

The mouse may be automatically warpped to the xterm window when it is
deiconified by using .Xdefaults "xterm.DeiconifyWarp on" or using -dw on
the command line.  This is also of questionable merit.

The standard error output used by xterm is now improved.  Normally it will
be the same standard error when xterm is started.  For login xterms
(-L specified) then the standard error will be to /dev/console.

X error events are now intercepted so that xterm may cleanup before exiting
(like resetting the tty modes and clearing the /etc/utmp entry).

VT102
-----

vt102 emulation is much more complete than the original xterm.

Underlined characters is now supported.

A partial sun tty emulation is provided (x, y, w, h, c, r are numbers):
	\E[3;x;yt	move window to (x, y)
	\E[4;w;ht	resize window - width w, height h pixels
	\E[5t		raise window
	\E[6t		lower window
	\E[7t		redisplay window
	\E[8;r;ct	resize window - r rows, c columns
	\E[13t		send window position \E[3;x;yt
	\E[14t		send window size (pixel) \E[4;w;ht
	\E[18t		send window size (rows and columns) \E[8;r;ct

The text for reexcuting (shift-left button), copy (shift-middle button-drag)
and paste (shift-right button) is now hilited by reverse video.

Pasting text that was originally displayed as vt102 graphic characters now
returns the original ascii character (and not the internal representation).

Text that is scrolled off the top of the window can be saved and is accessable
via a scrollbar.  By default, saving is off and can be turned changed via
escape sequence \E[?43h (on) and \E[43l (off) or from the mode menu.  The
scrollbar is normally off, but may be made visible with .Xdefault option
"xterm.ScrollBar on" or command line option -sb.  The scrollbar state can
be changed via the mode menu or escape sequences \E[?42h (on) and \E[?42l
(off).

The scrollbar is composed of three parts (from top down), the scroll button,
the save button and the scroll region.  The scroll button changes what is
displayed in the window.  Left button pressed in the scroll button causes
the window to move one line up (the text scrolls one line down).  The right
button moves one line down.  Shift left button moves one screenful up and shift
right button moves one screenful down.  Control left button moves to the top
of the buffer, control right button moves to the bottom.  The visible area
is shown graphically in the scroll region, with the (usually) dark region
that part of the buffer that appears in the window.  Clicking the left or
right button in the scroll region cause the visible region to be position
with its top at the mouse position.  The save button shows the state of saving
or not saving lines.  By default, any input or output will return the
screen to the bottom.

The default maximum number of lines saved off the top is 64, but can be
specified in .Xdefaults as "xterm.SaveLines 100" for 100 lines, or as
a command line option "-sl 100".

The lines saved can be cleared via the mode menu.

A margin bell can be turned on via .Xdefaults "xterm.MarginBell on", command
line option -mb or mode menu.  The default number of columns from the right
margin is 10 and is settable via .Xdefaults "xterm.NMarginBell 15" for 15
columns, or via command line option -nb 15.  The mode may be changed by escape
sequence \E[?44h (on) and \E[?44l (off).

To emulate the vt102 switching between 80 and 132 columns, the mode may
be turned on via .Xdefaults "xterm.C132 on", via command line option -132 or
via the mode menu.  The mode may be changed by escape sequence \E[?40h (on)
and \E[?40l (off).

A mode that fixes a bug in curses (e.g. when using "more" on lines that have
lines that print on the last column of the line and the next line begins with
a tab) can be turned on .Xdefaults "xterm.Curses on", command line option
-cu or via the mode menu.  The mode may be changed by escape sequence
\E[?41h (on) and \E[?41l (off).

Auto linefeed mode and auto repeat are supported.

The mode menu is now more descriptive.

Most Dec Private mode settings can be save away internally using \E[?ns,
where n is the same number to set or reset the Dec Private mode.  The
mode can be restored using \E[?nr.  This can be used in termcap for vi, for
example, to turn off saving of lines, but restore whatever the original
state was on exit.

An optional status line (in reverse video) has been added to the bottom of
the vt102 window.  The following escape sequences work on the status line:
	\E[?S		show status line
	\E[?H		hide status line
	\E[?nT		enter status line, at column n
	\E[?F		return to the position before entry into status line
	\E[?E		erase status line
Also, the status line may be turned on via .Xdefaults "xterm.StatusLine on",
the -st commandline option or from the mode menu.

Reverse wraparound can be enabled with .Xdefaults "xterm.ReverseWrap on", via
command line option -rw or from the mode menu.  Also the escape sequences
\E[?45h turns on reverse wraparound and \E[?45l turns it off.  Reverse
wraparound only works when autowrap is also on and is useful, for instance,
when entering a long line that wraps to the shell and needing to erase
backwards to correct it.

The scrollbar code has been modified to use fewer pixmaps, and should work
better on the GPX.

An alternate screen buffer is now supported.  Entry into the alternate screen
buffer with \E[?47h will automatically inhibit lines from being saved off the
top of the window and \E[?47l returns to the normal screen buffer and restores
the original state of line saving.  The new termcap entry causes vi to use
the alternate screen buffer on entry and clears the alternate buffer before
returning to the regular buffer.

If the normal font is specified and the bold font isn't, then the bold font
is automatically created be overstring, ala dcmartin@ingres.

The scrollbar now has its own menu, available when the middle button is pressed
anywhere in the scrollbar.  The menu entries originally in the mode menu having
to do with the scrollbar have been moved to the scrollbar menu (except the
Scrollbar entry, to initially display the scrollbar).

The scroll bar may be repositioned automatically at the bottom when input comes
in by using .Xdefaults "xterm.ScrollInput on", using -si on the command line
or via the scrollbar menu.

The scroll bar may be repositioned automatically at the bottom when a key is
pressed by using .Xdefaults "xterm.ScrollKey on", using -sk on the command line
or via the scrollbar menu.

Normally the status line is displayed in reverse video.  A normal-video status
line may be obtained by using .Xdefaults "xterm.StatusNormal on", with
-sn on the command line or via the mode menu, or may be controlled with the
escape sequences \E[?48h (on) and \E[?48l (off).  In normal video mode, a
box is still drawn around the status line.

Page scroll mode may be activated by using .Xdefaults "xterm.PageScroll on",
using -ps on the command line or via the mode menu, or may be control by the
escape sequences \E[?49h (on) and \E[?49l (off).  In page scroll mode,
after a page of input has been displayed, further scrolling is disabled
and the text cursor is hidden.  Typing a carriage return allows another
line to be scrolled (the return is discarded).  Pressing the space bar (or any
other printable character) causes another page to be scrolled (the character
is discarded).  Typing a control character scrolls another page, but the
control character is sent (e.g., your interrupt character).

A page in page scroll mode is defined to be the number of lines in the current
scrolling region, minus the page overlap number.  The page overlap is one by
default, but may be set by .Xdefaults "xterm.PageOverlap 3" or via the
"-po 3" command line option.

Page scroll mode is automatically inhibited when using the alternate screen.

The icon windows are now named, with " (icon)" appended.  Thus, iconified
xterms now show up in the windows menu.

Tektronix
---------

Tek mode is much more complete than the original.

Tek standard two column mode is supported.

Four different character sizes are supported and can be changed via the
tek menu.

5 line types are supported (solid, dotted, short dashed, long dashed and
dot dashed).

All of the tek character sequences are stored and can be saved into a file
via the standard COPY escape sequence or from the mode menu.  The file created
is named COPYyy-mm-dd.hh:mm:ss (COPY plus the date and time) and is placed
in the initial directory in which xterm was started.  Login xterms use the
users home directory.

When the tek window is being refreshed, the mouse cursor shows a clock.

The X geometry of the Tek window can be given on the command line (independently
of the VT102 window) by using %geometry (`%' rather than `=').

In GIN mode, pressing a key will send the key and the mouse coordinates of
the cross cursor, similar to standard Tek GIN mode.  Pressing a mouse button
instead will send the character `l', `m' or `r' depending on whether the
left, middle or right button was pressed, respectively.  If the shift key was
down when the button was pressed, the corresponding upper case character is
sent.  To distinquish a button press from a key press, the high bit of the
character is set, but this is only useful if the tty mode is set to RAW to
pass all 8 bits.
