This document describes the use of the Dynamic Screen Utility (the dscreen command) in AIX Versions 3.2.4, 3.2.5 and 4.1. It applies to all asynchronous adapters (native, 8-port, 16-port, 64-port and 128-port). It describes the utility and its options and includes the sections on dynamic screen assignment and the dsinfo information file.
NOTE: The dscreen utility, when used in an AIX 4.1 environment, will only support the 128-port adapter. An error message dscreen: not supported on this terminal connection will display if not used on a terminal attached to a 128-port RAN.
The dynamic screen utility, or dscreen command, is a utility that allows a single physical terminal to be connected to several virtual terminal sessions (screens) at one time.
It is mainly intended for use with terminals that have two or more pages of screen memory (for example, the IBM 3151 display with the Cartridge for Expansion [IBM part number 64f9314]). With such terminals, switching between virtual screens also switches between physical terminal screen pages, allowing each virtual screen's image to be saved and restored. On terminals without multiple pages of screen memory, dscreen can still be used to switch among virtual screen sessions, although the appearance of the screen will not be maintained.
NOTE: For full support of dscreen, the terminal must be able to switch internal screen pages on command and must remember the cursor position for each page. While dscreen will work on both smart and dumb terminals, screen images are not saved during screen changes on dumb terminals.
The syntax for the dscreen command is:
dscreen [-i infofile] [-t termtype ]
Configuration information is read from the first of the following locations that is specified:
In this document, dsinfo will refer to any of the above and /usr/lbin/tty/dsinfo will specifically refer to that file.
The default dsinfo file terminal type assumes a single page of screen memory; therefore, if a terminal supports additional pages of screen memory, the dsinfo file must be customized to use the appropriate sequence for page memory control. Consult the appropriate terminal reference guide for the specific control sequence.
If a different set of keys needs to be used (for example, if the default keys conflict with a software application), you can modify the /usr/lbin/tty/dsinfo file or specify an alternate file with -i infofile or DSINFO.
The termtype field is used to select which entry in dsinfo is used to describe the terminal. The optional -t termtype parameter will override the TERM environment variable. Terminal type entries in the dsinfo file will resemble the following IBM 3151 values:
# The Cartridge for Expansion (pn: 64F9314) needed for this entry ibm3151|3151|IBM 3151, dsks=\E!a |Shift-F1|, # Selects first screen dsks=\E!b |Shift-F2|, # Selects second screen dsks=\E!c |Shift-F3|, # Selects third screen dsks=\E!d |Shift-F4|, # Selects fourth screen dskc=\E!e |Shift-F5|, # Creates a new screen dske=\E!f |Shift-F6|\E pA\EH\EJ, # Go to screen 1 and end dskl=\E!g |Shift-F7|, # Lists function keys (help) dskp=\E!h |Shift-F8|, # Go to previous screen dskq=\E!i |Shift-F9|\E pA\EH\EJ, # Go to screen 1 and quit dsp=\E pA|\EH\EJ, # Terminal sequence for screen 1 dsp=\E pB|\EH\EJ, # Terminal sequence for screen 2 dsp=\E pC|\EH\EJ, # Terminal sequence for screen 3 dsp=\E pD|\EH\EJ, # Terminal sequence for screen 4 dst=10, # Allow 1 second timeout bufferFigure: dsinfo Example - IBM 3151
When dscreen is run, it starts a virtual screen. Some of the keys on the terminal keyboard will not be passed through to the virtual screen; instead, dscreen will intercept these keys and perform certain actions when they are pressed. The actions include:
"select" - select a specified screen "block" - block all input and output "new" - start a new screen "end" - end dscreen (exit code 0) "quit" - quit dscreen (exit code 1) "previous" - switch to a previous screen "list" - list the dscreen keys and what they do.
Which keys perform the above functions depends on the terminal and the terminal description in the dsinfo file.
NOTES:
When a new virtual screen is created, it is assigned a "select" key. Pressing the select key causes the following actions:
Once all of the select keys defined in the dsinfo file have virtual screens assigned to them, no more screens may be created. Individual screen sessions end when the original shell process exits. This frees the associated select key for use with another virtual screen. The dscreen utility is ended when there are no more active screens.
"Block" keys are used to stop output in a fashion similar to <Ctrl-S> when using IXON flow control. The purpose of these keys is to allow for transparently setting up terminal sessions on two computers using a terminal that has two serial ports.
When the "new" screen key is pressed, dscreen creates a new logical screen and assigns it to one of the "select" keys. Each new screen requires:
If any of these are not available, the new screen operation will fail and print a message indicating the reason for the failure.
When the "end" key is pressed, dscreen will do the following:
When the "quit" key is pressed, dscreen will perform the same actions but will exit with status of 1.
When the "previous" key is pressed, dscreen will switch the terminal to the screen that was last displayed.
When the "list" key is pressed, dscreen will display a list of keys and their actions on the terminal display. Only those keys recognized by dscreen will be shown. When a new screen is created using dscreen, the message Press <KEY> for help (where <KEY> is the name of the "list" key) is displayed on the terminal. Note that the message is only displayed if there is a "list" key defined.
The terminal description entry in the dsinfo file will have the same number of screen selection keys as the terminal has physical screen pages. If more screen selection keys are defined than the number of physical screen pages, dscreen will dynamically assign physical screen pages to virtual screens.
When a virtual screen is selected that does not have an associated page of screen memory, dscreen assigns the least recently used physical screen to the virtual screen. Depending on the specifications maintained in the dsinfo description file, an indication that the physical screen is connected to a different virtual screen may be noticeable. For example, the screen may be cleared.
dsinfo is a database of terminal descriptions used by the dscreen multiple screen utility. The file contains the following information:
Entries in the dsinfo file consist of comma-separated fields. The first field is a list of alternate names for the terminal. Each name is separated by a pipe (|) character. The remaining fields are string types and value strings (in the format "string_type=value_string") describing the capabilities of the terminal to the dscreen utility. Within these strings, the following escape codes are recognized:
\E,\e escape character ,\l newline (or linefeed) character carriage return tab character backspace character formfeed character \s space character nn character with octal value nnn ^x control-x for any appropriate x value
Any other character preceded by a backslash will yield the character itself.
The "string" types used in the dsinfo file are as follows:
TYPE ACTION ___________________________________________ dsks Switch Screens dskb Block Input and Output dske End dscreen dskq Quit dscreen (exit status=1) dskc Create New Screen dskp Switch to Previous Screen dskl List Keys and Actions
Any other key type (for example, a string type dskx where "x" isn't s, b, e, q, c, p, or l) will cause no internal dscreen action, but will show up in the key listing and will be recognized and acted upon. A "type" of dskn ("n" for No Operation) should be used when no internal dscreen action is desired.
The value string for each key (to the right of the =) is divided into three substrings, which are separated by pipe (|) characters.
NOTE: Use \| to include the | character in one of the substrings.
The value string for each physical screen has two substrings, which are separated by a pipe (|) character.
For example:
dsp=\E pA|\EH\EJ, # Sequence for screen 1 of a # 3151 Terminal
NOTE: Running with more virtual terminals than physical screens can be confusing and is not recommended; it can be avoided by defining no more screen selection keys (dsks=) than physical screens (dsp=) in the dsinfo entry.
When dscreen recognizes a prefix of an input key sequence but does not have all the characters of the sequence, it will wait for more characters to be sent until it is recognizable. If the timeout occurs before more characters are received, the characters are sent on to the virtual screen and dscreen will not consider these characters as part of an input key sequence.
It may be necessary to raise this value if one or more of the "keys" dscreen is to trigger on is actually a number of keystrokes (that is, assigning <Ctrl-Z> 1, <Ctrl-Z> 2, <Ctrl-Z> 3, and so on for screen selection, <Ctrl-Z> N for new screen and so on).
The following example dsinfo entry is for a Wyse 60 with three screen sessions:
wy60|wyse60|wyse model 60, dsks=^A` |Shift-F1|, dsks=^Aa |Shift-F2|, dsks=^Ab |Shift-F3|, dskc=\200|Ctrl-F1|, dske=\201|Ctrl-F2|\Ew0\E+, dskl=\202|Ctrl-F3|, dsp=\Ew0|\E+, dsp=\Ew1|\E+, dsp=\Ew2|\E+,
In the preceding example:
Each time a physical screen is used for a new screen, the sequence "<Esc> +" will be sent to the terminal, which will clear the screen.
The following example is for a Wyse 60 with three screen sessions, but one of the screens is on a second computer communicating through the second serial port on the terminal:
wy60-1|wyse60-1|wyse model 60 - first serial port dsks=^A`^M|Shift-F1|, dsks=^Aa^M|Shift-F2|, dskb=^Ab^M|Shift-F3|\Ed#^Ab ^T\Ee9, dskc=\200|Ctrl-F1|, dske=\201|Ctrl-F2|\Ed#\201^T\Ew0\E+, dskl=\202|Ctrl-F3|, dsp=\Ew0|\E+,dsp=\Ew1|\E+, wy60-2|wyse60-2|wyse model 60 - second serial port dsks=^A`^M|Shift-F1|\Ed#^A` ^T\Ee8, dsks=^Aa^M|Shift-F2|\Ed#^Aa ^T\Ee8, dsks=^Ab^M|Shift-F3|, dskc=\200|Ctrl-F1|, dske=\201|Ctrl-F2|\Ed#\201^T\Ew0\E+, dskl=\202|Ctrl-F3|, dsp=\Ew2|\E+,
dscreen must be run on both computers, with terminal type wy60-1 on the first computer and terminal type wy60-2 on the second computer (using the -t option for dscreen).
In the wy60-1 entry, the first two key entries are unchanged from the original wy60 entry. The third key, however, has type dskb, which means block both input and output. When this key is pressed the following sequence is sent to the terminal:
<Esc> d # <Ctrl-A> b <CR> <Ctrl-T> <Esc> e 9After this, output is blocked and dscreen continues scanning input for key sequences but discards all other input.
The sequence "<Esc> d #" puts the terminal in Transparent Print Mode, which echoes all characters up to a <Ctrl-T> out through the other serial port.
The characters "<Ctrl-A> b <CR>" are sent out the other serial port, informing the dscreen process on the other computer that it should activate the window associated with the <Shift-F3> key.
The "<Ctrl-T>" exits the Transparent Print Mode. "<Esc> e 9" tells the terminal to switch to the other AUX serial port for data communications.
At this point, the other computer takes over and sends an "<Esc> w 2" to switch to the third physical screen and then resumes normal communication.
The wy60-2 entry follows the same general pattern for keys <Shift-F1> and <Shift-F2>:
The end key <Ctrl-F2> works the same for both computers; it sends the end key sequence to the other computer through the transparent print mechanism, switches the terminal to window 0, clears the screen, and then exits.