xpcterm(1) —
NAME
xpcterm − PC-compatible terminal emulator for X
SYNOPSIS
xpcterm [ −toolkitoption ... ] [ −option ... ]
DESCRIPTION
The xpcterm program is a terminal emulator for INTERACTIVE X11. It provides ANSI 3.64-compatible terminal emulation (also known under the INTERACTIVE UNIX Operating System as AT386) for programs that cannot use the window system directly. If the underlying operating system supports terminal resizing capabilities (for example, the SIGWINCH signal in systems derived from 4.3 BSD), xpcterm will use the facilities to notify programs running in the window whenever it is resized.
The xpcterm emulator is based on the xterm terminal emulator, but has been stripped of features that are less useful to users of PC-compatible terminals, such as Tektronix 4014 emulation. In addition, xpcterm can produce PC scan codes rather than ASCII characters, which allows for a higher degree of PC emulation in some applications.
OPTIONS
The xpcterm terminal emulator accepts all of the standard X Toolkit command line options as well as the additional options listed below (if the option begins with a “+” instead of a “−,” the option is restored to its default value):
−help This causes xpcterm to print out a verbose message describing its options.
−ah This option indicates that xpcterm should always highlight the text cursor and borders. By default, xpcterm will display a hollow text cursor whenever the focus is lost or the pointer leaves the window.
+ah This option indicates that xpcterm should do text cursor highlighting.
−b number
This option specifies the size of the inner border (the distance between the outer edge of the characters and the window border) in pixels. The default is “2.”
−cc characterclassrange:value[,...]
This sets classes indicated by the given ranges for use in selecting by words. See the section specifying character classes.
−cr color
This option specifies the color to use for the text cursor. The default is to use the same foreground color that is used for text.
−cu This option indicates that xpcterm should work around a bug in the curses(3x) cursor motion package that causes the more(1) program to display lines that are exactly the width of the window and that are followed by a line beginning with a tab to be displayed incorrectly (the leading tabs are not displayed).
+cu This option indicates that xpcterm should not work around the curses(3x) bug mentioned above in option −cu.
−e program [arguments ...]
This option specifies that the program (and its command line arguments) are to be run in the xpcterm window. It also sets the window title and icon name to be the basename of the program being executed if neither −T nor −n are given on the command line. This must be the last option on the command line.
−fb font This option specifies a font to be used when displaying bold text. This font must be the same height and width as the normal font. If only one of the normal or bold fonts is specified, it will be used as the normal font and the bold font will be produced by overstriking this font. By default, there is no bold font and xpcterm will overstrike the normal font.
−j This option indicates that xpcterm should do jump scrolling. Normally, text is scrolled one line at a time; the −j option allows xpcterm to move multiple lines at a time so that it does not fall as far behind. Its use is strongly recommended since it makes xpcterm much faster when scanning through large amounts of text.
+j This option indicates that xpcterm should not do jump scrolling.
−l This option indicates that xpcterm should send all terminal output to a log file as well as to the screen. This option can be enabled or disabled using the “xpcterm X11” menu.
+l This option indicates that xpcterm should not do logging.
−lf filename
This option specifies the name of the file to which the output log described above is written. If file begins with a pipe symbol (|), the rest of the string is assumed to be a command to be used as the endpoint of a pipe. The default filename is “XPctermLog.XXXXX” (where XXXXX is the process ID of xpcterm), and it is created in the directory from which xpcterm was started (or in the user’s home directory, in the case of a login window).
−ls This option indicates that the shell that is started in the xpcterm window be a login shell (i.e., the first character of argv[0] will be a dash, indicating to the shell that it should read the user’s .login or .profile).
+ls This option indicates that the shell that is started should not be a login shell (i.e., it will be a normal “subshell”).
−mb This option indicates that xpcterm should ring a margin bell when the user types near the right end of a line. This option can be turned on and off from the “Modes” menu.
+mb This option indicates that the margin bell should not be rung.
−ms color
This option specifies the color to be used for the pointer cursor. The default is to use the foreground color.
−nb number
This option specifies the number of characters from the right end of a line at which the margin bell, if enabled, will ring. The default is 10.
−noisc This option indicates that xpcterm will not assume that it is connected to a SunSoft server when emitting PC scan codes. However, it will assume a U.S. keyboard layout when determining which scan code to emit.
−rw This option indicates that reverse-wraparound should be allowed. This allows the cursor to back up from the leftmost column of one line to the rightmost column of the previous line. This is very useful for editing long shell command lines and is encouraged. This option can be turned on and off from the “Modes” menu.
+rw This option indicates that reverse-wraparound should not be allowed.
−s This option indicates that xpcterm may scroll asynchronously, meaning that the screen does not have to be kept completely up to date while scrolling. This allows xpcterm to run faster when network latencies are very high and is typically useful when running across a very large internet or many gateways.
+s This option indicates that xpcterm should scroll synchronously.
−sb This option indicates that some number of lines that are scrolled off the top of the window should be saved and that a scrollbar should be displayed so that those lines can be viewed. This option may be turned on and off from the “Modes” menu.
+sb This option indicates that a scrollbar should not be displayed.
-sc This option indicates that xpcterm should emit PC scan codes instead of ASCII characters in response to keyboard events. This allows certain programs (such as the VP/ix Environment) to perform much better PC emulation. This feature can also be enabled or disabled from the “Modes” menu.
+sc This option indicates that xpcterm should emit ASCII characters rather than PC scan codes.
−si This option indicates that output to a window should not automatically reposition the screen to the bottom of the scrolling region. This option can be turned on and off from the “Modes” menu.
+si This option indicates that output to a window should cause it to scroll to the bottom.
−sk This option indicates that pressing a key while using the scrollbar to review previous lines of text should cause the window to be repositioned automatically in the normal position at the bottom of the scroll region.
+sk This option indicates that pressing a key while using the scrollbar should not cause the window to be repositioned.
−sl number
This option specifies the number of lines to save that have been scrolled off the top of the screen. The default is 64.
−sw This option indicates that xpcterm should never send a SIGWINCH signal on window resizes, even on systems that support the SIGWINCH signal. This is useful if sending a SIGWINCH signal to the controlling process would cause some undesirable behavior. This feature can also be enabled or disabled from the “Modes” menu.
+sw This option indicates that a change of window size should cause xpcterm to send a SIGWINCH signal to the controlling process. This option will have no effect on systems that do not support the SIGWINCH signal. This feature can also be enabled or disabled from the “Modes” menu.
−tm string
This option specifies a series of terminal setting keywords followed by the characters that should be bound to those functions, similar to the stty program. This is ignored when −L is given since getty resets the terminal. Allowable keywords include: intr, quit, erase, kill, eof, eol, swtch, start, stop, brk, susp, dsusp, rprnt, flush, weras, and lnext. Control characters can be specified as ^char (e.g. ^c or ^u), and ^? may be used to indicate delete.
−tn name
This option specifies the name of the terminal type to be set in the TERM environment variable. This terminal type must exist in the termcap(5) or terminfo(5) database and should have li# and co# entries.
−ut This option indicates that xpcterm should not write a record into the system log file /etc/utmp.
+ut This option indicates that xpcterm should write a record into the system log file /etc/utmp.
−vb This option indicates that a visual bell is preferred over an audible one. Instead of ringing the terminal bell whenever a CTRL-G (^g) is received, the window will be flashed.
+vb This option indicates that a visual bell should not be used.
−C This option indicates that this window should receive console output. This option is not supported on all systems.
−Sccn This option specifies the last two letters of the name of a pseudoterminal to use in slave mode. This allows xpcterm to be used as an input and output channel for an existing program and is sometimes used in specialized applications.
The following command line arguments are provided for compatibility with older versions of xterm, from which xpcterm was derived. They may not be supported in the next release because the X Toolkit provides standard options that accomplish the same task.
#geom This option specifies the preferred position of the icon window. It is shorthand for specifying the *iconGeometry resource.
−T string
This option specifies the title for xpcterm’s windows. It is equivalent to −title.
−n string
This option specifies the icon name for xpcterm’s windows. It is shorthand for specifying the *iconName resource. Note that this is not the same as the toolkit option −name (see below). The default icon name is the application name.
−r This option indicates that reverse video should be simulated by swapping the foreground and background colors. It is equivalent to −reversevideo or −rv.
−w number
This option specifies the width in pixels of the border surrounding the window. It is equivalent to −borderwidth or −bw.
−L This option indicates that xpcterm was started by init. In this mode, xpcterm does not try to allocate a new pseudoterminal as init has already done so. In addition, the system program getty is run instead of the user’s shell. This option has been superseded by the new xdm program; furthermore, this option should never be used by users when starting terminal windows.
The following standard X Toolkit command line arguments are commonly used with xpcterm:
−bg color
This option specifies the color to use for the background of the window. The default is “white.”
−bd color
This option specifies the color to use for the border of the window. The default is “black.”
−bw number
This option specifies the width in pixels of the border surrounding the window.
−fg color
This option specifies the color to use for displaying text. The default is “black”.
−fn font
This option specifies the font to be used for displaying normal text. The default is “vtsingle.”
−name name
This option specifies the application name under which resources are to be obtained, rather than the default executable file name. Name should not contain “.” or “*” characters.
−title string
This option specifies the window title string, which may be displayed by window managers if the user so chooses. The default title is the command line specified after the −e option, if any, otherwise the application name.
−rv This option indicates that reverse video should be simulated by swapping the foreground and background colors.
−geometry geometry
This option specifies the preferred size and position of the window; see X(1).
−display display
This option specifies the X server to contact; see X(1).
−xrm resourcestring
This option specifies a resource string to be used. This is especially useful for setting resources that do not have separate command line options.
−iconic This option indicates that xpcterm should ask the window manager to start it as an icon rather than as the normal window.
X DEFAULTS
The program understands all of the core X Toolkit resource names and classes as well as:
iconGeometry (class IconGeometry)
Specifies the preferred size and position of the application when iconified. It is not necessarily obeyed by all window managers.
termName (class TermName)
Specifies the terminal type name to be set in the TERM environment variable.
title (class Title)
Specifies a string that may be used by the window manager when displaying this application.
ttyModes (class TtyModes)
Specifies a string containing terminal setting keywords and the characters to which they may be bound. This option is ignored when −L is given since getty resets the terminal. Allowable keywords include: intr, quit, erase, kill, eof, eol, swtch, start, stop, brk, susp, dsusp, rprnt, flush, weras, and lnext. Control characters may be specified as ^char (e.g., ^c or ^u) and ^? may be used to indicate delete. This is very useful for overriding the default terminal settings without having to do an stty every time an xpcterm is started.
utmpInhibit (class UtmpInhibit)
Specifies whether or not xpcterm should try to record the user’s terminal in /etc/utmp.
The following resources are specified as part of the “at386” widget (class “AT386”):
allowSendEvents (class AllowSendEvents)
Specifies whether synthetic key and button events (generated using the X protocol SendEvent request) should be interpreted or discarded. The default is “false,” meaning they are discarded. Note that allowing such events creates a very large security hole.
alwaysHighlight (class AlwaysHighlight)
Specifies whether xpcterm should always display a highlighted text cursor. By default, a hollow text cursor is displayed whenever the pointer moves out of the window or the window loses the input focus.
font (class Font)
Specifies the name of the normal font. The default is “ega.”
boldFont (class Font)
Specifies the name of the bold font. By default, there is no bold font and bold characters are produced by overstriking the normal font.
charClass (class CharClass)
Specifies comma-separated lists of character class bindings of the form [low-]high:value. These are used in determining which sets of characters should be treated the same when doing cut and paste. See the section on specifying character classes.
curses (class Curses)
Specifies whether the last column bug in curses(3x) should be worked around. The default is “false.”
background (class Background)
Specifies the color to use for the background of the window. The default is “black.”
foreground (class Foreground)
Specifies the color to use for displaying text in the window. Setting the class name instead of the instance name is an easy way to have everything that would normally appear in the “text” color change color. The default is “white.”
cursorColor (class Foreground)
Specifies the color to use for the text cursor. The default is “white.”
geometry (class Geometry)
Specifies the preferred size and position of the window.
internalBorder (class BorderWidth)
Specifies the number of pixels between the characters and the window border. The default is “2.”
jumpScroll (class JumpScroll)
Specifies whether or not jump scroll should be used. The default is “false”.
logFile (class Logfile)
Specifies the name of the file to which a terminal session is logged. The default is “XPctermLog.XXXXX” (where XXXXX is the process ID of xpcterm).
logging (class Logging)
Specifies whether a terminal session should be logged. The default is “false.”
logInhibit (class LogInhibit)
Specifies whether terminal session logging should be inhibited. The default is “false.”
loginShell (class LoginShell)
Specifies whether the shell to be run in the window should be started as a login shell. The default is “false.”
marginBell (class MarginBell)
Specifies whether the bell should be run when the user types near the right margin. The default is “false.”
multiScroll (class MultiScroll)
Specifies whether asynchronous scrolling is allowed. The default is “false.”
nMarginBell (class Column)
Specifies the number of characters from the right margin at which the margin bell should be rung, when enabled.
noiscserver (class NOiscserver)
Indicates that xpcterm should not assume that it is connected to a SunSoft server when emitting scan codes. However, it will assume a U.S. keyboard layout when determining which scan code to emit.
pointerColor (class Foreground)
Specifies the color of the pointer. The default is “black.”
pointerShape (class Cursor)
Specifies the name of the shape of the pointer. The default is “xterm.”
reverseVideo (class ReverseVideo)
Specifies whether reverse video should be simulated. The default is “false.”
reverseWrap (class ReverseWrap)
Specifies whether reverse-wraparound should be enabled. The default is “false.”
saveLines (class SaveLines)
Specifies the number of lines to save beyond the top of the screen when a scrollbar is turned on. The default is “64.”
scanCodes (class ScanCodes)
Indicates that xpcterm should emit PC scan codes instead of ASCII characters in response to keyboard events. The default is “false.”
scrollBar (class ScrollBar)
Specifies whether the scrollbar should be displayed. The default is “false.”
scrollInput (class ScrollCond)
Specifies whether output to the terminal should automatically cause the scrollbar to go to the bottom of the scrolling region. The default is “true.”
scrollKey (class ScrollCond)
Specifies whether pressing a key should automatically cause the scrollbar to go to the bottom of the scrolling region. The default is “false.”
signalInhibit (class SignalInhibit)
Specifies whether the entries in the “xpcterm X11” menu for sending signals to xpcterm should be disallowed. The default is “false.”
titeInhibit (class TiteInhibit)
Specifies whether or not xpcterm should remove ti or te termcap entries (used to switch between alternate screens on startup of many screen-oriented programs) from the TERMCAP string.
translations (class Translations)
Specifies the key and button bindings for menus, selections, “programmed strings,” etc. See KEY/BUTTON BINDINGS below.
visualBell (class VisualBell)
Specifies whether a visible bell (i.e., flashing window) should be used instead of an audible bell when CTRLg is received. The default is “false.”
sendSigWinch (class SendSigWinch)
Specifies whether a SIGWINCH signal is sent to the controlling process when the xpcterm window is resized. This resource is only meaningful on systems that provide the SIGWINCH signal. Otherwise, no signal is sent, regardless of the value of this resource. The default is “true.”
The following resources are specified as part of the “menu” widget:
menuBorder (class MenuBorder)
Specifies the size in pixels of the border surrounding menus. The default is “2.”
menuFont (class Font)
Specifies the name of the font to use for displaying menu items.
menuPad (class MenuPad)
Specifies the number of pixels between menu items and the menu border. The default is “3.”
The following resources are useful when specified for the Athena Scrollbar widget:
thickness (class Thickness)
Specifies the width in pixels of the scrollbar.
background (class Background)
Specifies the color to use for the background of the scrollbar.
foreground (class Foreground)
Specifies the color to use for the foreground of the scrollbar. The “thumb” of the scrollbar is a simple checkerboard pattern that alternates pixels for foreground and background color.
EMULATIONS
The ANSI X3.64 emulation is fairly complete, but the blinking text attribute is not truly supported. Instead, blinking characters are shown as bold characters or painted in an alternate color. The termcap(5) entries that work with xpcterm include “xpcterm,” “AT386,” “AT386-M,” “ansi3.64,” and “ansi”. The xpcterm program automatically searches the termcap file or terminfo database in this order for these entries and then sets the TERM and the TERMCAP environment variables.
POINTER USAGE
Once the emulator window is created, xpcterm allows you to select text and copy it within the same or other windows.
The selection functions are invoked when the pointer buttons are used with no modifiers and when they are used with the “shift” key. The assignment of the functions described below to keys and buttons may be changed through the resource database; see KEY/BUTTON BINDINGS below.
Pointer button one (usually on the left) is used to save text into the cut buffer. Move the cursor to the beginning of the text, and then hold the button down while moving the cursor to the end of the region and releasing the button. The selected text is highlighted, saved in the global cut buffer, and made the PRIMARY selection when the button is released. Double-clicking selects by words. Triple-clicking selects by lines. Quadruple-clicking goes back to characters, etc. Since multiple-click is determined by the time from button up to button down, you can change the selection unit in the middle of a selection. If the key/button bindings specify that an X selection is to be made, xpcterm will leave the selected text highlighted for as long as it is the selection owner.
Pointer button two (usually in the middle) types (pastes) the text from the PRIMARY selection, if any (and otherwise from the cut buffer), inserting it as keyboard input.
Pointer button three (usually on the right) extends the current selection (without loss of generality; that is you can swap “right” and “left” everywhere in the rest of this paragraph ...). If pressed while closer to the right edge of the selection than the left, it extends/contracts the right edge of the selection. If you contract the selection past the left edge of the selection, xpcterm assumes you really meant the left edge, restores the original selection, then extends/contracts the left edge of the selection. Extension starts in the selection unit mode that the last selection or extension was performed in; you can multiple-click to cycle through them.
By cutting and pasting pieces of text without trailing new-line characters, you can take text from several places in different windows and form a command to the shell, for example, or take output from a program and insert it into your favorite editor. Because the cut buffer is globally shared among different applications, you should regard it as a “file” whose contents you know. The terminal emulator and other text programs should be treating it as if it were a text file, i.e., the text is delimited by new-line characters.
The scroll region displays the position and amount of text currently showing in the window (highlighted) relative to the amount of text actually saved. As more text is saved (up to the maximum), the size of the highlighted area decreases.
Clicking button one with the pointer in the scroll region moves the adjacent line to the top of the display window.
Clicking button three moves the top line of the display window down to the pointer position.
Clicking button two moves the display to a position in the saved text that corresponds to the pointer’s position in the scrollbar.
MENUS
The xpcterm program has two different menus, named xpcterm and Modes. The Modes menu will pop up when the user presses the CTRLkey and the middle mouse button simultaneously while the pointer is anywhere within the emulator window. The xpcterm menu can be accessed by pressing the CTRLkey and the left mouse button while the pointer is anywhere within the window.
Menus are divided into two sections, separated by a horizontal line. The top portion contains various modes that can be altered. A check mark appears next to a mode that is currently active. Selecting one of these modes toggles its state. The bottom portion of the menu consists of command entries; selecting one of these performs the indicated function.
The xpcterm menu contains items that apply to the AT386 windows. The Secure Keyboard mode should be used when typing in passwords or other sensitive data; see SECURITY below. Notable entries in the command section of the menu are Continue, Suspend, Interrupt, Hangup, Terminate, and Kill which send the SIGCONT, SIGTSTP, SIGINT, SIGHUP, SIGTERM, and SIGKILL signals, respectively, to the process group of the process running under xpcterm (usually the shell). The Continue function is especially useful if the user has accidentally typed ^z, suspending the process.
The Modes menu sets various modes in the AT386 emulation. The full reset entry will clear the screen, reset tabs to every eight columns, and reset the terminal modes (such as wrap and smooth scroll) to their initial states just after xpcterm has finished processing the command line options.
SECURITY
X environments differ in their security consciousness. The servers provided by MIT use a host-based mechanism to control access to the server (see xhost(1)). If you enable access for a host and other users are also permitted to run clients on that host, there is the possibility that someone will run an application that will attempt to use the basic services of the X protocol to snoop on your activities, and potentially capture a transcript of everything you type at the keyboard. This is of particular concern when you want to type in a password or other sensitive data. The best solution to this problem is for the industry to choose a standard authorization mechanism with the necessary operating system support and to incorporate this into the X protocol (which is already designed to handle such a mechanism). In the meantime, since passwords are most commonly typed to something running in an xpcterm window, a simple mechanism exists for protecting keyboard input in xpcterm.
The xpcterm menu (see MENUS above) contains a Secure Keyboard entry which, when enabled, ensures that all keyboard input is directed only to xpcterm (using the GrabKeyboard protocol request). When an application prompts you for a password (or other sensitive data), you can enable Secure Keyboard using the menu, type in the data, and then disable Secure Keyboard using the menu again. Only one X client at a time can secure the keyboard, so when you attempt to enable Secure Keyboard it may fail. In this case, the bell will sound. If the Secure Keyboard succeeds, the foreground and background colors will be exchanged (as if you selected the Reverse Video entry in the Modes menu); they will be exchanged again when you exit secure mode. If the colors do not switch, then you should be very suspicious that you are being spoofed. If the application you are running displays a prompt before asking for the password, it is safest to enter secure mode before the prompt gets displayed and to make sure that the prompt gets displayed correctly (in the new colors) to minimize the probability of spoofing. You can also bring up the menu again and make sure that a check mark appears next to the entry.
Secure Keyboard mode will be disabled automatically if your xpcterm window becomes iconified (or otherwise unmapped) or if you start up a reparenting window manager (that places a title bar or other decoration around the window) while in Secure Keyboard mode. (This is a feature of the X protocol not easily overcome.) When this happens, the foreground and background colors will be switched back and the warning bell will sound.
CHARACTER CLASSES
Clicking the middle mouse button twice in rapid succession will cause all characters of the same class (e.g., letters, white space, punctuation) to be selected. Because different people have different preferences for what should be selected (for example, should file names be selected as a whole or only the separate subnames), the default mapping can be overridden through the use of the charClass (class CharClass) resource.
This resource is simply a list of range:value pairs where the range is either a single number or low-high in the range of 0 to 127, corresponding to the ASCII code for the character or characters to be set. The value is arbitrary, although the default table uses the character number of the first character occurring in the set.
The default table is:
static int charClass[128] = {
/* NUL SOH STX ETX EOT ENQ ACK BEL */
32, 1, 1, 1, 1, 1, 1, 1,
/* BS HT NL VT NP CR SO SI */
1, 32, 1, 1, 1, 1, 1, 1,
/* DLE DC1 DC2 DC3 DC4 NAK SYN ETB */
1, 1, 1, 1, 1, 1, 1, 1,
/* CAN EM SUB ESC FS GS RS US */
1, 1, 1, 1, 1, 1, 1, 1,
/* SP ! " # $ % & ’ */
32, 33, 34, 35, 36, 37, 38, 39,
/* ( ) * + , - . / */
40, 41, 42, 43, 44, 45, 46, 47,
/* 0 1 2 3 4 5 6 7 */
48, 48, 48, 48, 48, 48, 48, 48,
/* 8 9 : ; < = > ? */
48, 48, 58, 59, 60, 61, 62, 63,
/* @ A B C D E F G */
64, 48, 48, 48, 48, 48, 48, 48,
/* H I J K L M N O */
48, 48, 48, 48, 48, 48, 48, 48,
/* P Q R S T U V W */
48, 48, 48, 48, 48, 48, 48, 48,
/* X Y Z [ \ ] ^ _ */
48, 48, 48, 91, 92, 93, 94, 48,
/* ‘ a b c d e f g */
96, 48, 48, 48, 48, 48, 48, 48,
/* h i j k l m n o */
48, 48, 48, 48, 48, 48, 48, 48,
/* p q r s t u v w */
48, 48, 48, 48, 48, 48, 48, 48,
/* x y z { | } ~ DEL */
48, 48, 48, 123, 124, 125, 126, 1};
For example, the string “33:48,37:48,45-47:48,64:48” indicates that the exclamation mark, percent sign, dash, period, slash, and ampersand characters should be treated the same way as characters and numbers. This is very useful for cutting and pasting electronic mailing addresses and UNIX System file names.
KEY TRANSLATIONS
It is possible to rebind keys (or sequences of keys) to arbitrary strings for input by changing the translations for the AT386 widget. Changing the translations for events other than key and button events is not expected and will cause unpredictable behavior.
The actions available for key translations are:
secure() Toggles the Secure Keyboard mode; see SECURITY.
insert() Processes the key in the normal way, i.e., inserts the ASCII character code corresponding to the keysym found in the keyboard mapping table into the input stream. If the key event is an up transition and scan code mode is not set, the event is silently ignored.
string(string) Rebinds the key or key sequence to the string value, that is, inserts the string argument into the input stream. Quotation is necessary if the string contains white space or non-alphanumeric characters. If the string argument begins with the characters 0x, it is interpreted as a hex character constant, and the corresponding character is sent in the normal way.
keymap(name) Takes a single string argument naming a resource to be used to dynamically define a new translation table; the name of the resource is obtained by appending the string Keymap to name. The keymap name None restores the original translation table (the very first one; a stack is not maintained). Uppercase/lowercase is significant.
insert-selection(name[,name]...)
Retrieves the value of the first (left-most) named selection that exists or cut buffer that is non-empty and inserts the value into the input stream. Name can be the name of any selection, for example, PRIMARY or SECONDARY, or it can be the name of a cut buffer: CUT_BUFFER0, CUT_BUFFER7. Uppercase/lowercase is significant.
For example, a debugging session might benefit from the following bindings:
*AT386.Translations: #override <Key>F13: keymap(dbx)
*AT386.dbxKeymap.translations: \
<Key>F14: keymap(None) \n\
<Key>F17: string("next") string(0x0d) \n\
<Key>F18: string("step") string(0x0d) \n\
<Key>F19: string("continue") string(0x0d) \n\
<Key>F20: string("print ") insert-selection(PRIMARY, CUT_BUFFER0)
KEY/BUTTON BINDINGS
Within the AT386 widget the key and button bindings for selecting text, pasting text, and activating the menus are controlled by the translation bindings. In addition to the actions listed above under KEY TRANSLATIONS, the following actions are available:
mode-menu() Posts one of the two mode menus, depending on which button is pressed.
select-start() Unselects any previously selected text and begins selecting new text.
select-extend() Continues selecting text from the previous starting position.
start-extend() Begins extending the selection from the farthest (left or right) edge.
select-end(name[,name]...)
Ends the text selection. The name is the name of a selection or the name of a cut buffer into which the text is to be copied. The xpcterm program will assert ownership of all the selections named and will copy the text into each of the cut buffers. Uppercase/lowercase is significant.
ignore() Quietly discards the key or button event.
bell([volume]) Rings the bell at the specified volume increment above/below the base volume.
The default bindings are:
<KeyPress>:insert() \n\
<KeyRelease>:insert() \n\
Ctrl~Meta<Btn1Down>:mode-menu() \n\
~Meta<Btn1Down>:select-start() \n\
~Meta<Btn1Motion>:select-extend() \n\
Ctrl~Meta<Btn2Down>:mode-menu() \n\
~Ctrl~Meta<Btn2Down>: ignore() \n\
~Meta<Btn2Up>:insert-selection(PRIMARY, CUT_BUFFER0) \n\
~Ctrl~Meta<Btn3Down>: start-extend() \n\
~Meta<Btn3Motion>:select-extend() \n\
~Meta<BtnUp>:select-end(PRIMARY, CUT_BUFFER0) \n\
<BtnDown>:bell(0)
STARTING XPCTERM FROM INIT
Warning: This feature is now obsolete and may not be supported in future releases. Sites using this method should switch to xdm instead.
On operating systems such as 4.3 BSD and ULTRIX, the server and initial login window are normally started automatically by init(8).
By convention, the pseudoterminal with the highest minor device number (e.g., /dev/ttyqf and /dev/ptyqf) is renamed for the lowest display number (e.g., /dev/ttyv0 and /dev/ptyv0). Machines that have more than one display can repeat this process using ttyqe for ttyv1, and so on.
Once the pseudoterminals are in place, a line similar to the following may be added to /etc/ttys (replacing Xqvss with the appropriate server and putting it all on one line):
ttyv0 "/usr/bin/X11/xpcterm -L -geom 80x24+1+1 -display :0"
xpcterm on secure window="/usr/bin/X11/Xqvss :0"
Sites that used to run X10 should note that the colon in the server display number is required.
Although the release will install both the X server and xpcterm in /usr/bin/X11 by default, many sites choose to make a copy of both of these programs on the root partition (usually in /etc) so that they may still be used even if the partition containing /usr/bin/X11 is not mounted.
Some versions of init have relatively small program name buffer sizes and treat all sharp signs as comment delimiters. Sites that wish to list large numbers of options on the xpcterm line will need to write a small shell script to exec the long xpcterm line. The best solution, of course, is to use xdm.
OTHER FEATURES
The xpcterm emulator automatically highlights the window border and text cursor when the pointer enters the window (selected) and unhighlights them when the pointer leaves the window (unselected). If the window is the focus window, then the window is highlighted no matter where the pointer is.
There are escape sequences to activate and deactivate an alternate screen buffer, which is the same size as the display area of the window. When activated, the current screen is saved and replaced with the alternate screen. Saving of lines scrolled off the top of the window is disabled until the normal screen is restored. The termcap(5) entry for xpcterm allows the visual editor vi(1) to switch to the alternate screen for editing and restore the screen on exit.
USING VP/ix
If you have VP/ix installed on your system, you may use xpcterm as a PC-compatible terminal window. To do this, set the environment variable TERM to xpcterm.
ENVIRONMENT
The xpcterm program sets the environment variables TERM and TERMCAP properly for the size window you have created. It also uses and sets the environment variable DISPLAY to specify which bitmap display terminal to use. The environment variable WINDOWID is set to the X window ID number of the xpcterm window.
SEE ALSO
resize(1), X(1), pty(4), tty(4), keyboard(7), display(7).
BUGS
The −L option is no longer needed as the new xdm display manager system handles logging in in a much cleaner way. It is no longer necessary to try to match colors in /etc/ttys or worry about an unwanted login window. This option may be removed in future releases.
The xpcterm program will hang forever if you try to paste too much text at one time. It is both producer and consumer for the pty and can deadlock.
Variable-width fonts are not handled reasonably.
This program still needs to be rewritten. It should be split into very modular sections, with the various emulators being completely separate widgets that do not know about each other. Ideally, you would like to be able to pick and choose emulator widgets and stick them into a single control widget.
The focus is considered lost if some other client (e.g., the window manager) grabs the pointer; it is difficult to do better without an addition to the protocol.
There needs to be a dialog box to allow entry of a log file name and the COPY file name.
Many of the options are not resettable after xpcterm starts.
This manual entry is too long. There should be a separate user’s manual defining all of the non-standard escape sequences.
All programs should be written to use X directly; then this program could be eliminated.
Currently, only the “vga” and “ega” fonts that are shipped with INTERACTIVE X11 provide the correct glyphs for characters whose encoding values are greater than 127 or less than 32.
COPYRIGHTS
Copyright 1988, Massachusetts Institute of Technology.
See X(1) for a full statement of rights and permissions.
\*U — Version 1.0