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