wscons(7D)
NAME
wscons - workstation console
SYNOPSIS
#include <sys/strredir.h>
ioctl(fd, SRIOCSREDIR, target);
ioctl(fd, SRIOCISREDIR, target);
DESCRIPTION
The wscons workstation console consists of a workstation
keyboard and frame buffer that act together to emulate an
ASCII terminal. It includes a redirection facility that
allows I/O issued to the workstation console to be diverted
to a STREAMS device, enabling window systems to redirect
output that would otherwise appear directly on the frame
buffer in corrupted form.
Redirection
The wscons redirection facility maintains a list of devices
that are designated as redirection targets through the
SRIOCSREDIR ioctl described below. Only the current entry is
active; when the active entry is closed, the most recent
remaining entry becomes active. The active entry acts as a
proxy for the device being redirected and handles all
read(2), write(2), ioctl(2), and poll(2) calls issued
against the redirectee.
The ioctls described below control the redirection facility.
In both cases, fd is a descriptor for the device being
redirected (or workstation console) and target is a descrip-
tor for a STREAMS device.
SRIOCSREDIR
Designates target as the source and destination of I/O
ostensibly directed to the device denoted by fd.
SRIOCISREDIR
Returns 1 if target names the device currently acting
as proxy for the device denoted by fd, and 0 if it is
not.
ANSI Standard Terminal Emulation
On SPARC systems, the PROM monitor emulates an ANSI X3.64
terminal.
On x86 systems, the Solaris console subsystem provides ANSI
X3.64 emulation.
Note: The VT100 adheres the ANSI X3.64 standard. However,
because the VT100 features nonstandard extensions to ANSI
X3.64, it is incompatible with Sun terminal emulators.
The SPARC console displays 34 lines of 80 ASCII characters
per line. The x86 console displays 25 lines of 80 ASCII
characters per line. Devices with smaller text capacities
may display less. On SPARC systems, the screen-#rows
screen-#columns should be set to 34 or 80 respectively, or
text capacities will vary from those described above. On
SPARC systems, the screen-#rows and screen-#columns fields
are stored in NVRAM/EEPROM. See eeprom(1M) for more informa-
tion. Both SPARC and IA consoles offer scrolling, (x, y)
cursor addressing ability, and a number of other control
functions.
The console cursor marks the current line and character
position on the screen. ASCII characters between 0x20
(space) and 0x7E (tilde) inclusive are printing characters.
When a print character is written to the console (and is not
part of an escape sequence), it is displayed at the current
cursor position and the cursor moves one position to the
right on the current line.
On SPARC based systems, later PROM revisions have the full
8-bit ISO Latin-1 (ISO 8859-1) character set. Earlier PROM
revisions display characters in the range 0xA0 through 0xFE
as spaces.
When the cursor is at the right edge of the screen, it moves
to the first character position on the next line. When the
cursor is at the screen's right-bottom edge, the line-feed
function is performed (see CTRL-J below). The line-feed
function scrolls the screen up by one or more lines before
moving the cursor to the first character position on the
next line.
Control Sequence Syntax
The wscons console defines a number of control sequences
that may occur during input. When a control sequence is
written to the console, it affects one of the control func-
tions described below. Control sequences are not displayed
on screen.
A number of control sequences (or control character func-
tions) are of the form:
CTRL-x
where x represents a singe character., such as CNTRL-J for
a line feed.
Other ANSI control sequences are of the form:
ESC [ params char
Note:
Spaces are included only for readability; these charac-
ters must occur in the given sequence without the
intervening spaces.
ESC ASCII escape character (ESC, CTRL-[, 0x1B).
[ Left square bracket `[' (0x5B).
params
Sequence of zero or more decimal numbers made up
of digits between 0 and 9, separated by semi-
colons. Parameters are represented by n in the
syntax descriptions for escape sequence func-
tions.
char Function character, which is different for each
control sequence and it represented by x in the
syntax descriptions for control character func-
tions.
In the following examples of syntactically valid escape
sequences, ESC represent the single ASCII character, Escape:
ESC[m Select graphic rendition with default parameter
ESC[7m
Select graphic rendition with reverse image
ESC[33;54H
Set cursor position
ESC[123;456;0;;3;B
Move cursor down
Syntactically valid control characters and ANSI escape
sequences that are not currently interpreted by the console
are ignored.
Each control function requires a specified number of parame-
ters. If fewer parameters are supplied, the remaining param-
eters (which certain exceptions that are noted below)
default to 1. For example, if more than the required number
of parameters are supplied, only the last n is used, where n
is the number required by that particular command character.
Parameters which are omitted or set to 0 are reset to the
default value of 1 (with certain exceptions). For example,
the command character M requires one parameter. ESC[;M,
ESC[0M, ESC[M and ESC[23;15;32;1M are all equivalent to
ESC[1M and provide a parameter value of 1. Note that
ESC[;5M (interpreted as `ESC[5M') is not equivalent to
ESC[5;M (interpreted as `ESC[5;1M') which is ultimately
interpreted as `ESC[1M').
ANSI Control Functions
The following paragraphs specify the ANSI control functions
implemented by the console. Each description provides:
o Control sequence syntax
o Hexadecimal equivalent of control characters where
applicable
o Control function name and ANSI or Sun abbreviation (if
any).
o Description of parameters required, if any
o Description of the control function
o Initial setting of the mode for functions that set a
mode. To restore the initial settings, use the SUN-
RESET escape sequence.
Control Character Functions
The wscons control character functions are:
Bell (BEL),
CTRL-G
0x7 Used for consoles that are not equipped with an
audible bell. Current Sun workstation models also
flash the screen if the keyboard is not the con-
sole input device.
Backspace (BS),
CTRL-H,
0x8 The cursor moves one position to the left on the
current line. If it is already at the left edge
of the screen, no change takes place.
Tab (TAB),
CTRL-I,
0x9 The cursor moves right on the current line to the
next tab stop. The tab stops are fixed at every
multiple of eight columns. If the cursor is
already at the right edge of the screen, nothing
change takes place. Otherwise, the cursor moves
right a minimum of one and a maximum of eight
character positions.
Line-feed (LF),
CTRL-J,
0xA The cursor, while remaining at the same character
position on the line, moves down one line. If the
cursor is at the bottom line, the screen either
scrolls up or wraps around depending on the set-
ting of an internal variable n (initially 1) .
The internal variable can be changed using the
ESC[r control sequence. If n is greater than
zero, the entire screen (including the cursor) is
scrolled up by n lines before executing the
line-feed. The top n lines scroll off the screen
and are lost. New blank lines n scroll onto the
bottom of the screen. After scrolling, move the
cursor down one line to execute the line feed.
If n is zero, wrap-around mode is entered. The
ESC [ 1 r exits back to scroll mode. If a line-
feed occurs on the bottom line in wrap mode, the
cursor goes to the same character position in the
top line of the screen. During line-feeds, the
line that the cursor moves to is cleared and no
scrolling occurs. Wrap-around mode is not imple-
mented in the window system.
On SPARC based systems, the speed at which the
screen scrolls is dependent on the amount of data
waiting to be printed. Whenever a scroll occurs
and the console is in normal scroll mode (ESC [ 1
r), it scans the rest of the data awaiting print-
ing to see how many line-feeds occur in it. This
scan stops when the console finds a control char-
acter from the set {VT, FF, SO, SI, DLE, DC1,
DC2, DC3, DC4, NAK, SYN, ETB, CAN, EM, SUB, ESC,
FS, GS, RS, US} . At that point, the screen is
scrolled by n lines (n > 1) and processing con-
tinues. The scanned text is processed normally
and fills in the newly created lines. As long as
escape codes or other control characters are not
intermixed with the text, this results in faster
scrolling
Reverse Line-feed,
CTRL-K,
0xB While remaining at the same character position on
the line, the cursor moves up one line. If the
cursor is already at the top line, no change
takes place.
Form-feed (FF)
CTRL-L,
0xC The cursor is positioned to the home position
(upper-left corner) and the entire screen is
cleared.
Return (CR),
CTRL-M,
0xD The cursor moves to the leftmost character posi-
tion on the current line.
Escape Sequence Functions
The wscons escape sequence functions are:
Escape (ESC),
CTRL-[,
0x1B The escape character. Escape initiates a multi-
character control sequence.
Insert Character (ICH)
ESC[#@
Takes one parameter, n (default 1). Inserts n spaces
at the current cursor position. The current line,
starting at the current cursor position inclusive, is
shifted to the right by n character positions to make
room for the spaces. The rightmost n character posi-
tions shift off the line and are lost. The position of
the cursor is unchanged.
Cursor Up (CUU),
ESC[#A
Takes one parameter, n (default 1). Moves the cursor
up n lines. If the cursor is fewer than n lines from
the top of the screen, moves the cursor to the topmost
line on the screen. The character position of the
cursor on the line is unchanged.
Cursor Down (CUD),
ESC[#B
Takes one parameter, (default 1). Moves the cursor
down n lines. If the cursor is fewer than n lines
from the bottom of the screen, move the cursor to the
last line on the screen. The character position of
the cursor on the line is unchanged.
Cursor Forward (CUF),
ESC[#C
Takes one parameter, n (default 1). Moves the cursor
to the right by n character positions on the current
line. If the cursor is fewer than n positions from
the right edge of the screen, moves the cursor to the
rightmost position on the current line.
Cursor Backward (CUB),
ESC[#D
Takes one parameter, n (default 1). Moves the cursor
to the left by n character positions on the current
line. If the cursor is fewer than n positions from
the left edge of the screen, moves the cursor to the
leftmost position on the current line.
Cursor Next Line (CNL),
ESC[#E
Takes one parameter, n (default 1). Positions the
cursor at the leftmost character position on the n-th
line below the current line. If the current line is
less than n lines from the bottom of the screen, posi-
tions the cursor at the leftmost character position on
the bottom line.
Horizontal and Vertical Position (HVP),
ESC[#1;#2f
or
Cursor Position (CUP),
ESC[#1;#2H
Takes two parameters, n1 and n2 (default 1, 1). Moves
the cursor to the n2-th character position on the n1-
th line. Character positions are numbered from 1 at
the left edge of the screen; line positions are num-
bered from 1 at the top of the screen. Hence, if both
parameters are omitted, the default action moves the
cursor to the home position (upper left corner). If
only one parameter is supplied, the cursor moves to
column 1 of the specified line.
Erase in Display (ED),
ESC[J Takes no parameters. Erases from the current cursor
position inclusive to the end of the screen, that is,
to the end of the current line and all lines below the
current line. The cursor position is unchanged.
Erase in Line (EL),
ESC[K Takes no parameters. Erases from the current cursor
position inclusive to the end of the current line.
The cursor position is unchanged.
Insert Line (IL),
ESC[#L
Takes one parameter, n (default 1). Makes room for n
new lines starting at the current line by scrolling
down by n lines the portion of the screen from the
current line inclusive to the bottom. The n new
lines at the cursor are filled with spaces; the bottom
n lines shift off the bottom of the screen and are
lost. The position of the cursor on the screen is
unchanged.
Delete Line (DL),
ESC[#M
Takes one parameter, n (default 1). Deletes n lines
beginning with the current line. The portion of the
screen from the current line inclusive to the bottom
is scrolled upward by n lines. The n new lines
scrolling onto the bottom of the screen are filled
with spaces; the n old lines beginning at the cursor
line are deleted. The position of the cursor on the
screen is unchanged.
Delete Character (DCH),
ESC[#P
Takes one parameter, n (default 1). Deletes n char-
acters starting with the current cursor position.
Shifts the tail of the current line to the left by n
character positions from the current cursor position,
inclusive, to the end of the line. Blanks are shifted
into the rightmost n character positions. The posi-
tion of the cursor on the screen is unchanged.
Select Graphic Rendition (SGR),
ESC[#m
Takes one parameter, n (default 0). Note that unlike
most escape sequences, the parameter defaults to zero
if omitted. Invokes the graphic rendition specified
by the parameter. All following printing characters
in the data stream are rendered according to the
parameter until the next occurrence of this escape
sequence in the data stream. Currently only two
graphic renditions are defined:
0 Normal rendition
7 Negative (reverse) image
Negative image displays characters as white-on-black if the
screen mode is currently black-on white, and vice-versa.
Any non-zero value of n is currently equivalent to 7 and
selects the negative image rendition.
On x86 systems only, the following ISO 6429-1983
graphic rendition values support color text:
30 black foreground
31 red foreground
32 green foreground
33 brown foreground
34 blue foreground
35 magenta foreground
36 cyan foreground
37 white foreground
40 black background
41 red background
42 green background
43 brown background
44 blue background
45 magenta background
46 cyan background
47 white background
Black On White (SUNBOW),
ESC[p Takes no parameters. Sets the screen mode to black-
on-white. If the screen mode is already black-on-
white, has no effect. In this mode spaces display as
solid white, other characters as black-on-white. The
cursor is a solid black block. Characters displayed
in negative image rendition (see `Select Graphic Ren-
dition' above) is white-on-black. This comprises the
initial setting of the screen mode on reset.
White On Black (SUNWOB),
ESC[q Takes no parameters. Sets the screen mode to white-
on-black. If the screen mode is already white-on-
black, has no effect. In this mode spaces display as
solid black, other characters as white-on-black. The
cursor is a solid white block. Characters displayed
in negative image rendition (see `Select Graphic Ren-
dition' above) is black-on-white in this mode. The
initial setting of the screen mode on reset is black
on white.
ESC[#r
Set Scrolling (SUNSCRL)
Takes one parameter, n (default 0). Sets to n an
internal register which determines how many lines the
screen scrolls up when a line-feed function is per-
formed with the cursor on the bottom line. A parame-
ter of 2 or 3 introduces a small amount of jump when a
scroll occurs. A parameter of 34 clears the screen
rather than scrolling. The initial setting is 1 on
reset.
A parameter of zero initiates wrap mode instead of
scrolling. If a linefeed occurs on the bottom line
during wrap mode, the cursor goes to the same charac-
ter position in the top line of the screen. When a
line feed occurs, the line that the cursor moves to is
cleared and no scrolling occurs. ESC [ 1 r exits back
to scroll mode.
For more information, see the description of the
Line-feed (CTRL-J) control function above.
ESC[s
Reset terminal emulator (SUNRESET)
Takes no parameters. Resets all modes to default,
restores current font from PROM. Screen and cursor
position are unchanged.
RETURN VALUES
When there are no errors, the redirection ioctls have return
values as described above. Otherwise, they return -1 and
set errno to indicate the error. If the target stream is in
an error state, errno is set accordingly.
If the target stream is in an error state, errno is set
accordingly.
ERRORS
EBADF target does not denote an open file.
ENOSTR
target does not denote a STREAMS device.
FILES
/dev/wscons
Workstation console, accessedvia the redirection
facility
/dev/systty
Devices that must be opened for the SRIOCSREDIR and
SRIOCISREDIR ioctls.
/dev/syscon
Access system console
/dev/console
Access system console
ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:
____________________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|_____________________________|_____________________________|
| Interface Stability | Stable |
|_____________________________|_____________________________|
SEE ALSO
cvcd(1M), eeprom(1M), ioctl(2), poll(2), read(2), write(2),
cvc(7D), console(7D)
WARNINGS
The redirection ioctls block while there is I/O outstanding
on the device instance being redirected. If you try to
redirect the workstation console while there is a outstand-
ing read, the workstation console will hang until the read
completes.
NOTES
The cvc facility supersedes the SunOS wscons facility and
should not be used with wscons.
Man(1) output converted with
man2html