minix/man/man4/console.4

268 lines
8.8 KiB
Groff

.TH CONSOLE 4
.SH NAME
console, keyboard, log \- system console
.SH DESCRIPTION
The TTY device driver manages two devices related to the main user
interface, the system screen and the keyboard. These two together are
named "the Console".
.SS "The Screen"
The screen of a PC can be managed by a Monochrome Display Adapter, a
Hercules card, a Color Graphics Adapter, an Enhanced Graphics Adapter,
or a Video Graphics Array. To the console driver these devices are
seen as a block of video memory into which characters can be written to
be displayed, an I/O register that sets the video memory origin to the
character that is to be displayed on the top-left position of the
screen, and an I/O register that sets the position of the hardware
cursor. Each character within video memory is a two-byte word. The low
byte is the character code, and the high byte is the "attribute byte",
a set of bits that controls the way the character is displayed,
character and background colours for a colour card, or
intensity/underline/reverse video for monochrome.
.PP
These are the characteristics of the adapters in text mode:
.PP
.RS
.nf
.ta +15n +15n
Adapter Usable memory Mono/Colour
.ta +1n +15n +15n
MDA 4K M
Hercules 4K M
CGA 16K C
EGA 32K M or C
VGA 32K M or C
.fi
.RE
.PP
MDA and Hercules are the same to the console driver, because the graphics
mode of the Hercules is of no use to MINIX 3. EGA and VGA are also mostly
seen as the same in text mode. An EGA adapter is either a monochrome or a
colour device depending on the screen attached to it. A VGA adapter can run
in either monochrome or colour (grayscale) mode depending on how the Boot
Monitor has initialized it.
.PP
The driver uses the video origin to avoid copying the screen contents when
scrolling up or down. Instead the origin is simply moved one line. This is
named "hardware scrolling", as opposed to copying memory: "software
scrolling".
.PP
The video origin is also used to implement several virtual consoles inside
the video memory of the adapter. Each virtual console gets a segment of
video memory. The driver chooses which console to display by moving the
video origin. Note that an MDA or Hercules adapter can only support one
console. CGA can support up to four 80x25 consoles, and EGA and VGA can
have eight. It is best to configure one less console to leave some video
memory free so that hardware scrolling has some space to work in.
.PP
Character codes are used as indices into a display font that is stored in the
adapter. The default font is the IBM character set, which is an ASCII
character set in the low 128 codes, and a number of mathematical, greek,
silly graphics, and accented characters in the upper 128 codes. This font
is fixed in the MDA, Hercules and CGA adapters, but can be replaced by a
user selected font for the EGA and VGA adapters.
.PP
A number of control characters and escape sequences are implemented by the
driver. The result is upward compatible with the ANSI standard terminal.
The
.BR termcap (5)
type is
.BR minix .
Normal characters written to the console are displayed at the cursor
position and the cursor is advanced one column to the right. If an entire
line is filled then the cursor wraps to the first column of the next line
when the next character must be displayed. The screen is scrolled up if
needed to start a new line. Some characters have special effects when sent
to the console. Some even have arguments in the form of comma separated
decimal numbers. These numbers default to the lowest possible value when
omitted. The top-left character is at position (1, 1). The following
control characters and escape sequences are implemented by the console:
.PP
.ta +10n +20n
Sequence Name Function
.in +31n
.ti -30n
^@ Null Ignored (padding character)
.ti -30n
^G Bell Produce a short tone from the speaker
.ti -30n
^H Backspace Move the cursor back one column, wrapping from the
left edge up one line to the right edge
.ti -30n
^I Horizontal Tab Move to the next tab stop, with each tab stop at
columns 1, 9, 25, etc. Wrap to the next line if necessary.
.ti -30n
^J Line Feed Move one line down, scrolling the screen up if
necessary
.ti -30n
^K Vertical Tab Same as LF
.ti -30n
^L Form Feed Same as LF
.ti -30n
^M Carriage Return Move to column 1
.ti -30n
^[ Escape Start of an escape sequence
.ti -30n
^[M Reverse Index Move one line up, scrolling the screen down if
necessary
.ti -30n
^[[\fIn\fPA Cursor Up Move the cursor up \fIn\fP lines
.ti -30n
^[[\fIn\fPB Cursor Down Move the cursor down \fIn\fP lines
.ti -30n
^[[\fIn\fPC Cursor Forward Move the cursor right \fIn\fP columns
.ti -30n
^[[\fIn\fPD Cursor Backward Move the cursor left \fIn\fP columns
.ti -30n
^[[\fIm\fP;\fIn\fPH Cursor Position Move the cursor to line \fIm\fP,
column \fIn\fP
.ti -30n
^[[\fIs\fPJ Erase in Display Clear characters as follows:
.br
\fIs\fP = 0: From cursor to end of screen
.br
\fIs\fP = 1: From start of screen to cursor
.br
\fIs\fP = 2: Entire screen
.ti -30n
^[[\fIs\fPK Erase in Line Clear characters as follows:
.br
\fIs\fP = 0: From cursor to end of line
.br
\fIs\fP = 1: From start of line to cursor
.br
\fIs\fP = 2: Entire line
.ti -30n
^[[\fIn\fPL Insert Lines Insert \fIn\fP blank lines
.ti -30n
^[[\fIn\fPM Delete Lines Delete \fIn\fP lines
.ti -30n
^[[\fIn\fP@ Insert Characters Insert \fIn\fP blank characters
.ti -30n
^[[\fIn\fPP Delete Characters Delete \fIn\fP characters
.ti -30n
^[[\fIn\fPm Character Attribute Set character attribute as follows:
.br
\fIn\fP = 0: Normal (default) attribute
.br
\fIn\fP = 1: Bold (high intensity fg colour)
.br
\fIn\fP = 4: Underline (mono) / Cyan (colour)
.br
\fIn\fP = 5: Blinking
.br
\fIn\fP = 7: Reverse Video
.br
\fIn\fP = 30: Black foreground colour
.br
\fIn\fP = 31: Red
.br
\fIn\fP = 32: Green
.br
\fIn\fP = 33: Brown
.br
\fIn\fP = 34: Blue
.br
\fIn\fP = 35: Magenta
.br
\fIn\fP = 36: Cyan
.br
\fIn\fP = 37: Light Gray
.br
\fIn\fP = 39: Default fg colour (lt gray)
.br
\fIn\fP = 40\-47: Same for background colour
.br
\fIn\fP = 49: Default bg colour (black)
.br
Note: The "bold" versions of black, brown and lt gray become dark gray,
yellow and white.
.in -31n
.PP
The console device implements the following ioctl to copy a font into
font memory on EGA and VGA adapters:
.PP
.RS
.BI "ioctl(" fd ", TIOCSFON, u8_t " font "[256][32]);"
.RE
.PP
Font memory consists of 256 character definitions of 32 lines per character
and 8 pixels per line. The first line is the topmost line of the character.
The leftmost pixel is lit if the most significant bit of a line is set, etc.
How many lines are used depends on the current video mode. The 80x25 video
mode used by MINIX 3 has an 8x16 character cell, 80x28 has 8x14 characters,
and 132x43 or 132x50 has 8x8 characters. The boot variable
.B console
is used by both the Boot Monitor and the console driver to set the video
mode, software scrolling on/off, and VGA screen blank timeout. See
.BR boot (8).
.SS "The Keyboard"
The keyboard produces key codes for each key that is pressed. These keys
are transformed into character codes or sequences according to the current
keyboard translation table. The format of this table is described in
.BR keymap (5).
The character codes can be read from the console device unless they map to
special hotkeys. The hotkeys are as follows:
.PP
.ta +17n
Name Key Function
.in +18n
.ti -17n
CTRL\-ALT\-DEL Send an abort signal to process 1 (init). Init then
halts the system
.ti -17n
CTRL\-ALT\-KP-. Likewise for keypad period
.ti -17n
F1 Process table dump
.ti -17n
F2 Show memory map
.ti -17n
F3 Toggle software/hardware scrolling
.ti -17n
F5 Show network statistics
.ti -17n
CTRL\-F7 Send a quit signal to all processes connected to the console
.ti -17n
CTRL\-F8 Send an interrupt signal
.ti -17n
CTRL\-F9 Send a kill signal. If CTRL\-F8 or CTRL\-F7 don't get 'em,
then this surely will. These keys are for disaster recovery. You would
normally use DEL and CTRL\-\e to send interrupt and quit signals.
.\" .ig VC
.ti -17n
ALT\-F1 Select virtual console 0 (/dev/console)
.ti -17n
ALT\-F2 Select virtual console 1 (/dev/ttyc1)
.ti -17n
ALT\-F(\fIn\fP+1) Select virtual console \fIn\fP
(/dev/ttyc\fIn\fP)
.ti -17n
ALT\-Left Select previous virtual console
.ti -17n
ALT\-Right Select next virtual console
.\" ..
.in -18n
.PP
.\"XXX
The keyboard map is set with the
.B KIOCSMAP
ioctl whose precise details are currently hidden in the
.B loadkeys
utility.
.SS "Log device"
The
.B log
device can be used by processes to print debug messages onto the console.
The console is a terminal type device, so it is taken from processes when a
session leader exits. This does not happen with the log device.
.SH "SEE ALSO"
.BR tty (4),
.BR loadkeys (1),
.BR keymap (5),
.BR boot (8).
.SH NOTES
Output processing turns Line Feeds into CR LF sequences. Don't let this
surprise you. Either turn off output processing or use one of the synonyms
for LF.
.SH AUTHOR
Kees J. Bot (kjb@cs.vu.nl)
.\" minor editing of man page by asw 07.08.96