options WSDISPLAY_BORDER_COLOR=WSCOL_XXX options WSDISPLAY_CUSTOM_BORDER options WSDISPLAY_CUSTOM_OUTPUT options WSDISPLAY_DEFAULTSCREENS=N options WSDISPLAY_SCROLLSUPPORT
A display device can have the ability to display characters on it (without the help of an X server), either directly by hardware or through software putting pixel data into the display memory. Such displays are called ``emulating'', the wsdisplay driver will connect a terminal emulation module and provide a tty-like software interface. In contrary, non-emulating displays can only be used by special programs like X servers.
The console locator in the configuration line refers to the device's use as the output part of the operating system console. A device specification containing a positive value here will only match if the device is in use as the system console. (The console device selection in early system startup is not influenced.) This way, the console device can be connected to a known wsdisplay device instance. (Naturally, only ``emulating'' display devices are usable as console.)
The kbdmux locator in the configuration line refers to the wsmux(4) that will be used to get keyboard events. If this locator is -1 no mux will be used.
The logical unit of an independent contents displayed on a display
(sometimes referred to as
``virtual terminal''
) is called a
``screen''
here. If the underlying device driver supports it, multiple screens can
be used on one display.
(As of this writing, only the
vga(4)
and the
VAX
``smg''
display drivers provide this ability.)
Screens have different minor device numbers and separate tty instances.
One screen possesses the
``focus'',
this means it is visible and its tty device will get
the keyboard input. (In some cases - if no screen is set up or if a screen
was just deleted - it is possible that no focus is present at all.)
The focus can be switched by either special keyboard input (typically
CTRL-ALT-Fn)
or an ioctl command issued by a user program.
Screens are created and deleted through the
/dev/ttyEcfg
control device (preferably using the
wsconscfg(8)
utility). Alternatively, the compile-time option
WSDISPLAY_DEFAULTSCREENS
=n
will also create (at autoconfiguration time)
n
initial screens of the display driver's default type with
the system's default terminal emulator.
src/sys/dev/wscons/wsdisplayvar.h
.
Defaults to
`WSCOL_BLACK'.
WSDISPLAYIO_GBORDER
and
WSDISPLAYIO_SBORDER
ioctls, which allow the customization of the border color from userland
(after boot).
See
wsconsctl(8).
WSDISPLAYIO_GMSGATTRS
and
WSDISPLAYIO_SMSGATTRS
ioctls, which allow the customization of the console output and kernel
messages from userland (after boot).
See
wsconsctl(8).
dev/wscons/wsconsio.h
>.
WSDISPLAYIO_GTYPE (
int
)
dev/wscons/wsconsio.h
>.
WSDISPLAYIO_GINFO (
struct wsdisplay_fbinfo
)
struct wsdisplay_fbinfo {
u_int height;
u_int width;
u_int depth;
u_int cmsize;
};
The
height
and
width
members are counted in pixels.
The
depth
member indicates the number of bits per pixel, and
cmsize
indicates the number of color map entries accessible through
WSDISPLAYIO_GETCMAP
and
WSDISPLAYIO_PUTCMAP
.
This call is likely to be unavailable on text-only displays.
WSDISPLAYIO_GETCMAP (
struct wsdisplay_cmap
)
struct wsdisplay_cmap {
u_int index;
u_int count;
u_char *red;
u_char *green;
u_char *blue;
};
The
index
and
count
members specify the range of color map entries to retrieve.
The
red,
green,
and
blue
members should each point to an array of
count
u_char
s.
On return, these will be filled in with the appropriate entries from the
color map.
On all displays that support this call, values range from 0 for minimum
intensity to 255 for maximum intensity, even if the display does not use
eight bits internally to represent intensity.
WSDISPLAYIO_PUTCMAP (
struct wsdisplay_cmap
)
WSDISPLAYIO_GETCMAP
,
but
red,
green,
and
blue
are taken as pointers to the values to use to set the color map.
This call is not available on displays with fixed color maps.
WSDISPLAYIO_GVIDEO (
int
)
WSDISPLAYIO_VIDEO_OFF
WSDISPLAYIO_VIDEO_ON
WSDISPLAYIO_SVIDEO (
int
)
WSDISPLAYIO_GVIDEO
above for possible values.
WSDISPLAYIO_GCURPOS (
struct wsdisplay_curpos
)
struct wsdisplay_curpos {
u_int x, y;
};
The x and y members count the number of pixels right and down, respectively, from the top-left corner of the display to the hot spot of the cursor. This call is not available on displays without a hardware cursor.
WSDISPLAYOP_SCURPOS (
struct wsdisplay_curpos
)
WSDISPLAYIO_GCURPOS
.
This call is not available on displays without a hardware cursor.
WSDISPLAYIO_GCURMAX (
struct wsdisplay_curpos
)
WSDISPLAYIO_GCURSOR (
struct wsdisplay_cursor
)
struct wsdisplay_cursor {
u_int which;
u_int enable;
struct wsdisplay_curpos pos;
struct wsdisplay_curpos hot;
struct wsdisplay_cmap cmap;
struct wsdisplay_curpos size;
u_char *image;
u_char *mask;
};
WSDISPLAYIO_CURSOR_DOCUR
WSDISPLAYIO_CURSOR_DOPOS
WSDISPLAYIO_GCURPOS
.
WSDISPLAYIO_CURSOR_DOHOT
WSDISPLAYIO_CURSOR_DOCMAP
WSDISPLAYIO_GETCMAP
,
cmap
here need not have its
index
and
count
members initialized.
They will be set to 0 and 2 respectively by the call.
This means that
cmap.red,
cmap.green,
and
cmap.blue
must each point to at least enough space to hold two
u_char
s.
WSDISPLAYIO_CURSOR_DOSHAPE
WSDISPLAYIO_CURSOR_DOALL
The device may elect to return information that was not requested by the user,
so those elements of
struct wsdisplay_cursor
which are pointers should be initialized to
NULL
if not otherwise used.
This call is not available on displays without a hardware cursor.
WSDISPLAYIO_SCURSOR (
struct wsdisplay_cursor
)
WSDISPLAYIO_GCURSOR
.
The
which
member specifies which attributes of the cursor are to be changed.
It should contain the logical OR of the following flags:
WSDISPLAYIO_CURSOR_DOCUR
WSDISPLAYIO_CURSOR_DOPOS
WSDISPLAYIO_SCURPOS
.
WSDISPLAYIO_CURSOR_DOHOT
WSDISPLAYIO_CURSOR_DOCMAP
WSDISPLAYIO_CURSOR_DOSHAPE
WSDISPLAYIO_CURSOR_DOALL
This call is not available on displays without a hardware cursor.
WSDISPLAYIO_GMODE (
u_int
)
WSDISPLAYIO_MODE_EMUL
WSDISPLAYIO_MODE_MAPPED
WSDISPLAYIO_MODE_DUMBFB
WSDISPLAYIO_SMODE (
u_int
)
WSDISPLAYIO_GMODE
.
WSDISPLAYIO_LINEBYTES (
u_int
)
WSDISPLAYIO_GMSGATTRS (
struct
wsdisplay_msgattrs
)
struct wsdisplay_msgattrs {
int default_attrs, default_bg, default_fg;
int kernel_attrs, kernel_bg, kernel_fg;
};
The default_attrs and kernel_attrs variables are a combination of WSATTR_* bits, and specify the attributes used to draw messages. The default_bg, default_fg, kernel_bg and kernel_fg variables specify the colors used to print messages, being `_bg' for the background and `_fg' for the foreground; their values are one of all the WSCOL_* macros available.
WSDISPLAYIO_SMSGATTRS (
struct
wsdisplay_msgattrs
)
WSDISPLAYIO_GMSGATTRS
.
WSDISPLAYIO_GBORDER (
u_int
)
WSDISPLAYIO_SBORDER (
u_int
)
WSDISPLAYIO_GETWSCHAR (
struct
wsdisplay_char
)
struct wsdisplay_char {
int row, col;
uint16_t letter;
uint8_t background, foreground;
char flags;
};
The row and col parameters are used as input; the rest of the structure is filled by the ioctl and is returned to you. letter is the ASCII code of the letter found at the specified position, background and foreground are its colors and flags is a combination of `WSDISPLAY_CHAR_BRIGHT' and/or `WSDISPLAY_CHAR_BLINK'.
WSDISPLAYIO_PUTWSCHAR (
struct
wsdisplay_char
)
WSDISPLAY_GETWSCHAR
,
although all of its fields are treated as input.
WSDISPLAYIO_SSPLASH (
u_int
)
SPLASHSCREEN
kernel option.
WSDISPLAYIO_SPROGRESS (
u_int
)
SPLASHSCREEN
and
SPLASHSCREEN_PROGRESS
kernel options.
/dev/ttyE*
Terminal devices (per screen).
/dev/ttyEcfg
Control device.
/dev/ttyEstat
Status device.
/usr/include/dev/wscons/wsconsio.h
The terms ``wscons'' and ``wsdisplay'' are not cleanly distinguished in the code and in manual pages.
``non-emulating'' display devices are not tested.