diff options
Diffstat (limited to 'static/openbsd/man4/wsdisplay.4')
| -rw-r--r-- | static/openbsd/man4/wsdisplay.4 | 713 |
1 files changed, 713 insertions, 0 deletions
diff --git a/static/openbsd/man4/wsdisplay.4 b/static/openbsd/man4/wsdisplay.4 new file mode 100644 index 00000000..e1d7eb6c --- /dev/null +++ b/static/openbsd/man4/wsdisplay.4 @@ -0,0 +1,713 @@ +.\" $OpenBSD: wsdisplay.4,v 1.57 2022/03/31 17:27:21 naddy Exp $ +.\" $NetBSD: wsdisplay.4,v 1.5 2000/05/13 15:22:19 mycroft Exp $ +.\" +.\" Copyright (c) 2005, Miodrag Vallat. +.\" Copyright (c) 1999 Matthias Drochner. +.\" Copyright (c) 2002 Ben Harris. +.\" All rights reserved. +.\" +.\" Redistribution and use in source and binary forms, with or without +.\" modification, are permitted provided that the following conditions +.\" are met: +.\" 1. Redistributions of source code must retain the above copyright +.\" notice, this list of conditions and the following disclaimer. +.\" 2. Redistributions in binary form must reproduce the above copyright +.\" notice, this list of conditions and the following disclaimer in the +.\" documentation and/or other materials provided with the distribution. +.\" +.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND +.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE +.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS +.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF +.\" SUCH DAMAGE. +.\" +.Dd $Mdocdate: March 31 2022 $ +.Dt WSDISPLAY 4 +.Os +.Sh NAME +.Nm wsdisplay +.Nd generic display device support in wscons +.Sh SYNOPSIS +.Cd "wsdisplay* at ..." +.Cd "option WSDISPLAY_DEFAULTSCREENS=N" +.Sh DESCRIPTION +The +.Nm +driver is an abstraction layer for display devices within the +.Xr wscons 4 +framework. +It attaches to the hardware specific display device driver and +makes it available as text terminal or graphics interface. +.Pp +Display devices have the ability to display characters on them +(without help of an X server), either directly by hardware or through +software drawing pixel data into the display memory. +The +.Nm +driver will connect a terminal emulation module and provide a +tty-like software interface. +.Pp +The +.Em console +locator in the configuration line refers to the device's use as 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 system console. +(The console device selection in early system startup is not influenced.) +This way, the console device can be connected to a known +.Nm wsdisplay +device instance. +.Pp +The +.Em mux +locator in the configuration line refers to the +.Xr wsmux 4 +that will be used to get keyboard events. +If this locator is -1, no mux will be used. +.Pp +The logical unit of an independent contents displayed on a display +(sometimes referred to as +.Dq virtual terminal ) +is called a +.Dq screen +here. +If the underlying device driver supports it, multiple screens can +be used on one display. +(As of this writing, only the +.Xr lcd 4 +and +.Xr vga 4 +display drivers provide this ability.) +Screens have different minor device numbers and separate tty instances. +One screen possesses the +.Dq focus , +this means it is displayed on the display 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 +CTL-ALT-Fn) or an ioctl command issued by a user program. +Screens are set up or deleted through the +.Pa /dev/ttyCcfg +control device (preferably using the +.Xr wsconscfg 8 +utility). +Alternatively, the compile-time +.Cd "option WSDISPLAY_DEFAULTSCREENS=N" +will set up N screens of the display driver's default type and using +the system's default terminal emulator at autoconfiguration time. +.Pp +In addition and with help from backend drivers the following features +are also provided: +.Bl -bullet +.It +Loading, deleting and listing the loaded fonts. +.It +Browsing backwards in the screen output, the size of the +buffer for saved text is defined by the particular hardware driver. +.It +Blanking the screen by timing out on inactivity in the +screen holding the input focus. +Awakening activities consist of: +.Pp +.Bl -bullet -compact +.It +pressing any keys on the keyboard; +.It +moving or clicking the mouse; +.It +any output to the screen. +.El +.Pp +Blanking the screen is usually done by disabling the horizontal sync +signal on video output, but may also include blanking the vertical +sync in which case most monitors go into power saving mode. +See +.Xr wsconsctl 8 +for controlling variables. +.El +.Pp +Consult the back-end drivers' documentation for which features are supported +for each particular hardware type. +.Ss IOCTL INTERFACE +The following +.Xr ioctl 2 +calls are provided by the +.Nm +driver or by devices which use it. +Their definitions are found in +.In dev/wscons/wsconsio.h . +.Bl -tag -width 4n +.It Dv WSDISPLAYIO_GTYPE Fa u_int +Retrieve the type of the display. +The list of types is in +.In dev/wscons/wsconsio.h . +.It Dv WSDISPLAYIO_GINFO Fa "struct wsdisplay_fbinfo" +Retrieve basic information about a framebuffer display. +The returned structure is as follows: +.Bd -literal -offset indent +struct wsdisplay_fbinfo { + u_int height; + u_int width; + u_int depth; + u_int cmsize; +}; +.Ed +.Pp +The +.Va height +and +.Va width +members are counted in pixels. +The +.Va depth +member indicates the number of bits per pixel, and +.Va cmsize +indicates the number of color map entries accessible through +.Dv WSDISPLAYIO_GETCMAP +and +.Dv WSDISPLAYIO_PUTCMAP . +This call is likely to be unavailable on text-only displays. +.It Dv WSDISPLAYIO_GETSCREENTYPE Fa "struct wsdisplay_screentype" +Retrieve basic information about a screen. +The returned structure is as follows: +.Bd -literal -offset indent +struct wsdisplay_screentype { + int idx; + int nidx; + char name[WSSCREEN_NAME_SIZE]; + int ncols, nrows; + int fontwidth, fontheight; +}; +.Ed +.Pp +The +.Va idx +field indicates the index of the screen. +The +.Va nidx +field indicates the number of screens. +The +.Va name +field contains a human readable string used to identify the screen. +The +.Va ncols +and +.Va nrows +fields indicate the available number of columns and rows. +The +.Va fontwidth +and +.Va fontheight +fields indicate the dimensions of a character cell, in pixels. +.It Dv WSDISPLAYIO_GETCMAP Fa "struct wsdisplay_cmap" +Retrieve the current color map from the display. +This call needs the +following structure set up beforehand: +.Bd -literal -offset indent +struct wsdisplay_cmap { + u_int index; + u_int count; + u_char *red; + u_char *green; + u_char *blue; +}; +.Ed +.Pp +The +.Va index +and +.Va count +members specify the range of color map entries to retrieve. +The +.Va red , +.Va green , +and +.Va blue +members should each point to an array of +.Va count +.Vt u_char Ns 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. +.It Dv WSDISPLAYIO_PUTCMAP Fa "struct wsdisplay_cmap" +Change the display's color map. +The argument structure is the same as for +.Dv WSDISPLAYIO_GETCMAP , +but +.Va red , +.Va green , +and +.Va 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. +.It Dv WSDISPLAYIO_GVIDEO Fa u_int +Get the current state of the display's video output. +Possible values are: +.Bl -tag -width 21n +.It Dv WSDISPLAYIO_VIDEO_OFF +The display is blanked. +.It Dv WSDISPLAYIO_VIDEO_ON +The display is enabled. +.El +.It Dv WSDISPLAYIO_SVIDEO Fa u_int +Set the state of the display's video output. +See +.Dv WSDISPLAYIO_GVIDEO +above for possible values. +.It Dv WSDISPLAYIO_GCURPOS Fa "struct wsdisplay_curpos" +Retrieve the current position of the hardware cursor. +The returned structure +is as follows: +.Bd -literal -offset indent +struct wsdisplay_curpos { + u_int x, y; +}; +.Ed +.Pp +The +.Va x +and +.Va 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. +.It Dv WSDISPLAYIO_SCURPOS Fa "struct wsdisplay_curpos" +Set the current cursor position. +The argument structure, and its semantics, +are the same as for +.Dv WSDISPLAYIO_GCURPOS . +This call is not available on displays without a hardware cursor. +.It Dv WSDISPLAYIO_GCURMAX Fa "struct wsdisplay_curpos" +Retrieve the maximum size of cursor supported by the display. +The +.Va x +and +.Va y +members of the returned structure indicate the maximum number of pixel rows +and columns, respectively, in a hardware cursor on this display. +This call is not available on displays without a hardware cursor. +.It Dv WSDISPLAYIO_GCURSOR Fa "struct wsdisplay_cursor" +Retrieve some or all of the hardware cursor's attributes. +The argument structure is as follows: +.Bd -literal -offset indent +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; +}; +.Pp +.Ed +The +.Va which +member indicates which of the values the application requires to be returned. +It should contain the logical OR of the following flags: +.Bl -tag -width 4n +.It Dv WSDISPLAY_CURSOR_DOCUR +Get +.Va enable , +which indicates whether the cursor is currently displayed (non-zero) or +not (zero). +.It Dv WSDISPLAY_CURSOR_DOPOS +Get +.Va pos , +which indicates the current position of the cursor on the display, as +would be returned by +.Dv WSDISPLAYIO_GCURPOS . +.It Dv WSDISPLAY_CURSOR_DOHOT +Get +.Va hot , +which indicates the location of the +.Dq hot spot +within the cursor. +This is the point on the cursor whose position on the display is treated +as being the position of the cursor by other calls. +Its location is counted in pixels from the top-left corner of the cursor. +.It Dv WSDISPLAY_CURSOR_DOCMAP +Get +.Va cmap , +which indicates the current cursor color map. +Unlike in a call to +.Dv WSDISPLAYIO_GETCMAP , +.Va cmap +here need not have its +.Va index +and +.Va count +members initialized. +They will be set to 0 and 2 respectively by the call. +This means that +.Va cmap . Ns Va red , +.Va cmap . Ns Va green , +and +.Va cmap . Ns Va blue +must each point to at least enough space to hold two +.Vt u_char Ns s . +.It Dv WSDISPLAY_CURSOR_DOSHAPE +Get +.Va size , image , +and +.Va mask . +These are, respectively, the dimensions of the cursor in pixels, the +bitmap of set pixels in the cursor and the bitmap of opaque pixels in +the cursor. +The format in which these bitmaps are returned, and hence the amount of +space that must be provided by the application, are device-dependent. +.It Dv WSDISPLAY_CURSOR_DOALL +Get all of the above. +.El +.Pp +The device may elect to return information that was not requested by the user, +so those elements of +.Vt struct wsdisplay_cursor +which are pointers should be initialized to +.Dv NULL +if not otherwise used. +This call is not available on displays without a hardware cursor. +.It Dv WSDISPLAYIO_SCURSOR Fa "struct wsdisplay_cursor" +Set some or all of the hardware cursor's attributes. +The argument structure is the same as for +.Dv WSDISPLAYIO_GCURSOR . +The +.Va which +member specifies which attributes of the cursor are to be changed. +It should contain the logical OR of the following flags: +.Bl -tag -width 4n +.It Dv WSDISPLAY_CURSOR_DOCUR +If +.Va enable +is zero, hide the cursor. +Otherwise, display it. +.It Dv WSDISPLAY_CURSOR_DOPOS +Set the cursor's position on the display to +.Va pos , +the same as +.Dv WSDISPLAYIO_SCURPOS . +.It Dv WSDISPLAY_CURSOR_DOHOT +Set the +.Dq hot spot +of the cursor, as defined above, to +.Va hot . +.It Dv WSDISPLAY_CURSOR_DOCMAP +Set some or all of the cursor color map based on +.Va cmap . +The +.Va index +and +.Va count +elements of +.Va cmap +indicate which color map entries to set, and the entries themselves come from +.Va cmap . Ns Va red , +.Va cmap . Ns Va green , +and +.Va cmap . Ns Va blue . +.It Dv WSDISPLAY_CURSOR_DOSHAPE +Set the cursor shape from +.Va size , image , +.Va mask . +See above for their meanings. +.It Dv WSDISPLAY_CURSOR_DOALL +Do all of the above. +.El +.Pp +This call is not available on displays without a hardware cursor. +.It Dv WSDISPLAYIO_GMODE Fa u_int +Get the current mode of the display. +Possible results include: +.Bl -tag -width 4n +.It Dv WSDISPLAYIO_MODE_EMUL +The display is in emulating (text) mode. +.It Dv WSDISPLAYIO_MODE_MAPPED +The display is in mapped (graphics) mode. +.It Dv WSDISPLAYIO_MODE_DUMBFB +The display is in mapped (frame buffer) mode. +.El +.It Dv WSDISPLAYIO_SMODE Fa u_int +Set the current mode of the display. +For possible arguments, see +.Dv WSDISPLAYIO_GMODE . +.It Dv WSDISPLAYIO_LDFONT Fa "struct wsdisplay_font" +Loads a font specified by the wsdisplay_font structure. +.Bd -literal -offset indent +struct wsdisplay_font { + char name[WSFONT_NAME_SIZE]; + int index; + int firstchar, numchars; + int encoding; + u_int fontwidth, fontheight, stride; + int bitorder, byteorder; + void *cookie; + void *data; +}; +.Ed +.Pp +The +.Va name +field contains a human readable string used to identify the font. +The +.Va index +field may be used to select a driver-specific font resource (for non-raster +frame buffers). +A value of -1 will pick the first available slot. +The +.Va firstchar +field contains the index of the first character in the font, starting at zero. +The +.Va numchars +field contains the number of characters in the font. +The +.Va encoding +field describes the font character encoding, using one of the following values: +.Bl -tag -width 4n +.It Dv WSDISPLAY_FONTENC_ISO +ISO-8859-1 encoding +.Pq also known as Latin-1 . +This is the preferred encoding for raster frame buffers. +.It Dv WSDISPLAY_FONTENC_IBM +IBM code page number 437. +This is the preferred encoding for text-mode displays. +.El +.Pp +The +.Va fontwidth +and +.Va fontheight +fields specify the dimensions of a character cell. +The +.Va stride +field specify the number of bytes of font data per character cell line (usually +.Va fontwidth +rounded up to a byte boundary). +The +.Va bitorder +and +.Va byteorder +fields specify the bit- and byte-ordering of the font data, using either one of +the following values: +.Bl -tag -width 4n +.It Dv WSDISPLAY_FONTORDER_L2R +Leftmost data contained in the most significant bits (left-to-right ordering). +This is the most commonly encountered case. +.It Dv WSDISPLAY_FONTORDER_R2L +Leftmost data contained in the least significant bits (right-to-left ordering). +.El +.Pp +The +.Va data +field contains the font character data to be loaded. +The +.Va cookie +field is reserved for internal purposes. +.It Dv WSDISPLAYIO_LSFONT Fa "struct wsdisplay_font" +Retrieves the data for a loaded font into the wsdisplay_font structure. +The +.Va index +field is set to the font resource to query. +For the argument structure, see +.Dv WSDISPLAYIO_LDFONT . +.\" Dv WSDISPLAYIO_DELFONT Fa "struct wsdisplay_font" +.It Dv WSDISPLAYIO_USEFONT Fa "struct wsdisplay_font" +Selects the font specified in the +.Va name +field. +An empty +.Va name +selects the next available font. +For the argument structure, see +.Dv WSDISPLAYIO_LDFONT . +.It Dv WSDISPLAYIO_GBURNER Fa "struct wsdisplay_burner" +Retrieves the state of the screen burner. +The returned structure is as follows: +.Bd -literal -offset indent +struct wsdisplay_burner { + u_int off; + u_int on; + u_int flags; +}; +.Ed +.Pp +The +.Va off +member contains the inactivity time before the screen is turned off, +in milliseconds. +The +.Va on +member contains the time before the screen is turned back on, +in milliseconds. +The +.Va flags +member contains a logical OR of the following flags: +.Bl -tag -width 4n +.It Dv WSDISPLAY_BURN_VBLANK +When turning the display off, disable the vertical synchronization signal. +.It Dv WSDISPLAY_BURN_KBD +Monitor keyboard activity. +.It Dv WSDISPLAY_BURN_MOUSE +Monitor mouse activity +(this only works for mice using the +.Xr wsmouse 4 +driver). +.It Dv WSDISPLAY_BURN_OUTPUT +Monitor display output activity. +.El +.Pp +If none of the activity source flags are set, the screen burner is disabled. +.It Dv WSDISPLAYIO_SBURNER Fa "struct wsdisplay_burner" +Sets the state of the screen burner. +The argument structure, and its semantics, are the same as for +.Dv WSDISPLAYIO_GBURNER . +.It Dv WSDISPLAYIO_ADDSCREEN Fa "struct wsdisplay_addscreendata" +Creates a new screen. +.Bd -literal -offset indent +struct wsdisplay_addscreendata { + int idx; /* screen index */ + char screentype[WSSCREEN_NAME_SIZE]; + char emul[WSEMUL_NAME_SIZE]; +}; +.Ed +.Pp +The +.Va idx +field is the index of the screen to be configured. +The +.Va screentype +field is matched against builtin screen types, which will be driver-dependent. +The +.Va emul +field indicates the terminal emulation type. +Available terminal emulations are: +.Bl -tag -width 5n +.It sun +Sun terminal emulation. +This is the default on the sparc64 architecture. +.It vt100 +Dec VT100 terminal emulation, with some VT220 features. +This is the default on all other architectures. +.It dumb +Dumb terminal. +.El +.Pp +An empty string will select the default emulation. +.It Dv WSDISPLAYIO_DELSCREEN Fa "struct wsdisplay_delscreendata" +Deletes an existing screen. +.Bd -literal -offset indent +struct wsdisplay_delscreendata { + int idx; /* screen index */ + int flags; +}; +.Ed +.Pp +The +.Va idx +field indicates the index of the screen to be deleted. +The +.Va flags +field is a logical OR of zero or more of the following: +.Bl -tag -width 4n +.It Dv WSDISPLAY_DELSCR_FORCE +Force deletion of screen even if in use by a userspace program. +.It Dv WSDISPLAY_DELSCR_QUIET +Don't report deletion to console. +.El +.It Dv WSDISPLAYIO_GETSCREEN Fa "struct wsdisplay_addscreendata" +Returns information on the screen indicated by +.Va idx +or the current screen if +.Va idx +is -1. +The screen and emulation types are returned in the same structure +.Pq see Dv WSDISPLAYIO_GETPARAM . +.It Dv WSDISPLAYIO_SETSCREEN Fa u_int +Switch to the screen with the given index. +.It Dv WSDISPLAYIO_WSMOUSED Fa "struct wscons_event" +This call is used by the +.Xr wsmoused 8 +daemon to inject mouse events gathered from serial mice, as well as +various control events. +.It Dv WSDISPLAYIO_GETPARAM Fa "struct wsdisplay_param" +Retrieves the state of a display parameter. +This call needs the following structure set up beforehand: +.Bd -literal -offset indent +struct wsdisplay_param { + int param; + int min, max, curval; + int reserved[4]; +}; +.Ed +.Pp +The +.Va param +member should be set with the parameter to be returned. +The following parameters are supported: +.Bl -tag -width 4n +.It Dv WSDISPLAYIO_PARAM_BACKLIGHT +The intensity of the display backlight (usually on laptop computers). +.It Dv WSDISPLAYIO_PARAM_BRIGHTNESS +The brightness level. +.It Dv WSDISPLAYIO_PARAM_CONTRAST +The contrast level. +.El +.Pp +On return, +.Va min +and +.Va max +specify the allowed range for the value, while +.Va curval +specifies the current setting. +Not all parameters are supported by all display drivers. +.It Dv WSDISPLAYIO_SETPARAM Fa "struct wsdisplay_param" +Sets a display parameter. +The argument structure is the same as for +.Dv WSDISPLAYIO_GETPARAM , +with the +.Va param +and +.Va curval +members filled in. +Not all parameters are supported by all display drivers. +.It Dv WSDISPLAYIO_LINEBYTES Fa u_int +Get the number of bytes per row when the device is in +.Dv WSDISPLAYIO_MODE_DUMBFB +mode. +.El +.Sh FILES +.Bl -tag -width /usr/include/dev/wscons/wsconsio.h -compact +.It Pa /dev/tty[C-F]* +terminal devices (per screen) +.It Pa /dev/tty[C-F]cfg +control device (per screen) +.It Pa /usr/include/dev/wscons/wsconsio.h +.El +.Sh SEE ALSO +.Xr intro 4 , +.Xr tty 4 , +.Xr wscons 4 , +.Xr wsmux 4 , +.Xr wsconscfg 8 , +.Xr wsconsctl 8 , +.Xr wsfontload 8 +.Sh BUGS +The +.Nm +code currently limits the number of screens on one display to 12. +.Pp +The terms +.Dq wscons +and +.Dq wsdisplay +are not cleanly distinguished in the code and in manual pages. |
