[ Previous | Next | Contents | Home | Search ]
AIX Versions 3.2 and 4 Asynchronous Communications Guide

Dynamic Screen Utility

The dynamic screen (dscreen) utility allows a single physical terminal to have several virtual terminal sessions or screens running at one time. This utility works with all 128-port and ISA/PCI 8-port adapters. 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 Expansion Cartridge.

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.

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.

dscreen Terminal Configuration Information File

The dscreen terminal configuration information file (or dsinfo file) is used to define a different set of keys to be used with dscreen. This might be done, for example, when the originally defined dscreen keys conflict with a software application in use on the system.

The 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.

The default dsinfo file is the /usr/lbin/tty/dsinfo file. Use the -i flag to specify a different dsinfo file. This remainder of this section will refer to the default dsinfo file. However, the same information applies to any customized dsinfo file you create.

For more information concerning the dsinfo file, refer to "Dynamic Screen Assignment".

Key Action Assignments

When dscreen is run, it starts a virtual screen. Some of the keys on the terminal keyboard are not passed through to the virtual screen; instead, dscreen intercepts these keys and performs certain actions when they are pressed. The actions include:

Select
Selects a specified screen.
Block
Blocks all input and output.
New
Starts a new screen session.
End
Ends dscreen.
Quit
Quits dscreen.
Previous
Switches to previous screen.
List
Lists the dscreen assigned keys and their actions.

The function of each key is dependent upon the terminal and the terminal description in the /usr/lbin/tty/dsinfo file.

Select Keys

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

Block keys are used to stop output in a fashion similar to the Ctrl-S key 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.

New Keys

Pressing a new screen key 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 with a message indicating the reason for the failure.

End and Quit Keys

Pressing an end key will cause the following to occur:

Pressing a quit key will perform the same actions but will exit with status of 1.

Previous Key

Pressing a previous key switches the terminal to the screen that was last displayed.

Notes:
  1. Do not switch screens when the current screen is being written to; an escape sequence may be truncated and leave the terminal in an unknown state.
  2. Some terminal displays may save the cursor position for individual screens but may not save other states such as insert mode, inverse video, etc. If this is the case, users should avoid these modes while switching screens.

List Key

Pressing a list key 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 displays, where key is the name of the list key displayed on the terminal. Note that the message is displayed only if there is a list key defined.

Dynamic Screen Assignment

The terminal description entry in the /usr/lbin/tty/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 /usr/lbin/tty/dsinfo description file, an indication that the physical screen is connected to a different virtual screen may be noticeable; for example, the screen is cleared.

dsinfo File

The dsinfo file is a database of terminal descriptions used by the dscreen multiple screen utility. The file contains the following information:

The terminal type entries in the default dsinfo file resemble the following IBM 3151 ASCII terminal values.

Note: \r may be used in place of ^M.
# The Cartridge for Expansion (pn 64F9314) needed for this entry
ibm3151|3151|IBM 3151,  
dsks=\E!a^M|Shift-F1|,            # Selects first screen
dsks=\E!b^M|Shift-F2|,            # Selects second screen
dsks=\E!c^M|Shift-F3|,            # Selects third
screendsks=\E!d^M|Shift-F4|,      # Selects fourth screen
dskc=\E!e^M|Shift-F5|,            # Creates a new screen
dske=\E!f^M|Shift-F6|\E pA\EH\EJ, # Go to screen 1 and end
dskl=\E!g^M|Shift-F7|,            # Lists function keys (help)
dskp=\E!h^M|Shift-F8|,            # Go to previous screen
dskq=\E!i^M|Shift-F9|\E pA\EH\EJ, # Go to screen 1 and
quitdsp=\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 buffer

Entry Format for dsinfo

Entries in the dsinfo file consist of comma-separated fields. The first field is a list of alternative names for the terminal, each name is separated by a pipe ( | ) character. Any text preceded by a pound (#) character is regarded as a comment and ignored by dscreen. The remaining fields are strings describing the capabilities of the terminal to the dscreen utility. Within these strings, the following escape codes are recognized:

Escape Sequence Description
\E,\e escape character
\n,\l newline (or linefeed) character
\r carriage return
\t tab character
\b backspace character
\f formfeed character
\s space character
\nnn character with octal value nnn
^x Ctrl-x for any appropriate x value

Any other character preceded by a backslash yields the character itself. The strings are entered as type=string, where type is the type of string as listed below, and string is the string value.

It is important that the entry fields in the dsinfo file be separated by commas. If a comma is omitted or truncated from the end of a dsinfo file entry, the file becomes unreadable by the dscreen utility and an error is returned to the display.

String Types

The string types are as follows:

dskx
A string type that starts with dsk describes a key. The type must be four letters long, and the fourth letter x indicates what action is taken when the key is received. The key types are:
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 (that is, a string type dskx that doesn't end in s, b, e, q, c, p, or l) causes no internal dscreen action, but shows up in the key listing and is 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 has three substrings, which are separated by pipe ( | ) characters.

Note: Use \| to include the | character in one of the substrings.

The first substring is the sequence of characters that the terminal sends when the key is pressed. The second substring is a label for the key that is printed when a list of keys is displayed. The third substring is a sequence of characters that dscreen sends to the terminal when this key is pressed before performing the action this key requests.

dsp
A string type of dsp describes a physical screen in the terminal. One dsp string should be present for each physical screen in the terminal. The value string for each physical screen has two substrings, which are separated by a pipe ( | ) character.

The first substring is the sequence of characters to send to the terminal to display and output to the physical page on the terminal.

The second substring is sent to the terminal when the page is used for something new. This second substring is often set to the clear screen sequence. It is sent under the following two conditions:

  1. When a new virtual terminal session is being created.
  2. When there are more virtual terminals than there are physical screens. If a virtual terminal is selected which requires dscreen to reuse one of the physical screens, it will send this sequence to the screen to indicate that the screen contents do not match the output of the virtual terminal connected.
    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.
dst A
String with a type of dst adjusts dscreen's input timeout. The value of the string is a decimal number. The timeout value is in tenths of seconds and has a maximum value of 255 (default=1 [or 0.1 seconds]).

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, etc. for screen selection, and Ctrl-Z N for new screen and so on).

Example 1

The following example /usr/lbin/tty/dsinfo entry is for a Wyse-60 with three screen sessions:

wy60|wyse60|wyse model 60,
dsks=^A`^M|Shift-F1|,
dsks=^Aa^M|Shift-F2|,
dsks=^Ab^M|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+,

With this entry:

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.

Example 2

This 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|,
dsks=^Ab^M|Shift-F3|\Ed#^Ab\r^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`\r^T\Ee8,
dsks=^Aa^M|Shift-F2|\Ed#^Aa\r^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 to dscreen). The wy60-1 entry will be examined first.

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 sequence:

Esc d # Ctrl-A b CR Ctrl-T Esc e 9

is sent to the terminal; after 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 key exits the Transparent Print mode. The Esc e 9 causes 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, then exits.


[ Previous | Next | Contents | Home | Search ]