57dbe35fb6
the console command runs a command or the system shell under a new instance of kbdfs, optionally providing a serial console when $console environment variable is set.
287 lines
5.6 KiB
Text
287 lines
5.6 KiB
Text
.TH KBDFS 8
|
|
.SH NAME
|
|
kbdfs, console \- keyboard and console filesystem
|
|
.SH SYNOPSIS
|
|
.B aux/kbdfs
|
|
[
|
|
.B -Dd
|
|
] [
|
|
.B -s
|
|
.I srv
|
|
] [
|
|
.B -m
|
|
.I mntpnt
|
|
] [
|
|
.I consfile
|
|
]
|
|
.nf
|
|
|
|
.B mount -b /srv/cons /dev
|
|
.B /dev/cons
|
|
.B /dev/consctl
|
|
.B /dev/kbd
|
|
.B /dev/kbdin
|
|
.B /dev/kbin
|
|
.B /dev/kbmap
|
|
.fi
|
|
.PP
|
|
.B console
|
|
[
|
|
.I cmd
|
|
.I args...
|
|
]
|
|
.SH DESCRIPTION
|
|
.PP
|
|
Started on
|
|
.IR boot (8),
|
|
.IR kbdfs
|
|
translates raw keyboard scancodes from
|
|
.B /dev/scancode
|
|
(see
|
|
.IR kbd (3))
|
|
and its
|
|
.BR kbin
|
|
and
|
|
.BR kbdin
|
|
file and optionally reads console input from
|
|
.I consfile
|
|
to provide initial keyboard and console input.
|
|
.PP
|
|
It serves a one-level directory containing the files
|
|
.BR cons,
|
|
.BR consctl,
|
|
.BR kbd,
|
|
.BR kbdin,
|
|
.BR kbin
|
|
and
|
|
.BR kbmap.
|
|
.PP
|
|
The
|
|
.B -D
|
|
flag enables a debug trace of
|
|
.I 9p
|
|
messages and
|
|
.B -d
|
|
prevents
|
|
.IR kbdfs
|
|
from making its memory private.
|
|
.PP
|
|
The
|
|
.B -s
|
|
option causes
|
|
.IR kbdfs
|
|
to post its channel on
|
|
.B /srv/\fIsrv\fP.
|
|
On system startup,
|
|
.IR boot (8)
|
|
sets this to
|
|
.B cons.
|
|
With the
|
|
.B -m
|
|
option,
|
|
.IR kbdfs
|
|
mounts itself on
|
|
.I mntpnt
|
|
(see
|
|
.IR bind (2)),
|
|
otherwise on
|
|
.B /dev
|
|
(the default).
|
|
.PP
|
|
The
|
|
.B console
|
|
command executes
|
|
.I cmd
|
|
(defaults to the system shell)
|
|
under its own
|
|
.I kbdfs
|
|
instance providing a serial console if
|
|
.B $console
|
|
environment variable is set.
|
|
.SS Console
|
|
.PP
|
|
Reading the
|
|
.BR cons
|
|
file returns characters typed on the console. Normally, characters
|
|
are buffered to enable erase and kill processing.
|
|
A control-U,
|
|
.LR ^U ,
|
|
typed at the keyboard
|
|
.I erases
|
|
the current input line (removes all
|
|
characters from the buffer of characters not yet read via cons), and a
|
|
backspace
|
|
.I erases
|
|
the previous non-kill, non-erase character from the
|
|
input buffer.
|
|
The combination control-W,
|
|
.LR ^W ,
|
|
deletes the input last word.
|
|
Killing and erasing only delete characters back to, but
|
|
not including, the last newline. Characters typed at the keyboard
|
|
actually produce 16-bit runes (see
|
|
.IR utf (6)),
|
|
but the runes are translated into the variable-length
|
|
.SM UTF
|
|
encoding (see
|
|
.IR utf (6))
|
|
before putting them into the buffer. A
|
|
.IR read (2)
|
|
of a length greater than zero causes the process to wait until a newline
|
|
or a
|
|
.LR ^D
|
|
ends the buffer, and then returns as much of the buffer as the
|
|
argument to read allows, but only up to one complete line. A
|
|
terminating
|
|
.LR ^D
|
|
is not put into the buffer. If part of the line remains, the next
|
|
read will return bytes from that remainder and not part of any new
|
|
line that has been typed since.
|
|
.PP
|
|
If the string
|
|
.B rawon
|
|
has been written to the
|
|
.BR consctl
|
|
file and the file
|
|
is still open,
|
|
.BR cons
|
|
is in
|
|
.IR "raw mode" :
|
|
characters are not echoed as they are typed,
|
|
backspace,
|
|
.L ^U,
|
|
.L ^W
|
|
and
|
|
.L ^D
|
|
are not treated specially, and characters are
|
|
available to read as soon as they are typed. Ordinary mode is
|
|
reentered when
|
|
.B rawoff
|
|
is written to
|
|
.BR consctl
|
|
or this file is closed.
|
|
.PP
|
|
A write (see
|
|
.IR read (2))
|
|
to
|
|
.BR cons
|
|
causes the characters to be printed on the console screen.
|
|
.PP
|
|
When a
|
|
.I consfile
|
|
is passed to
|
|
.IR kbdfs (8)
|
|
as its last argument, it reads and processes the
|
|
characters from that file and forwards them to the
|
|
.BR cons
|
|
file with the same text processing applied as on keyboard input.
|
|
This is used to provide a serial console when
|
|
.B $console
|
|
environment variable is set. (see
|
|
.IR plan9.ini (8)).
|
|
.SS Keyboard
|
|
A read on the
|
|
.BR kbd
|
|
file returns the character
|
|
.B k,
|
|
.B K
|
|
or
|
|
.B c
|
|
followed by a null terminated, variable-length,
|
|
.SM UTF
|
|
encoded string. The
|
|
.B k
|
|
message is sent when a key is pressed down
|
|
and
|
|
.B K
|
|
when a key is released. The following string contains all the keycodes
|
|
of the keys that are currently pressed down in unshifted form.
|
|
This includes all keys that have a keyboard mapping and modifier keys.
|
|
The string following the
|
|
.B c
|
|
message contains the single character that would have been returned
|
|
on the
|
|
.BR cons
|
|
file instead. The
|
|
.B c
|
|
message will be resent at the keyboard repeat rate.
|
|
A single
|
|
.IR read (2)
|
|
can return multiple concatenated messages at once (delimited by the null byte)
|
|
or block when there are no messages queued. Opening the
|
|
.BR kbd
|
|
file disables input processing on the
|
|
.BR cons
|
|
file until it is closed again.
|
|
.PP
|
|
.B K,
|
|
.B k
|
|
and
|
|
.B c
|
|
messages can be written to
|
|
.BR kbdin
|
|
and will forwarded to the reader of
|
|
.BR cons
|
|
or
|
|
.BR kbd.
|
|
Writing a
|
|
.B r
|
|
or
|
|
.B R
|
|
message followed by a
|
|
.SM UTF
|
|
encoded rune will simulate the press or
|
|
release of that particular rune.
|
|
.PP
|
|
Raw scancodes can be written to the
|
|
.BR kbin
|
|
file for external keyboard input (used for USB keyboards).
|
|
.SS "Keyboard map"
|
|
Scancodes are mapped to Unicode characters with a number of
|
|
translation tables. These tables can be accessed with the
|
|
.BR kbmap
|
|
file.
|
|
.PP
|
|
Reads return the current contents of the map.
|
|
Each entry is one line containing three 11 character numeric fields,
|
|
each followed by a space:
|
|
a table number, an index into the table (scan code), and the decimal value
|
|
of the corresponding Unicode character (0 if none).
|
|
The table numbers are platform dependent; they typically distinguish
|
|
between unshifted and shifted keys.
|
|
The scan code values are hardware dependent and can vary
|
|
from keyboard to keyboard.
|
|
.PP
|
|
Writes to the file change the map.
|
|
Lines written to the file must contain three space-separated fields,
|
|
representing the table number, scan code index, and Unicode character.
|
|
Values are taken to be decimal unless they start with
|
|
.B 0x
|
|
(hexadecimal) or
|
|
.B 0
|
|
(octal).
|
|
The Unicode character can also be represented as
|
|
.BI ' x
|
|
where
|
|
.I x
|
|
gives the UTF-8 representation of the character
|
|
(see
|
|
.IR utf (6)),
|
|
or as
|
|
.BI ^ X
|
|
to represent a control character.
|
|
.SH "SEE ALSO"
|
|
.IR cons (3),
|
|
.IR keyboard (6),
|
|
.IR utf (6),
|
|
.IR kbd (3),
|
|
.IR plan9.ini (8)
|
|
.SH FILES
|
|
.B /sys/lib/kbmap/*
|
|
.SH SOURCE
|
|
.B /sys/src/cmd/aux/kbdfs
|
|
.br
|
|
.B /rc/bin/console
|
|
.SH HISTORY
|
|
.I Kbdfs
|
|
first appeared in 9front (May, 2011).
|