mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/legion/kbd.git
synced 2026-01-28 23:14:09 +00:00
395 lines
12 KiB
Plaintext
395 lines
12 KiB
Plaintext
Path: cwi.nl!sun4nl!EU.net!news.sprintlink.net!sunic!sunic.sunet.se!news.funet.fi!news.helsinki.fi!usenet
|
|
From: Peter Jones <thanatos@drealm.org>
|
|
Newsgroups: comp.os.linux.announce
|
|
Subject: Linux Console Terminal Documentation
|
|
Followup-To: comp.os.linux.misc
|
|
Date: Sat, 30 Sep 95 16:37:05 GMT
|
|
Organization: ?
|
|
Lines: 331
|
|
Approved: linux-announce@news.ornl.gov (Lars Wirzenius)
|
|
Message-ID: <cola-liw-812479025-13056-1@oravannahka.helsinki.fi>
|
|
NNTP-Posting-Host: kruuna.helsinki.fi
|
|
Mime-Version: 1.0
|
|
Content-Type: text/plain; charset=ISO-8859-1
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
-----BEGIN PGP SIGNED MESSAGE-----
|
|
|
|
I thought I'd do "something" for the Linux community (apart from
|
|
co-authoring drealmBBS :-)).
|
|
|
|
So, here's my first (and maybe only) issue of the Linux Console Driver
|
|
documentation. Anyone wanting to take this on as a support task, feel
|
|
free - I _really_ don't have time to keep up with new 1.3.x kernels.
|
|
|
|
- -- Peter
|
|
|
|
Linux Console Driver
|
|
====================
|
|
====================
|
|
(Everything you ever wanted to know but couldn't be bothered to look in the
|
|
source for.)
|
|
|
|
Author: Peter L Jones <thanatos@drealm.org>
|
|
~Date: Wed Sep 27 19:12:25 BST 1995
|
|
Kernel: 1.2.13
|
|
Addendum for: 1.3.28
|
|
|
|
|
|
General Processing
|
|
==================
|
|
I don't use UTF. I've only covered it to the extent I can fathom from the
|
|
source.
|
|
|
|
I've not documented "hardware scrollback".
|
|
|
|
In UTF mode, once a complete character is assembled, it is translated.
|
|
|
|
Otherwise, the character then has its top bit set if requested and is then
|
|
translated.
|
|
|
|
A glyph is to be displayed if
|
|
* we've assembled a complete UTF character
|
|
* we translated it okay
|
|
* it's not a control character, or we're displaying control
|
|
characters
|
|
Otherwise, it might be a control character.
|
|
Otherwise it's ignored.
|
|
|
|
|
|
Glyphs
|
|
======
|
|
These are characters that make a mark on the display.
|
|
|
|
You can never display the glyph for char(27) by transmitting ESC.
|
|
|
|
You cannot display glyphs for any character in the Control Characters table,
|
|
unless enabled.
|
|
|
|
If there is a "pending newline"
|
|
a crlf sequence is issued prior to the glyph.
|
|
|
|
If we're in "insert mode",
|
|
the rest of the line is shifted right; the character in the
|
|
last column is lost.
|
|
|
|
The glyph is then displayed.
|
|
|
|
If the cursor is in the last column,
|
|
If automatic margins are turned on,
|
|
the "pending newline" state is set
|
|
otherwise,
|
|
the next glyph can overwrite this one.
|
|
Otherwise the cursor is advanced.
|
|
|
|
|
|
Control Characters
|
|
==================
|
|
Control characters can occur during ESCape sequence processing.
|
|
|
|
^g bell - make a tone on the console speaker
|
|
^h bs - cursor to previous character (backspace)
|
|
(will not wrap to previous line)
|
|
^i tab - cursor to next tab position
|
|
^j ^k ^l lf - cursor to next line, scroll if end of scrolling region
|
|
(linefeed); if CRLF mode select, cr as well
|
|
^m cr - cursor to start of current line (carriage return)
|
|
^n charset 1, translate table G1, display control characters
|
|
as glyphs
|
|
^o charset 0, translate table G0, don't display control
|
|
characters as glyphs
|
|
{-- "charset" sets the current translate table; e.g. ^n sets charset
|
|
1, translate table G1, display control characters as glyphs - followed by
|
|
^[[10m would leave G1 in effect but disable display of control characters as
|
|
glyphs and display setting the top bit of glyphs --}
|
|
|
|
^x ^z cancel any ESCape sequence in progress
|
|
^[ begin an ESCape sequence
|
|
^? "delete" - ignored
|
|
128+^[ begin a CSI sequence
|
|
|
|
|
|
ESCape Sequences
|
|
================
|
|
^[[ begin a CSI sequence
|
|
^[% begin a UTF control sequence
|
|
^[( begin a set G0 sequence
|
|
^[) begin a set G1 sequence
|
|
^[# begin a DEC test sequence
|
|
^[E cr, lf
|
|
^[M ri - cursor up, reverse scroll if top of scrolling region
|
|
(reverse index)
|
|
^[D lf
|
|
^[H set tab in the current column
|
|
^[Z request for terminal ID (response is ^[[?6c - VT102)
|
|
^[7 store cursor position
|
|
^[8 restore cursor position
|
|
^[c reset terminal completely
|
|
^[> Keypad is numeric (normal)
|
|
^[= Keypad is application (act as function keys)
|
|
|
|
|
|
CSI sequences
|
|
=============
|
|
|
|
There are two formats. Function keys are indicated by CSI [ and are dealt
|
|
with later. The general format is CSI (i.e. ^[[), zero to 16 parameters and
|
|
a character to indicate the function being performed. E.g ^[[1;43;37m.
|
|
|
|
Missing parameters are defaulted. Screen co-ordinates and movements start
|
|
at and default to 1 (unless otherwise stated). Parameters are named par1,
|
|
par2 etc in the following descriptions.
|
|
|
|
CSI h and CSI l can have an optional ? after the CSI and before any
|
|
parameters. This indicates "DEC Private" modes. {-- Other manufacturers
|
|
use different characters to select their private modes - Linux doesn't
|
|
support any but DEC. --}
|
|
|
|
CSI h Set Mode sequence
|
|
CSI l Clear Mode sequence
|
|
CSI n Request report:
|
|
par1 = 5 - Status report: response is ^[[0n (terminal okay)
|
|
par1 = 6 - Cursor report: response is ^[[y;xR - where y is
|
|
relative if origin mode is selected
|
|
CSI A Cursor Up by par1 lines
|
|
CSI F Cursor Up by par1 lines, and to start of line
|
|
CSI B CSI e Cursor Down by par1 lines
|
|
CSI E Cursor Down by par1 lines, and to start of line
|
|
CSI C CSI a Cursor Right by par1 characters
|
|
CSI D Cursor Left by par1 characters
|
|
CSI d Set cursor vertical position to par1
|
|
CSI G CSI ` Set cursor horizonal position to par1
|
|
CSI H CSI f Set cursor vertical position to par2 and horizontal position
|
|
to par1
|
|
CSI L Insert par1 lines
|
|
CSI M Delete par1 lines
|
|
CSI @ Insert par1 characters
|
|
CSI P Delete par1 characters
|
|
CSI X Erase par1 characters (wraps around line ends)
|
|
CSI J Screen Erase sequence:
|
|
par1 = 0 - erase from cursor to end of display
|
|
par1 = 1 - erase from start of display to cursor
|
|
par1 = 2 - erase whole display
|
|
CSI K Line Clear sequence:
|
|
par1 = 0 - erase from cursor to end of line
|
|
par1 = 1 - erase from start of line to cursor
|
|
par1 = 2 - erase whole line
|
|
CSI c If par1 = 0 (default), requests terminal ID
|
|
(response is ^[[?6c - VT102)
|
|
CSI g Clear tabs:
|
|
par1 = 0 - Clears tab at the current column
|
|
par1 = 3 - Clears all tabs
|
|
CSI q Set LEDs = par1 indicates which LED to turn on -
|
|
0 - none, 1 - , 2 - , 3 - .
|
|
CSI r Set scrolling region
|
|
par1 - top, default and minimum 1, must be less than par2
|
|
par2 - bottom, default and maximum end of display
|
|
CSI s Store cursor position
|
|
CSI u Restore cursor position
|
|
CSI m Character Rendition sequence
|
|
CSI ] setterm(1) command sequence
|
|
|
|
|
|
Set and Clear Mode Sequences
|
|
- ----------------------------
|
|
CSI h sets modes; CSI l clears modes. There are two sets of modes -
|
|
ANSI standard and DEC private.
|
|
|
|
ANSI modes:
|
|
3 Monitor (display control characters)
|
|
4 Insert
|
|
20 CRLF
|
|
|
|
DEC modes:
|
|
1 Cursor keys as application keys (send ^[Ox as appl, ^[[x as normal)
|
|
3 80 (off) or 132 (on) columns
|
|
5 Inverse video
|
|
6 Origin mode (and go to origin)
|
|
7 Autowrap (right margin)
|
|
8 Autorepeat
|
|
9 Mouse reports #1
|
|
25 Cursor visible
|
|
1000 Mouse reports #2
|
|
|
|
|
|
Character Rendition Sequences
|
|
- -----------------------------
|
|
Each parameter is actioned in order. You cannot get bright backgrounds
|
|
(rather, I can't). {-- On SVR4, attribute code 6 is used for bright
|
|
background, if I remember correctly --}
|
|
|
|
0 default (intensity normal, underline off, blink off, normal video,
|
|
default colours (which start as white on black))
|
|
1 intensity bold
|
|
2 intensity dim
|
|
4 underline on
|
|
5 blink on
|
|
7 reverse video
|
|
10 restore translate table, turn off display of control chars, don't
|
|
set the "top" bit of glyphs displayed
|
|
11 disable the translate table, display control chars as glyphs, don't
|
|
set the "top" bit of glyphs displayed
|
|
12 disable the translate table, display control chars as glyphs,
|
|
set the "top" bit of glyphs displayed
|
|
21 22 intensity normal
|
|
24 underline off
|
|
25 blink off
|
|
27 normal video
|
|
38 underline on, set foreground colour to default
|
|
39 underline off, set foreground colour to default
|
|
49 set background colour to default
|
|
30-37 set foreground colour (0-black, 1-red, 2-green, 3-brown, 4-blue,
|
|
5-magenta, 6-cyan, 7-white)
|
|
40-47 set background colour
|
|
|
|
|
|
Setterm Commmand Sequences
|
|
- --------------------------
|
|
The command is in par1, followed by parameters.
|
|
|
|
1 Set underline colour - par2 is 0 to 15, which is 0 to 7 as above,
|
|
plus bold versions
|
|
2 Set dim colour - par2 as above
|
|
8 Store current attributes as defaults (so that CSI 0 m restores to
|
|
them)
|
|
9 Set blanking interval to par2 minutes (max one hour)
|
|
|
|
|
|
UTF Control Sequences
|
|
=====================
|
|
^[%@ Turn off UTF
|
|
^[%G ^[%8 Turn on UTF (^[%8 is deprecated)
|
|
|
|
|
|
G0/G1 Sequences
|
|
===============
|
|
There are two character sets, known as G0 and G1. G0 is the default
|
|
character set. Each can be set to one of four mappings. The mappings, and
|
|
the sequences to select them, are:
|
|
|
|
G0 G1 Map Name
|
|
- ---- ---- --- ----
|
|
^[(B ^[)B 0 Normal Map (default G0 map)
|
|
^[(0 ^[)0 1 Graphics Map (default G1 map)
|
|
^[(U ^[)U 2 Null Map
|
|
^[(K ^[)K 3 User Map
|
|
|
|
The maps themselves are defined in "consolemap.c". "Normal Map" translates
|
|
the standard IBM PC ROM character set to standard 8-bit ISO Latin-1.
|
|
"Graphics Map" translates to the VT100 character set in graphics mode.
|
|
"Null Map" passed the ROM characters straight through, except BS, CR, LF,
|
|
LL, SO, SI and ESC. "User Map" is available to be changed in the source or
|
|
by mapscrn(8).
|
|
|
|
|
|
DEC Test Sequences
|
|
==================
|
|
Only one test, ^[#8, is defined. This fills the display with the character
|
|
'E' to allow the display to be centred.
|
|
|
|
|
|
Addendum
|
|
========
|
|
The console driver changed in 1.3.x. This documents the changes between
|
|
1.2.13 and 1.3.28.
|
|
|
|
Each virtual console gains a palette, which defines the actual colours used
|
|
on the display (so you can get yellow rather than brown, for example).
|
|
|
|
Font support is enhanced.
|
|
|
|
In addition to ESC, some other control characters cannot have their glyphs
|
|
displayed - ^@ ^H ^J ^L ^M ^N ^O ^[.
|
|
|
|
Hardware scrollback has been enhanced.
|
|
|
|
The "Normal Map" has been renamed "Latin 1 Map" (LAT1_MAP).
|
|
|
|
UTF support has been enhanced.
|
|
|
|
(UTF mode can be used to display the excluded control characters - display
|
|
UTF character 0xF0cc, where cc is the hex code of the position in the ROM
|
|
character set to display.)
|
|
|
|
A new set of Nonstandard Sequences is defined, prefixed by ESC ]. (setterm
|
|
commands are still CSI ].)
|
|
|
|
Colour palette support is added.
|
|
|
|
512 byte font support is added.
|
|
|
|
Font height support allows the screen to resize to fit the font.
|
|
|
|
Nonstandard Sequences
|
|
- ---------------------
|
|
^[]P Set palette
|
|
Seven parameters are collected
|
|
par1 is the palette element to redefine
|
|
par2, par3 set the red component
|
|
par4, par5 set the green component
|
|
par6, par7 set the blue component
|
|
^[]R Resets the default palette
|
|
|
|
|
|
- --
|
|
Send comp.os.linux.announce submissions to: linux-announce@news.ornl.gov
|
|
PLEASE remember a short description of the software.
|
|
|
|
-----BEGIN PGP SIGNATURE-----
|
|
Version: 2.6.2i
|
|
|
|
iQCVAwUBMG1wkYQRll5MupLRAQHZRgP+IdvvxOk6svo5Gum8wY31vtyILGYuadRU
|
|
rj84hrUAgvKZG3iaz+MOikx5PIcbxXA4LlfpPLkq9EfyT9sDJfEPYI8w+9I8bbvB
|
|
a0G1vpDCG8WbC+G3vwVMK0fnySFjhru4JaXHCTeagUzGLXVFqD4JhWbuXkhQH08f
|
|
9jt/ZgNgaB4=
|
|
=m2ca
|
|
-----END PGP SIGNATURE-----
|
|
|
|
Path: cwi.nl!sun4nl!EU.net!news.sprintlink.net!tank.news.pipex.net!pipex!dispatch.news.demon.net!demon!mail2news.demon.co.uk!drealm.demon.co.uk
|
|
From: Peter Jones <thanatos@drealm.org>
|
|
Newsgroups: comp.os.linux.misc
|
|
Subject: Re: Linux Console Terminal Documentation
|
|
Date: 30 Sep 1995 20:12:27 +0100
|
|
Organization: drealm conference system +44 (0)181 568 2204
|
|
Lines: 35
|
|
Message-ID: <44k4qr$6aj@drealm.drealm.org>
|
|
References: <cola-liw-812479025-13056-1@oravannahka.helsinki.fi>
|
|
X-NNTP-Posting-Host: drealm.demon.co.uk
|
|
X-Newsreader: TIN [version 1.2 PL2]
|
|
|
|
I (thanatos@drealm.org) wrote, in col-announce:
|
|
[chop chop]
|
|
: Nonstandard Sequences
|
|
: - ---------------------
|
|
: ^[]P Set palette
|
|
: Seven parameters are collected
|
|
: par1 is the palette element to redefine
|
|
: par2, par3 set the red component
|
|
: par4, par5 set the green component
|
|
: par6, par7 set the blue component
|
|
: ^[]R Resets the default palette
|
|
|
|
|
|
This should read (i.e. it makes sense...) like this:
|
|
|
|
Nonstandard Sequences
|
|
---------------------
|
|
^[]P Set palette
|
|
Seven hex digits should follow (0-9, a-f, A-F):
|
|
1 is the palette element to redefine
|
|
2*16 + 3 set the red component
|
|
4*16 + 5 set the green component
|
|
6*16 + 7 set the blue component
|
|
^[]R Resets the default palette
|
|
|
|
|
|
Hope that helps...
|
|
|
|
(One day my "other" linux box (crash-n-burn...) will have colour...)
|
|
|
|
-- Peter
|
|
--
|
|
Drealm Conference System -- (+44) 181 568 2204 (V.FC)
|
|
The home of drealmBBS -------- six lines -- live chat
|
|
|