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.
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".
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:
The function of each key is dependent upon the terminal and the terminal description in the /usr/lbin/tty/dsinfo file.
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 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.
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.
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.
Pressing a previous key switches the terminal to the screen that was last displayed.
- 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.
- 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.
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.
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.
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
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:
|\n,\l||newline (or linefeed) 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.
The string types are as follows:
|dskb||Block Input and Output|
|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.
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:
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, etc. for screen selection, and Ctrl-Z N for new screen and so on).
The following example /usr/lbin/tty/dsinfo entry is for a Wyse-60 with three screen sessions:
wy60|wyse60|wyse model 60,
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.
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
wy60-2|wyse60-2|wyse model 60 - second serial port
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.