tomw@orac.esd.sgi.com (Tom Weinstein) (09/14/90)
Submitted-by: Tom Weinstein <tomw@orac.esd.sgi.com> Posting-number: Volume 9, Issue 33 Archive-name: colxterm/part03 #! /bin/sh # This is a shell archive. Remove anything before this line, then feed it # into a shell via "sh file" or similar. To overwrite existing files, # type "sh file -c". # The tool that generated this appeared in the comp.sources.unix newsgroup; # send mail to comp-sources-unix@uunet.uu.net if you want that tool. # If this archive is complete, you will see the following message at the end: # "End of archive 3 (of 14)." # Contents: xterm/main.c.ac xterm/xterm.man.aa # Wrapped by argv@turnpike on Thu Sep 13 20:42:18 1990 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'xterm/main.c.ac' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'xterm/main.c.ac'\" else echo shar: Extracting \"'xterm/main.c.ac'\" \(15850 characters\) sed "s/^X//" >'xterm/main.c.ac' <<'END_OF_FILE' X if (term->misc.login_shell && X (i = open(etc_wtmp, O_WRONLY|O_APPEND)) >= 0) { X write(i, (char *)&utmp, X sizeof(struct utmp)); X close(i); X } X#endif /* WTMP */ X#ifdef LASTLOG X if (term->misc.login_shell && X (i = open(etc_lastlog, O_WRONLY)) >= 0) { X bzero((char *)&lastlog, X sizeof (struct lastlog)); X (void) strncpy(lastlog.ll_line, ttydev + X sizeof("/dev"), X sizeof (lastlog.ll_line)); X (void) strncpy(lastlog.ll_host, X XDisplayString (screen->display), X sizeof (lastlog.ll_host)); X time(&lastlog.ll_time); X lseek(i, (long)(screen->uid * X sizeof (struct lastlog)), 0); X write(i, (char *)&lastlog, X sizeof (struct lastlog)); X close(i); X } X#endif /* LASTLOG */ X } else X tslot = -tslot; X } X X /* Let's pass our ttyslot to our parent so that it can X * clean up after us. X */ X#ifdef USE_HANDSHAKE X handshake.tty_slot = tslot; X#endif /* USE_HANDSHAKE */ X#endif /* USE_SYSV_UTMP */ X X#ifdef USE_HANDSHAKE X /* Let our parent know that we set up our utmp entry X * so that it can clean up after us. X */ X handshake.status = UTMP_ADDED; X handshake.error = 0; X strcpy(handshake.buffer, ttydev); X (void) write(cp_pipe[1], &handshake, sizeof(handshake)); X#endif /* USE_HANDSHAKE */ X#endif/* UTMP */ X X (void) setgid (screen->gid); X#ifdef HAS_BSD_GROUPS X if (geteuid() == 0 && pw) X initgroups (pw->pw_name, pw->pw_gid); X#endif X (void) setuid (screen->uid); X X#ifdef USE_HANDSHAKE X /* mark the pipes as close on exec */ X fcntl(cp_pipe[1], F_SETFD, 1); X fcntl(pc_pipe[0], F_SETFD, 1); X X /* We are at the point where we are going to X * exec our shell (or whatever). Let our parent X * know we arrived safely. X */ X handshake.status = PTY_GOOD; X handshake.error = 0; X (void) strcpy(handshake.buffer, ttydev); X (void) write(cp_pipe[1], &handshake, sizeof(handshake)); X X if (waiting_for_initial_map) { X i = read (pc_pipe[0], (char *) &handshake, X sizeof(handshake)); X if (i != sizeof(handshake) || X handshake.status != PTY_EXEC) { X /* some very bad problem occurred */ X exit (ERROR_PTY_EXEC); X } X screen->max_row = handshake.rows; X screen->max_col = handshake.cols; X#ifdef sun X#ifdef TIOCSSIZE X ts.ts_lines = screen->max_row + 1; X ts.ts_cols = screen->max_col + 1; X#endif /* TIOCSSIZE */ X#else /* !sun */ X#ifdef TIOCSWINSZ X ws.ws_row = screen->max_row + 1; X ws.ws_col = screen->max_col + 1; X ws.ws_xpixel = FullWidth(screen); X ws.ws_ypixel = FullHeight(screen); X#endif /* TIOCSWINSZ */ X#endif /* sun else !sun */ X } X#endif /* USE_HANDSHAKE */ X X#ifdef USE_SYSV_ENVVARS X sprintf (numbuf, "%d", screen->max_col + 1); X Setenv("COLUMNS=", numbuf); X sprintf (numbuf, "%d", screen->max_row + 1); X Setenv("LINES=", numbuf); X#else X#ifdef USE_TERMCAP X if(!screen->TekEmu) { X strcpy (termcap, newtc); X resize (screen, TermName, termcap, newtc); X } X if (term->misc.titeInhibit) { X remove_termcap_entry (newtc, ":ti="); X remove_termcap_entry (newtc, ":te="); X } X /* X * work around broken termcap entries */ X if (resource.useInsertMode) { X remove_termcap_entry (newtc, ":ic="); X /* don't get duplicates */ X remove_termcap_entry (newtc, ":im="); X remove_termcap_entry (newtc, ":ei="); X remove_termcap_entry (newtc, ":mi"); X strcat (newtc, ":im=\\E[4h:ei=\\E[4l:mi:"); X } X Setenv ("TERMCAP=", newtc); X#endif /* USE_TERMCAP */ X#endif /* USE_SYSV_ENVVAR */ X X X /* need to reset after all the ioctl bashing we did above */ X#ifdef sun X#ifdef TIOCSSIZE X ioctl (0, TIOCSSIZE, &ts); X#endif /* TIOCSSIZE */ X#else /* not sun */ X#ifdef TIOCSWINSZ X ioctl (0, TIOCSWINSZ, (char *)&ws); X#endif /* TIOCSWINSZ */ X#endif /* sun */ X X signal(SIGHUP, SIG_DFL); X if (command_to_exec) { X execvp(*command_to_exec, command_to_exec); X /* print error message on screen */ X fprintf(stderr, "%s: Can't execvp %s\n", xterm_name, X *command_to_exec); X } X X#ifdef att X /* fix pts sh hanging around */ X signal (SIGHUP, SIG_DFL); X#endif X X#ifdef UTMP X if(((ptr = getenv("SHELL")) == NULL || *ptr == 0) && X ((pw == NULL && (pw = getpwuid(screen->uid)) == NULL) || X *(ptr = pw->pw_shell) == 0)) X#else /* UTMP */ X if(((ptr = getenv("SHELL")) == NULL || *ptr == 0) && X ((pw = getpwuid(screen->uid)) == NULL || X *(ptr = pw->pw_shell) == 0)) X#endif /* UTMP */ X ptr = "/bin/sh"; X if(shname = rindex(ptr, '/')) X shname++; X else X shname = ptr; X shname_minus = malloc(strlen(shname) + 2); X (void) strcpy(shname_minus, "-"); X (void) strcat(shname_minus, shname); X#ifdef TIOCSETD X#ifdef NTTYDISC X#ifdef USE_SYSV_TERMIO X /* If we're SYSV, the line discipline is probably already X * correct for most shells, BUT if NTTYDISC exists it is X * likely to be the best choice for a JOBCONTROL knowledgable X * shell like "csh" or "ksh" X */ X if ( XStrCmp("csh", shname + strlen(shname) - 3) == 0 X || XStrCmp("ksh", shname + strlen(shname) - 3) == 0 ) { X ldisc = NTTYDISC ; X ioctl(0, TIOCSETD, (char *)&ldisc); X } X#else X ldisc = XStrCmp("csh", shname + strlen(shname) - 3) == 0 ? X NTTYDISC : 0; X ioctl(0, TIOCSETD, (char *)&ldisc); X#endif /* USE_SYSV_TERMIO */ X#endif /* NTTYDISC */ X#endif /* TIOCSETD */ X X#ifdef USE_LOGIN_DASH_P X if (term->misc.login_shell && pw && added_utmp_entry) X execl (bin_login, "login", "-p", "-f", pw->pw_name, 0); X#endif X execlp (ptr, (term->misc.login_shell ? shname_minus : shname), X 0); X X /* Exec failed. */ X fprintf (stderr, "%s: Could not exec %s!\n", xterm_name, ptr); X sleep(5); X exit(ERROR_EXEC); X } /* end if in child after fork */ X X#ifdef USE_HANDSHAKE X /* Parent process. Let's handle handshaked requests to our X * child process. X */ X X /* close childs's sides of the pipes */ X close (cp_pipe[1]); X close (pc_pipe[0]); X X for (done = 0; !done; ) { X if (read(cp_pipe[0], &handshake, sizeof(handshake)) <= 0) { X /* Our child is done talking to us. If it terminated X * due to an error, we will catch the death of child X * and clean up. X */ X break; X } X X switch(handshake.status) { X case PTY_GOOD: X /* Success! Let's free up resources and X * continue. X */ X done = 1; X break; X X case PTY_BAD: X /* The open of the pty failed! Let's get X * another one. X */ X (void) close(screen->respond); X if (get_pty(&screen->respond)) { X /* no more ptys! */ X (void) fprintf(stderr, X "%s: no available ptys\n", xterm_name); X handshake.status = PTY_NOMORE; X write(pc_pipe[1], &handshake, sizeof(handshake)); X exit (ERROR_PTYS); X } X handshake.status = PTY_NEW; X (void) strcpy(handshake.buffer, ttydev); X write(pc_pipe[1], &handshake, sizeof(handshake)); X break; X X case PTY_FATALERROR: X errno = handshake.error; X close(cp_pipe[0]); X close(pc_pipe[1]); X SysError(handshake.fatal_error); X X case UTMP_ADDED: X /* The utmp entry was set by our slave. Remember X * this so that we can reset it later. X */ X added_utmp_entry = True; X#ifndef USE_SYSV_UTMP X tslot = handshake.tty_slot; X#endif /* USE_SYSV_UTMP */ X free(ttydev); X ttydev = malloc((unsigned) strlen(handshake.buffer) + 1); X strcpy(ttydev, handshake.buffer); X break; X } X } X /* close our sides of the pipes */ X if (!waiting_for_initial_map) { X close (cp_pipe[0]); X close (pc_pipe[1]); X } X#endif /* USE_HANDSHAKE */ X } /* end if no slave */ X X /* X * still in parent (xterm process) X */ X X#ifdef att X /* hung sh problem? */ X signal (SIGHUP, SIG_DFL); X#else X signal (SIGHUP,SIG_IGN); X#endif X X/* X * Unfortunately, System V seems to have trouble divorcing the child process X * from the process group of xterm. This is a problem because hitting the X * INTR or QUIT characters on the keyboard will cause xterm to go away if we X * don't ignore the signals. This is annoying. X */ X X#if defined(USE_SYSV_SIGNALS) && !defined(SIGTSTP) X signal (SIGINT, SIG_IGN); X X#ifndef att X /* hung shell problem */ X signal (SIGQUIT, SIG_IGN); X#endif X signal (SIGTERM, SIG_IGN); X#else /* else is bsd or has job control */ X#ifdef SYSV X /* if we were spawned by a jobcontrol smart shell (like ksh or csh), X * then our pgrp and pid will be the same. If we were spawned by X * a jobcontrol dump shell (like /bin/sh), then we will be in out X * parents pgrp, and we must ignore keyboard signals, or will will X * tank on everything. X */ X if (getpid() == getpgrp()) { X (void) signal(SIGINT, Exit); X (void) signal(SIGQUIT, Exit); X (void) signal(SIGTERM, Exit); X } else { X (void) signal(SIGINT, SIG_IGN); X (void) signal(SIGQUIT, SIG_IGN); X (void) signal(SIGTERM, SIG_IGN); X } X (void) signal(SIGPIPE, Exit); X#else /* SYSV */ X signal (SIGINT, Exit); X signal (SIGQUIT, Exit); X signal (SIGTERM, Exit); X signal (SIGPIPE, Exit); X#endif /* SYSV */ X#endif /* USE_SYSV_SIGNALS and not SIGTSTP */ X X return; X} /* end spawn */ X XSIGNAL_T Exit(n) X int n; X{ X register TScreen *screen = &term->screen; X int pty = term->screen.respond; /* file descriptor of pty */ X#ifdef UTMP X#ifdef USE_SYSV_UTMP X struct utmp utmp; X struct utmp *utptr; X#ifdef WTMP X int fd; /* for /etc/wtmp */ X#endif X /* cleanup the utmp entry we forged earlier */ X if (!resource.utmpInhibit && added_utmp_entry) { X#ifdef CRAY X#define PTYCHARLEN 4 X#else X#define PTYCHARLEN 2 X#endif X utmp.ut_type = USER_PROCESS; X (void) strncpy(utmp.ut_id, ttydev + strlen(ttydev) - PTYCHARLEN, X sizeof(utmp.ut_id)); X (void) setutent(); X utptr = getutid(&utmp); X /* write it out only if it exists, and the pid's match */ X if (utptr && (utptr->ut_pid = screen->pid)) { X utptr->ut_type = DEAD_PROCESS; X utptr->ut_time = time((long *) 0); X (void) pututline(utptr); X#ifdef WTMP X /* set wtmp entry if wtmp file exists */ X if ((fd = open(etc_wtmp, O_WRONLY | O_APPEND)) >= 0) { X (void) write(fd, utptr, sizeof(utmp)); X (void) close(fd); X } X#endif X X } X (void) endutent(); X } X#else /* not USE_SYSV_UTMP */ X register int i; X struct utmp utmp; X X if (!resource.utmpInhibit && added_utmp_entry && X (!am_slave && tslot > 0 && (i = open(etc_utmp, O_WRONLY)) >= 0)) { X bzero((char *)&utmp, sizeof(struct utmp)); X lseek(i, (long)(tslot * sizeof(struct utmp)), 0); X write(i, (char *)&utmp, sizeof(struct utmp)); X close(i); X#ifdef WTMP X if (term->misc.login_shell && X (i = open(etc_wtmp, O_WRONLY | O_APPEND)) >= 0) { X (void) strncpy(utmp.ut_line, ttydev + X sizeof("/dev"), sizeof (utmp.ut_line)); X time(&utmp.ut_time); X write(i, (char *)&utmp, sizeof(struct utmp)); X close(i); X } X#endif /* WTMP */ X } X#endif /* USE_SYSV_UTMP */ X#endif /* UTMP */ X close(pty); /* close explicitly to avoid race with slave side */ X if(screen->logging) X CloseLog(screen); X X if (!am_slave) { X /* restore modes of tty and pty */ X chmod (ttydev, 0666); X#ifndef sgi X chmod (ptydev, 0666); X#endif /* sgi */ X X /* restore ownership of tty and pty */ X chown (ttydev, 0, 0); X#ifndef sgi X chown (ptydev, 0, 0); X#endif /* sgi */ X } X exit(n); X SIGNAL_RETURN; X} X X/* ARGSUSED */ Xresize(screen, TermName, oldtc, newtc) XTScreen *screen; Xchar *TermName; Xregister char *oldtc, *newtc; X{ X#if !defined USE_SYSV_ENVVARS && defined USE_TERMCAP X register char *ptr1, *ptr2; X register int i; X register int li_first = 0; X register char *temp; X char *index(); X X if ((ptr1 = strindex (oldtc, "co#")) == NULL){ X strcat (oldtc, "co#80:"); X ptr1 = strindex (oldtc, "co#"); X } X if ((ptr2 = strindex (oldtc, "li#")) == NULL){ X strcat (oldtc, "li#24:"); X ptr2 = strindex (oldtc, "li#"); X } X if(ptr1 > ptr2) { X li_first++; X temp = ptr1; X ptr1 = ptr2; X ptr2 = temp; X } X ptr1 += 3; X ptr2 += 3; X strncpy (newtc, oldtc, i = ptr1 - oldtc); X newtc += i; X sprintf (newtc, "%d", li_first ? screen->max_row + 1 : X screen->max_col + 1); X newtc += strlen(newtc); X ptr1 = index (ptr1, ':'); X strncpy (newtc, ptr1, i = ptr2 - ptr1); X newtc += i; X sprintf (newtc, "%d", li_first ? screen->max_col + 1 : X screen->max_row + 1); X ptr2 = index (ptr2, ':'); X strcat (newtc, ptr2); X#endif /* !defined USE_SYSV_ENVVARS && defined USE_TERMCAP */ X} X Xstatic SIGNAL_T reapchild () X{ X#if defined(USE_SYSV_SIGNALS) && !defined(SIGTSTP) X int status, pid; X X pid = wait(&status); X if (pid == -1) { X (void) signal(SIGCHLD, reapchild); X SIGNAL_RETURN; X } X#else /* defined(USE_SYSV_SIGNALS) && !defined(SIGTSTP) */ X union wait status; X register int pid; X X#ifdef DEBUG X if (debug) fputs ("Exiting\n", stderr); X#endif /* DEBUG */ X pid = wait3 (&status, WNOHANG, (struct rusage *)NULL); X if (!pid) { X#ifdef USE_SYSV_SIGNALS X (void) signal(SIGCHLD, reapchild); X#endif /* USE_SYSV_SIGNALS */ X SIGNAL_RETURN; X } X#endif /* defined(USE_SYSV_SIGNALS) && !defined(SIGTSTP) */ X X#ifdef PUCC_PTYD X closepty(ttydev, ptydev, (resource.utmpInhibit ? OPTY_NOP : OPTY_LOGIN), Ptyfd); X#endif /* PUCC_PTYD */ X X if (pid != term->screen.pid) { X#ifdef USE_SYSV_SIGNALS X (void) signal(SIGCHLD, reapchild); X#endif /* USE_SYSV_SIGNALS */ X SIGNAL_RETURN; X } X X /* X * Use pid instead of process group (which would have to get before X * the wait call above) so that we don't accidentally hose other X * applications. Otherwise, somebody could write a program which put X * itself in somebody else's process group. Also, we call Exit instead X * of Cleanup so that we don't do a killpg on -1 by accident. Some X * operating systems seem to do very nasty things with that. X */ X if (pid > 1) { X killpg (pid, SIGHUP); X } X Exit (0); X SIGNAL_RETURN; X} X X/* VARARGS1 */ Xconsolepr(fmt,x0,x1,x2,x3,x4,x5,x6,x7,x8,x9) Xchar *fmt; X{ X extern int errno; X extern char *SysErrorMsg(); X int oerrno; X int f; X char buf[ BUFSIZ ]; X X oerrno = errno; X strcpy(buf, "xterm: "); X sprintf(buf+strlen(buf), fmt, x0,x1,x2,x3,x4,x5,x6,x7,x8,x9); X strcat(buf, ": "); X strcat(buf, SysErrorMsg (oerrno)); X strcat(buf, "\n"); X f = open("/dev/console",O_WRONLY); X write(f, buf, strlen(buf)); X close(f); X#ifdef TIOCNOTTY X if ((f = open("/dev/tty", 2)) >= 0) { X ioctl(f, TIOCNOTTY, (char *)NULL); X#ifdef sgi X#ifdef __KERNEL_BUSTED__TIOCNOTTY_MAKES_PROC_GROUP_LEADER__ X BSDsetpgrp( 0, 0 ) ; X#endif /* __KERNEL_BUSTED__TIOCNOTTY_MAKES_PROC_GROUP_LEADER__ */ X#endif /* sgi */ X close(f); X } X#endif /* TIOCNOTTY */ X} X X X#ifdef USE_TERMCAP Xremove_termcap_entry (buf, str) X char *buf; X char *str; X{ X register char *strinbuf; X X strinbuf = strindex (buf, str); X if (strinbuf) { X register char *colonPtr = index (strinbuf+1, ':'); X if (colonPtr) { X while (*colonPtr) { X *strinbuf++ = *colonPtr++; /* copy down */ X } X *strinbuf = '\0'; X } else { X strinbuf[1] = '\0'; X } X } X return; X} X#endif /* USE_TERMCAP */ X X/* X * parse_tty_modes accepts lines of the following form: X * X * [SETTING] ... X * X * where setting consists of the words in the modelist followed by a character X * or ^char. X */ Xstatic int parse_tty_modes (s, modelist) X char *s; X struct _xttymodes *modelist; X{ X struct _xttymodes *mp; X int c; X int count = 0; X X while (1) { X while (*s && isascii(*s) && isspace(*s)) s++; X if (!*s) return count; X X for (mp = modelist; mp->name; mp++) { X if (strncmp (s, mp->name, mp->len) == 0) break; X } X if (!mp->name) return -1; X X s += mp->len; X while (*s && isascii(*s) && isspace(*s)) s++; X if (!*s) return -1; X X if (*s == '^') { X s++; X c = ((*s == '?') ? 0177 : *s & 31); /* keep control bits */ X } else { X c = *s; X } X mp->value = c; X mp->set = 1; X count++; X s++; X } X} X X Xint GetBytesAvailable (fd) X int fd; X{ X#ifdef FIONREAD X static long arg; X ioctl (fd, FIONREAD, (char *) &arg); X return (int) arg; X#else X struct pollfd pollfds[1]; X X pollfds[0].fd = fd; X pollfds[0].events = POLLIN; X return poll (pollfds, 1, 0); X#endif X} END_OF_FILE if test 15850 -ne `wc -c <'xterm/main.c.ac'`; then echo shar: \"'xterm/main.c.ac'\" unpacked with wrong size! fi # end of 'xterm/main.c.ac' fi if test -f 'xterm/xterm.man.aa' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'xterm/xterm.man.aa'\" else echo shar: Extracting \"'xterm/xterm.man.aa'\" \(37062 characters\) sed "s/^X//" >'xterm/xterm.man.aa' <<'END_OF_FILE' X.TH XTERM 1 "Release 4" "X Version 11" X.SH NAME Xxterm \- terminal emulator for X X.SH SYNOPSIS X.B xterm X[-\fItoolkitoption\fP ...] [-option ...] X.SH DESCRIPTION XThe \fIxterm\fP program is a terminal emulator for the X Window System. XIt provides DEC VT102 and Tektronix 4014 Xcompatible terminals for programs that can't Xuse the window system directly. If the underlying operating system supports Xterminal resizing capabilities (for example, the SIGWINCH signal in systems Xderived from 4.3bsd), \fIxterm\fP will use the facilities to notify programs Xrunning in the window whenever it is resized. X.PP XThe VT102 and Tektronix 4014 terminals each have their own window so that you Xcan edit text in one and look at graphics in the other at the same time. XTo maintain the correct aspect ratio (height/width), Tektronix graphics will Xbe restricted to the largest box with a 4014's aspect ratio that will fit in Xthe window. This box is located in the upper left area of the window. X.PP XAlthough both windows may be displayed at the same time, one of them is Xconsidered the ``active'' window for receiving keyboard input and terminal Xoutput. This is the window that contains the text cursor and whose border Xhighlights whenever the pointer is in either window. XThe active window can be chosen through escape sequences, Xthe ``Modes'' menu in the VT102 window, and the ``Tektronix'' Xmenu in the 4014 window. X.SH OPTIONS XThe \fIxterm\fP terminal emulator Xaccepts all of the standard X Toolkit command line options as well as Xthe following (if the option begins with a X.RB ` + ' Xinstead of a X.RB ` \- ', Xthe option is restored to its default value): X.TP 8 X.B \-help XThis causes \fIxterm\fP to print out a verbose message describing its options. X.TP 8 X.B \-132 XNormally, the VT102 DECCOLM escape sequence that switches between 80 and X132 column mode is ignored. XThis option causes the DECCOLM escape sequence to be recognized, and the X.I xterm Xwindow will resize appropriately. X.TP 8 X.B \-ah XThis option indicates that X.I xterm Xshould always highlight the text cursor and borders. By default, X.I xterm Xwill display a hollow text cursor whenever the focus is lost or the Xpointer leaves the window. X.TP 8 X.B \+ah XThis option indicates that X.I xterm Xshould do text cursor highlighting. X.TP 8 X.BI \-b " number" XThis option specifies the size of the inner border (the distance between Xthe outer edge of the characters and the window border) in pixels. The Xdefault is 2. X.TP 8 X.B "\-cc \fIcharacterclassrange\fP:\fIvalue\fP[,...]" XThis sets classes indicated by the given ranges for using in selecting by Xwords. See the section specifying character classes. X.TP 8 X.B "\-cn" XThis option indicates that newlines should not be cut in line-mode Xselections. X.TP 8 X.B \+cn XThis option indicates that newlines should be cut in line-mode selections. X.TP 8 X.BI \-cr " color" XThis option specifies the color to use for text cursor. The default is to Xuse the same foreground color that is used for text. X.TP 8 X.B \-cu XThis option indicates that \fIxterm\fP should work around a bug in the X.IR curses (3x) Xcursor motion package that causes the X.IR more (1) Xprogram to display lines that are exactly the width of the window and Xare followed by a line beginning with a tab to be displayed incorrectly X(the leading tabs are not displayed). X.TP 8 X.B \+cu XThis option indicates that that \fIxterm\fP should not work around the X.IR curses (3x) Xbug mentioned above. X.TP 8 X.BI \-e " program \[arguments \.\.\.\]" XThis option specifies the program (and its command line arguments) to be Xrun in the \fIxterm\fP window. It also sets the window title and icon Xname to be the basename of the program being executed if neither \fI-T\fP Xnor \fI-n\fP are given on the command line. \fBThis must be the last Xoption on the command line.\fP X.TP 8 X.BI \-fb " font" XThis option specifies a font to be used when displaying bold text. XThis font must be the same height and width as the normal font. XIf only one of the normal or bold fonts is specified, it will be used as the Xnormal font and the bold font will be produced by overstriking this font. XThe default is to do overstriking of the normal font. X.TP 8 X.B \-j XThis option indicates that \fIxterm\fP should do jump scrolling. Normally, Xtext is scrolled one line at a time; this option allows \fIxterm\fP to move Xmultiple lines at a time so that it doesn't fall as far behind. Its use is Xstrongly recommended since it make \fIxterm\fP much faster when scanning Xthrough large amounts of text. The VT100 escape sequences for enabling and Xdisabling smooth scroll as well as the ``Modes'' menu can be used to turn this Xfeature on or off. X.TP 8 X.B \+j XThis option indicates that \fIxterm\fP should not do jump scrolling. X.TP 8 X.B \-blt XThis option indicates that \fIxterm\fP should scroll by copying the text Xthat is to be scrolled from one part of the window to another and then Xdrawing text that was not available to be copied into the remaining area Xof the window. This is the normal method for scrolling as copying is Xusually faster than drawing text. The ``Modes'' menu can be used to Xturn this feature on or off. X.TP 8 X.B \+blt XThis option indicates that \fIxterm\fP should not do blt scrolling. XInstead, the entire contents of the scrolled region are redrawn. This Xis faster on some machines. X.TP 8 X.B \-l XThis option indicates that \fIxterm\fP should send all terminal output to Xa log file as well as to the screen. This option can be enabled or disabled Xusing the ``xterm X11'' menu. X.TP 8 X.B \+l XThis option indicates that \fIxterm\fP should not do logging. X.TP 8 X.BI \-lf " filename" XThis option specifies the name of the file to which the output log described Xabove is written. If \fIfile\fP begins with a pipe symbol (|), the rest of Xthe string is assumed to be a command to be used as the endpoint of a pipe. XThe default filename is ``\fBXtermLog.\fIXXXXX\fR'' (where \fIXXXXX\fP Xis the process id of \fIxterm\fP) and is created in the directory from which X\fIxterm\fP was started (or the user's home directory in the case of a Xlogin window). X.TP 8 X.B \-ls XThis option indicates that the shell that is started in the \fIxterm\fP window Xbe a login shell (i.e. the first character of argv[0] will be a dash, Xindicating to the shell that it should read the user's .login or .profile). X.TP 8 X.B \+ls XThis option indicates that the shell that is started should not be a login Xshell (i.e. it will be a normal ``subshell''). X.TP 8 X.B \-mb XThis option indicates that \fIxterm\fP should ring a margin bell when Xthe user types near the right end of a line. This option can be turned on Xand off from the ``Modes'' menu. X.TP 8 X.B \+mb XThis option indicates that margin bell should not be rung. X.TP 8 X.B "\-mc milliseconds" XThis option specifies the maximum time between multi-click selections. X.TP 8 X.BI \-ms " color" XThis option specifies the color to be used for the pointer cursor. The default Xis to use the foreground color. X.TP 8 X.BI \-nb " number" XThis option specifies the number of characters from the right end of a line Xat which the margin bell, if enabled, will ring. The default is 10. X.TP 8 X.B \-rw XThis option indicates that reverse-wraparound should be allowed. This allows Xthe cursor to back up from the leftmost column of one line to the rightmost Xcolumn of the previous line. This is very useful for editing long shell Xcommand lines and is encouraged. This option can be turned on and off from Xthe ``Modes'' menu. X.TP 8 X.B \+rw XThis option indicates that reverse-wraparound should not be allowed. X.TP 8 X.B \-aw XThis option indicates that auto-wraparound should be allowed. This Xallows the cursor to automatically wrap to the beginning of the next Xline when when it is at the rightmost position of a line and text is Xoutput. X.TP 8 X.B \+aw XThis option indicates that auto-wraparound should not be allowed. X.TP 8 X.B \-s XThis option indicates that \fIxterm\fP may scroll asynchronously, meaning that Xthe screen does not have to be kept completely up to date while scrolling. XThis allows \fIxterm\fP to run faster when network latencies are very high Xand is typically useful when running across a very large internet or many Xgateways. X.TP 8 X.B \+s XThis option indicates that \fIxterm\fP should scroll synchronously. X.TP 8 X.B \-sb XThis option indicates that some number of lines that are scrolled off the top Xof the window should be saved and that a scrollbar should be displayed so that Xthose lines can be viewed. This option may be turned on and off from the X``Modes'' menu. X.TP 8 X.B \+sb XThis option indicates that a scrollbar should not be displayed. X.TP 8 X.B \-sf XThis option indicates that Sun Function Key escape codes should be generated Xfor function keys. X.TP 8 X.B \+sf XThis option indicates that the standard escape codes should be generated for Xfunction keys. X.TP 8 X.B \-si XThis option indicates that output to a window should not automatically Xreposition the screen to the bottom of the scrolling region. XThis option can be turned on and off from the ``Modes'' menu. X.TP 8 X.B \+si XThis option indicates that output to a window should cause it to Xscroll to the bottom. X.TP 8 X.B \-sk XThis option indicates that pressing a key while Xusing the scrollbar to review previous lines of text should Xcause the window to be repositioned automatically in the normal position at the Xbottom of the scroll region. X.TP 8 X.B \+sk XThis option indicates that pressing a key while using the scrollbar Xshould not cause the window to be repositioned. X.TP 8 X.BI \-sl " number" XThis option specifies the number of lines to save that have been scrolled Xoff the top of the screen. The default is 64. X.TP 8 X.B \-t XThis option indicates that \fIxterm\fP should start in Tektronix mode, rather Xthan in VT102 mode. Switching between the two windows is done using the X``Modes'' menus. X.TP 8 X.B \+t XThis option indicates that \fIxterm\fP should start in VT102 mode. X.TP 8 X.BI \-tm " string" XThis option specifies a series of terminal setting keywords followed by the Xcharacters that should be bound to those functions, similar to the \fIstty\fP Xprogram. Allowable keywords include: intr, quit, erase, kill, eof, Xeol, swtch, start, stop, brk, susp, dsusp, rprnt, flush, weras, and lnext. XControl characters may be specified as ^char (e.g. ^c or ^u) and ^? may be Xused to indicate delete. X.TP 8 X.BI \-tn " name" XThis option specifies the name of the terminal type to be set in the TERM Xenvironment variable. This terminal type must exist in the \fItermcap(5)\fP Xdatabase and should have \fIli#\fP and \fIco#\fP entries. X.TP 8 X.B \-ut XThis option indicates that \fIxterm\fP shouldn't write a record into the Xthe system log file \fI/etc/utmp\fP. X.TP 8 X.B \+ut XThis option indicates that \fIxterm\fP should write a record into the system Xlog file \fI/etc/utmp\fP. X.TP 8 X.B \-vb XThis option indicates that a visual bell is preferred over an audible one. XInstead of ringing the terminal bell whenever a Control-G is received, the Xwindow will be flashed. X.TP 8 X.B \+vb XThis option indicates that a visual bell should not be used. X.TP 8 X.B \-wf XThis option indicates that \fIxterm\fP should wait for the window to be mapped Xthe first time before starting the subprocess so that the initial terminal Xsize settings and environment variables are correct. It is the application's Xresponsibility to catch subsequent terminal size changes. X.TP 8 X.B \+wf XThis option indicates that \fIxterm\fP show not wait before starting the Xsubprocess. X.TP 8 X.B \-C XThis option indicates that this window should receive console output. This Xis not supported on all systems. X.TP 8 X.B \-S\fIccn\fP XThis option specifies the last two letters of the name of a pseudoterminal Xto use in slave mode, plus the number of the inherited file descriptor. XThe option is parsed "%c%c%d". XThis allows \fIxterm\fP to be used as an input and Xoutput channel for an existing program and is sometimes used in specialized Xapplications. X.PP XThe following command line arguments are provided for compatibility with Xolder versions. They may not be supported in the next release as the X XToolkit provides standard options that accomplish the same task. X.TP 8 X.B "%\fIgeom\fP" XThis option specifies the preferred size and position of the Tektronix window. XIt is shorthand for specifying the "\fI*tekGeometry\fP" resource. X.TP 8 X.B \#\fIgeom\fP XThis option specifies the preferred position of the icon window. XIt is shorthand for specifying the "\fI*iconGeometry\fP" resource. X.TP 8 X.BI \-T " string" XThis option specifies the title for \fIxterm\fP's windows. XIt is equivalent to \fB-title\fP. X.TP 8 X.BI \-n " string" XThis option specifies the icon name for \fIxterm\fP's windows. XIt is shorthand for specifying the "\fI*iconName\fP" resource. XNote that this is not the same as the toolkit option \fB-name\fP (see below). XThe default icon name is the application name. X.TP 8 X.B \-r XThis option indicates that reverse video should be simulated by swapping Xthe foreground and background colors. It is equivalent to X\fB-reversevideo\fP or \fB-rv\fP. X.TP 8 X.BI \-w " number" XThis option specifies the width in pixels of the border surrounding the window. XIt is equivalent to \fB-borderwidth\fP or \fB-bw\fP. X.PP XThe following standard X Toolkit command line arguments are commonly used Xwith \fIxterm\fP: X.TP 8 X.B \-bg \fIcolor\fP XThis option specifies the color to use for the background of the window. XThe default is ``white.'' X.TP 8 X.B \-bd \fIcolor\fP XThis option specifies the color to use for the border of the window. XThe default is ``black.'' X.TP 8 X.B \-bw \fInumber\fP XThis option specifies the width in pixels of the border surrounding the window. X.TP 8 X.B \-fg \fIcolor\fP XThis option specifies the color to use for displaying text. The default is X``black''. X.TP 8 X.B \-fn \fIfont\fP XThis option specifies the font to be used for displaying normal text. The Xdefault is \fIfixed\fP. X.TP 8 X.B \-name \fIname\fP XThis option specifies the application name under which resources are to be Xobtained, rather than the default executable file name. X\fIName\fP should not contain ``.'' or ``*'' characters. X.TP 8 X.B \-title \fIstring\fP XThis option specifies the window title string, which may be displayed by Xwindow managers if the user so chooses. The default title is the command Xline specified after the \fB-e\fP option, if any, otherwise the application Xname. X.TP 8 X.B \-rv XThis option indicates that reverse video should be simulated by swapping Xthe foreground and background colors. X.TP 8 X.B \-geometry \fIgeometry\fP XThis option specifies the preferred size and position of the VT102 window; Xsee \fIX(1)\fP. X.TP 8 X.B \-display \fIdisplay\fP XThis option specifies the X server to contact; see \fIX(1)\fP. X.TP 8 X.B \-xrm \fIresourcestring\fP XThis option specifies a resource string to be used. This is especially Xuseful for setting resources that do not have separate command line options. X.TP 8 X.B \-iconic XThis option indicates that \fIxterm\fP should ask the window manager to Xstart it as an icon rather than as the normal window. X.B \-dc XThis option disables the escape sequence to change the vt100 foreground Xand background colors, the text cursor color, the mouse cursor foreground Xand background colors and the Tektronix emulator foreground and background Xcolors. X.B \+dc XThis option enables the escape sequence to change the vt100 foreground Xand background colors, the text cursor color, the mouse cursor foreground Xand background colors and the Tektronix emulator foreground and background X.SH RESOURCES XThe program understands all of the core X Toolkit resource names and Xclasses as well as: X.\".in +1in X.TP 8 X.B "iconGeometry (\fPclass\fB IconGeometry)" XSpecifies the preferred size and position of the application when iconified. XIt is not necessarily obeyed by all window managers. X.TP 8 X.B "termName (\fPclass\fB TermName)" XSpecifies the terminal type name to be set in the TERM environment variable. X.TP 8 X.B "title (\fPclass\fB Title)" XSpecifies a string that may be used by the window manager when displaying Xthis application. X.TP 8 X.B "ttyModes (\fPclass\fB TtyModes)" XSpecifies a string containing terminal setting keywords and the characters Xto which they may be bound. Allowable keywords include: intr, quit, Xerase, kill, eof, eol, swtch, start, stop, brk, susp, dsusp, rprnt, flush, Xweras, and lnext. Control characters may be specified as ^char (e.g. ^c or ^u) Xand ^? may be used to indicate delete. This is very useful for overriding Xthe default terminal settings without having to do an \fIstty\fP every time Xan \fIxterm\fP is started. X.TP 8 X.B "utmpInhibit (\fPclass\fB UtmpInhibit)" XSpecifies whether or not \fIxterm\fP should try to record the user's terminal Xin \fI/etc/utmp\fP. X.TP 8 X.B "sunFunctionKeys (\fPclass\fB SunFunctionKeys)" XSpecifies whether or not Sun Function Key escape codes should be generated for Xfunction keys instead of standard escape sequences. X.\".in -1in X.sp X.PP XThe following resources are specified as part of the \fIvt100\fP widget (class X\fIVT100\fP): X.\".in +1in X.TP 8 X.B "allowSendEvents (\fPclass\fB AllowSendEvents)" XSpecifies whether or not synthetic key and button events (generated using Xthe X protocol SendEvent request) should be interpreted or discarded. XThe default is ``false'' meaning they are discarded. Note that allowing Xsuch events creates a very large security hole. X.sp X.TP 8 X.B "alwaysHighlight (\fPclass\fB AlwaysHighlight)" XSpecifies whether or not \fIxterm\fP should always display a highlighted Xtext cursor. By default, a hollow text cursor is displayed whenever the Xpointer moves out of the window or the window loses the input focus. X.TP 8 X.B "bltScroll (\fPclass\fB BltScroll)" XSpecifies whether or not blt scroll should be used. The default is ``true''. X.TP 8 X.B "boldFont (\fPclass\fB Font)" XSpecifies the name of the bold font to use instead of overstriking. X.TP 8 X.B "c132 (\fPclass\fB C132)" XSpecifies whether or not the VT102 DECCOLM escape sequence should be honored. XThe default is ``false.'' X.TP 8 X.B "charClass (\fPclass\fB CharClass)" XSpecifies comma-separated lists of character class bindings of the form X\[\fIlow\fP-\]\fIhigh\fP:\fIvalue\fP. These are used in determining which Xsets of characters should be treated the same when doing cut and paste. XSee the section on specifying character classes. X.TP 8 Xcolor0 (\fPclass\fB Foreground) X.TP 8 Xcolor1 (\fPclass\fB Foreground) X.TP 8 Xcolor2 (\fPclass\fB Foreground) X.TP 8 Xcolor3 (\fPclass\fB Foreground) X.TP 8 Xcolor4 (\fPclass\fB Foreground) X.TP 8 Xcolor5 (\fPclass\fB Foreground) X.TP 8 Xcolor6 (\fPclass\fB Foreground) X.TP 8 X.B "color7 (\fPclass\fB Foreground)" XThese specify the colors for the ISO 6429 extension. The defaults are, Xrespectively, black, red, green, yellow, blue, magenta, cyan, and white. X.TP 8 X.B "curses (\fPclass\fB Curses)" XSpecifies whether or not the last column bug in X.IR curses (3x) Xshould be worked around. XThe default is ``false.'' X.TP 8 X.B "background (\fPclass\fB Background)" XSpecifies the color to use for the background of the window. The default is X``white.'' X.TP 8 X.B "foreground (\fPclass\fB Foreground)" XSpecifies the color to use for displaying text in the window. Setting the Xclass name instead of the instance name is an easy way to have everything Xthat would normally appear in the "text" color change color. The default Xis ``black.'' X.TP 8 X.B "cursorColor (\fPclass\fB Foreground)" XSpecifies the color to use for the text cursor. The default is ``black.'' X.TP 8 X.B "eightBitInput (\fPclass\fB EightBitInput\fP)" XSpecifies whether or not eight-bit characters input from the keyboard should Xbe accepted as is or converted into a sequence of escape-7bit characters. XThe default is ``true.'' X.TP 8 X.B "eightBitOutput (\fPclass\fB EightBitOutput\fP)" XSpecifies whether or not eight-bit characters sent from the host should be Xaccepted as is or stripped when printed. The default is ``true.'' X.TP 8 X.B "font (\fPclass\fB Font)" XSpecifies the name of the normal font. The default is ``fixed.'' X.TP 8 X.B "font1 (\fPclass\fB Font1)" XSpecifies the name of the first alternate font. X.TP 8 X.B "font2 (\fPclass\fB Font2)" XSpecifies the name of the second alternate font. X.TP 8 X.B "font3 (\fPclass\fB Font3)" XSpecifies the name of the third alternate font. X.TP 8 X.B "font4 (\fPclass\fB Font4)" XSpecifies the name of the fourth alternate font. X.TP 8 X.B "geometry (\fPclass\fB Geometry)" XSpecifies the preferred size and position of the VT102 window. X.TP 8 X.B "internalBorder (\fPclass\fB BorderWidth)" XSpecifies the number of pixels between the characters and the window border. XThe default is 2. X.TP 8 X.B "jumpScroll (\fPclass\fB JumpScroll)" XSpecifies whether or not jump scroll should be used. The default is ``true''. X.TP 8 X.B "logFile (\fPclass\fB Logfile)" XSpecifies the name of the file to which a terminal session is logged. The Xdefault is ``\fBXtermLog.\fIXXXXX\fR'' (where \fIXXXXX\fP Xis the process id of \fIxterm\fP). X.TP 8 X.B "logging (\fPclass\fB Logging)" XSpecifies whether or not a terminal session should be logged. The default is X``false.'' X.TP 8 X.B "logInhibit (\fPclass\fB LogInhibit)" XSpecifies whether or not terminal session logging should be inhibited. The Xdefault is ``false.'' X.TP 8 X.B "loginShell (\fPclass\fB LoginShell)" XSpecifies whether or not the shell to be run in the window should be started Xas a login shell. The default is ``false.'' X.TP 8 X.B "marginBell (\fPclass\fB MarginBell)" XSpecifies whether or not the bell should be run when the user types near the Xright margin. The default is ``false.'' X.TP 8 X.B "multiScroll (\fPclass\fB MultiScroll)" XSpecifies whether or not asynchronous scrolling is allowed. The default is X``false.'' X.TP 8 X.B "multiClickTime (\fPclass\fB MultiClickTime)" XSpecifies the maximum time in milliseconds between multi-clock select Xevents. The default is 250 milliseconds. X.TP 8 X.B "multiScroll (\fPclass\fB MultiScroll)" XSpecifies whether or not scrolling should be done asynchronously. The default Xis ``false.'' X.TP 8 X.B "nMarginBell (\fPclass\fB Column)" XSpecifies the number of characters from the right margin at which the margin Xbell should be run, when enabled. X.TP 8 X.B "pointerColor (\fPclass\fB Foreground)" XSpecifies the foreground color of the pointer. The default is X``XtDefaultForeground.'' X.TP 8 X.B "pointerColorBackground (\fPclass\fB Background)" XSpecifies the background color of the pointer. The default is X``XtDefaultBackground.'' X.TP 8 X.B "pointerShape (\fPclass\fB Cursor)" XSpecifies the name of the shape of the pointer. The default is ``xterm.'' X.TP 8 X.B "dynamicColors (\fPclass\fB DynamicColors)" XSpecifies whether or not dynamic modification of colors using the escape Xsequence is allowed. X.TP 8 X.B "reverseVideo (\fPclass\fB ReverseVideo)" XSpecifies whether or not reverse video should be simulated. The default is X``false.'' X.TP 8 X.B "reverseWrap (\fPclass\fB ReverseWrap)" XSpecifies whether or not reverse-wraparound should be enabled. The default is X``false.'' X.TP 8 X.B "autoWrap (\fPclass\fB AutoWrap)" XSpecifies whether or not auto-wraparound should be enabled. The Xdefault is ``true.'' X.TP 8 X.B "saveLines (\fPclass\fB SaveLines)" XSpecifies the number of lines to save beyond the top of the screen when a Xscrollbar is turned on. The default is 64. X.TP 8 X.B "scrollBar (\fPclass\fB ScrollBar)" XSpecifies whether or not the scrollbar should be displayed. The default is X``false.'' X.TP 8 X.B "scrollTtyOutput (\fPclass\fB ScrollCond)" XSpecifies whether or not output to the terminal should automatically cause Xthe scrollbar to go to the bottom of the scrolling region. The default is X``true.'' X.TP 8 X.B "scrollKey (\fPclass\fB ScrollCond)" XSpecifies whether or not pressing a key should automatically cause the Xscrollbar to go to the bottom of the scrolling region. The default is X``false.'' X.TP 8 X.B "scrollLines (\fPclass\fB ScrollLines)" XSpecifies the number of lines that the \fIscroll-back\fP and X\fIscroll-forw\fP actions should use as a default. The default value is 1. X.TP 8 X.B "signalInhibit (\fPclass\fB SignalInhibit)" XSpecifies whether or not the entries in the ``xterm X11'' menu for sending Xsignals to \fIxterm\fP should be disallowed. The default is ``false.'' X.TP 8 X.B "tekGeometry (\fPclass\fB Geometry)" XSpecifies the preferred size and position of the Tektronix window. X.TP 8 X.B "tekInhibit (\fPclass\fB TekInhibit)" XSpecifies whether or not Tektronix mode should be disallowed. The default is X``false.'' X.TP 8 X.B "tekSmall (\fPclass\fB TekSmall)" XSpecifies whether or not the Tektronix mode window should start in its smallest Xsize if no explicit geometry is given. This is useful when running \fIxterm\fP Xon displays with small screens. The default is ``false.'' X.TP 8 X.B "tekStartup (\fPclass\fB TekStartup)" XSpecifies whether or not \fIxterm\fP should start up in Tektronix mode. XThe default is ``false.'' X.TP 8 X.B "titeInhibit (\fPclass\fB TiteInhibit)" XSpecifies whether or not \fIxterm\fP should remove remove \fIti\fP or \fIte\fP Xtermcap entries (used to switch between alternate screens on startup of many Xscreen-oriented programs) from the TERMCAP string. X.TP 8 X.B "translations (\fPclass\fB Translations)" XSpecifies the key and button bindings for menus, selections, ``programmed Xstrings'', etc. See \fBACTIONS\fP below. X.TP 8 X.B "visualBell (\fPclass\fB VisualBell)" XSpecifies whether or not a visible bell (i.e. flashing) should be used instead Xof an audible bell when Control-G is received. The default is ``false.'' X.TP 8 X.B "waitForMap (\fPclass\fB WaitForMap)" XSpecifies whether or not \fIxterm\fP should wait for the initial window map Xbefore starting the subprocess. The default is ``false.'' X.\".in 11in X.sp X.PP XThe following resources are specified as part of the \fItek4014\fP widget X(class \fITek4014\fP): X.\".in +1in X.TP 8 X.B "width (\fPclass\fB Width)" XSpecifies the width of the Tektronix window in pixels. X.TP 8 X.B "height (\fPclass\fB Height)" XSpecifies the height of the Tektronix window in pixels. X.TP 8 X.B "fontLarge (\fPclass\fB Font)" XSpecifies the large font to use in the Tektronix window. X.TP 8 X.B "font2 (\fPclass\fB Font)" XSpecifies font number 2 to use in the Tektronix window. X.TP 8 X.B "font3 (\fPclass\fB Font)" XSpecifies font number 2 font to use in the Tektronix window. X.TP 8 X.B "fontSmall (\fPclass\fB Font)" XSpecifies the small font to use in the Tektronix window. X.\".in -1in X.sp X.PP XThe resources that may be specified for the various menus are described in Xthe documentation for the Athena \fBSimpleMenu\fP widget. The name and classes Xof the entries in each of the menus are listed below. X.PP XThe \fImainMenu\fP has the following entries: X.\".in +1in X.TP 8 X.B "securekbd (\fPclass\fB SmeBSB)" XThis entry invokes the \fBsecure()\fP action. X.TP 8 X.B "allowsends (\fPclass\fB SmeBSB)" XThis entry invokes the \fBallow-send-events(toggle)\fP action. X.TP 8 X.B "logging (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-logging(toggle)\fP action. X.TP 8 X.B "redraw (\fPclass\fB SmeBSB)" XThis entry invokes the \fBredraw()\fP action. X.TP 8 X.B "line1 (\fPclass\fB SmeLine)" XThis is a separator. X.TP 8 X.B "suspend (\fPclass\fB SmeBSB)" XThis entry invokes the \fBsend-signal(suspend)\fP action on systems that Xsupport job control. X.TP 8 X.B "continue (\fPclass\fB SmeBSB)" XThis entry invokes the \fBsend-signal(cont)\fP action on systems that Xsupport job control. X.TP 8 X.B "interrupt (\fPclass\fB SmeBSB)" XThis entry invokes the \fBsend-signal(int)\fP action. X.TP 8 X.B "hangup (\fPclass\fB SmeBSB)" XThis entry invokes the \fBsend-signal(hup)\fP action. X.TP 8 X.B "terminate (\fPclass\fB SmeBSB)" XThis entry invokes the \fBsend-signal(term)\fP action. X.TP 8 X.B "kill (\fPclass\fB SmeBSB)" XThis entry invokes the \fBsend-signal(kill)\fP action. X.TP 8 X.B "line2 (\fPclass\fB SmeLine)" XThis is a separator. X.TP 8 X.B "quit (\fPclass\fB SmeBSB)" XThis entry invokes the \fBquit()\fP action. X.\".in -1in X.sp X.PP XThe \fIvtMenu\fP has the following entries: X.\".in +1in X.TP 8 X.B "scrollbar (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-scrollbar(toggle)\fP action. X.TP 8 X.B "jumpscroll (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-jumpscroll(toggle)\fP action. X.TP 8 X.B "bltscroll (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-bltscroll(toggle)\fP action. X.TP 8 X.B "reversevideo (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-reverse-video(toggle)\fP action. X.TP 8 X.B "autowrap (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-autowrap(toggle)\fP action. X.TP 8 X.B "reversewrap (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-reversewrap(toggle)\fP action. X.TP 8 X.B "autolinefeed (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-autolinefeed(toggle)\fP action. X.TP 8 X.B "appcursor (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-appcursor(toggle)\fP action. X.TP 8 X.B "appkeypad (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-appkeypad(toggle)\fP action. X.TP 8 X.B "scrollkey (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-scroll-on-key(toggle)\fP action. X.TP 8 X.B "scrollttyoutput (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-scroll-on-tty-output(toggle)\fP action. X.TP 8 X.B "allow132 (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-allow132(toggle)\fP action. X.TP 8 X.B "cursesemul (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-cursesemul(toggle)\fP action. X.TP 8 X.B "visualbell (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-visualbell(toggle)\fP action. X.TP 8 X.B "marginbell (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-marginbell(toggle)\fP action. X.TP 8 X.B "altscreen (\fPclass\fB SmeBSB)" XThis entry is currently disabled. X.TP 8 X.B "line1 (\fPclass\fB SmeLine)" XThis is a separator. X.TP 8 X.B "softreset (\fPclass\fB SmeBSB)" XThis entry invokes the \fBsoft-reset()\fP action. X.TP 8 X.B "hardreset (\fPclass\fB SmeBSB)" XThis entry invokes the \fBhard-reset()\fP action. X.TP 8 X.B "line2 (\fPclass\fB SmeLine)" XThis is a separator. X.TP 8 X.B "tekshow (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-visibility(tek,toggle)\fP action. X.TP 8 X.B "tekmode (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-terminal-type(tek)\fP action. X.TP 8 X.B "vthide (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-visibility(vt,off)\fP action. X.\".in -1in X.sp X.PP XThe \fIfontMenu\fP has the following entries: X.\".in +1in X.TP 8 X.B "fontdefault (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-vt-font(d)\fP action. X.TP 8 X.B "font1 (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-vt-font(1)\fP action. X.TP 8 X.B "font2 (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-vt-font(2)\fP action. X.TP 8 X.B "font3 (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-vt-font(3)\fP action. X.TP 8 X.B "font4 (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-vt-font(4)\fP action. X.TP 8 X.B "fontescape (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-vt-font(e)\fP action. X.TP 8 X.B "fontsel (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-vt-font(s)\fP action. X.\".in -1in X.sp X.PP XThe \fItekMenu\fP has the following entries: X.\".in +1in X.TP 8 X.B "tektextlarge (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-tek-text(l)\fP action. X.TP 8 X.B "tektext2 (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-tek-text(2)\fP action. X.TP 8 X.B "tektext3 (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-tek-text(3)\fP action. X.TP 8 X.B "tektextsmall (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-tek-text(s)\fP action. X.TP 8 X.B "line1 (\fPclass\fB SmeLine)" XThis is a separator. X.TP 8 X.B "tekpage (\fPclass\fB SmeBSB)" XThis entry invokes the \fBtek-page()\fP action. X.TP 8 X.B "tekreset (\fPclass\fB SmeBSB)" XThis entry invokes the \fBtek-reset()\fP action. X.TP 8 X.B "tekcopy (\fPclass\fB SmeBSB)" XThis entry invokes the \fBtek-copy()\fP action. X.TP 8 X.B "line2 (\fPclass\fB SmeLine)" XThis is a separator. X.TP 8 X.B "vtshow (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-visibility(vt,toggle)\fP action. X.TP 8 X.B "vtmode (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-terminal-type(vt)\fP action. X.TP 8 X.B "tekhide (\fPclass\fB SmeBSB)" XThis entry invokes the \fBset-visibility(tek,toggle)\fP action. X.\".in -1in X.sp X.PP XThe following resources are useful when specified for the Athena Scrollbar Xwidget: X.\".in +1in X.TP 8 X.B "thickness (\fPclass\fB Thickness)" XSpecifies the width in pixels of the scrollbar. X.TP 8 X.B "background (\fPclass\fB Background)" XSpecifies the color to use for the background of the scrollbar. X.TP 8 X.B "foreground (\fPclass\fB Foreground)" XSpecifies the color to use for the foreground of the scrollbar. The ``thumb'' Xof the scrollbar is a simple checkerboard pattern alternating pixels for Xforeground and background color. X.\".in -1in X.SH EMULATIONS XThe VT102 emulation is fairly complete, but does not support the blinking Xcharacter attribute nor the double-wide and double-size character sets. X.IR Termcap (5) Xentries that work with X.I xterm Xinclude ``xterm'', ``vt102'', ``vt100'' and ``ansi'', and X.I xterm Xautomatically searches the termcap file in this order for these entries and then Xsets the ``TERM'' and the ``TERMCAP'' environment variables. X.PP XMany of the special X.I xterm Xfeatures (like logging) may be modified under program control Xthrough a set of escape sequences different from the standard VT102 escape Xsequences. X(See the X.I ``Xterm Control Sequences'' Xdocument.) X.PP XThe Tektronix 4014 emulation is also fairly good. XFour different font sizes and five different lines types are supported. XThe Tektronix text and graphics commands are recorded internally by X.I xterm Xand may be written to a file by sending the COPY escape sequence (or through Xthe X.B Tektronix Xmenu; see below). XThe name of the file will be X``\fBCOPY\fIyy\fB\-\fIMM\fB\-\fIdd\fB.\fIhh\fB:\fImm\fB:\fIss\fR'', where X.IR yy , X.IR MM , X.IR dd , X.IR hh , X.I mm Xand X.I ss Xare the year, month, day, hour, minute and second when the COPY was performed X(the file is created in the directory X.I xterm Xis started in, or the home directory for a login X.IR xterm ). X.SH "POINTER USAGE" X.PP XOnce the VT102 window is created, X.I xterm Xallows you to select text and copy it within the same or other windows. X.PP XThe selection functions are invoked when the pointer buttons are used with no Xmodifiers, and when they are used with the ``shift'' key. XThe assignment of the functions described below to keys and buttons may Xbe changed through the resource database; see \fBACTIONS\fP below. X.PP XPointer button one (usually left) is used to save text into the cut buffer. XMove the cursor to beginning of the text, Xand then hold the button down while moving the cursor to the end of the region Xand releasing the button. XThe selected text is highlighted and is saved in the global cut buffer Xand made the PRIMARY selection when Xthe button is released. Double-clicking selects by words. Triple-clicking Xselects by lines. Quadruple-clicking goes back to characters, etc. XMultiple-click is determined by the time from button up to Xbutton down, so you can change the selection unit in the middle of a selection. XIf the key/button bindings specify that an X selection is to be made, X\fIxterm\fP will leave the selected text highlighted for as long as it Xis the selection owner. X.PP XPointer button two (usually middle) `types' (pastes) the text from Xthe PRIMARY selection, if any, otherwise from Xthe cut buffer, Xinserting it as keyboard input. X.PP XPointer button three (usually right) extends the current selection. X(Without loss of generality, Xthat is you can swap ``right'' and ``left'' everywhere in the rest of this Xparagraph...) If pressed while closer to Xthe right edge of the selection than the left, it extends/contracts the Xright edge of the selection. If you contract the selection past Xthe left edge of the selection, X.I xterm Xassumes you really meant the left edge, restores the original selection, then Xextends/contracts the left edge of the selection. Extension starts in the Xselection unit mode Xthat the last selection or extension was performed in; you can multiple-click Xto cycle through them. X.PP XBy cutting and pasting pieces of text without trailing new lines, Xyou can take text from several places in different windows and form a command Xto the shell, for example, or take output from a program and insert it into Xyour favorite editor. XSince the cut buffer is globally shared among different applications, Xyou should regard it as a `file' whose contents you know. XThe terminal emulator and other text programs should be treating it as if it Xwere a text file, i.e. the text is delimited by new lines. X.PP XThe scroll region displays the position and amount of text currently showing Xin the window (highlighted) relative to the amount of text actually saved. XAs more text is saved (up to the maximum), the size of the highlighted area Xdecreases. X.PP XClicking button one with the pointer in the scroll region moves the Xadjacent line to the top of the display window. X.PP XClicking button three moves the top line of the display window down to the Xpointer position. X.PP XClicking button two moves the display to a position in the saved text Xthat corresponds to the pointer's position in the scrollbar. X.PP X.PP END_OF_FILE if test 37062 -ne `wc -c <'xterm/xterm.man.aa'`; then echo shar: \"'xterm/xterm.man.aa'\" unpacked with wrong size! fi # end of 'xterm/xterm.man.aa' fi echo shar: End of archive 3 \(of 14\). cp /dev/null ark3isdone MISSING="" for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 14 archives. rm -f ark[1-9]isdone ark[1-9][0-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0 dan ---------------------------------------------------- O'Reilly && Associates argv@sun.com / argv@ora.com Opinions expressed reflect those of the author only.