plan9front/sys/man/8/kbdfs

222 lines
4.9 KiB
Plaintext
Raw Normal View History

2011-05-12 11:36:46 -07:00
.TH KBDFS 8
.SH NAME
kbdfs \- keyboard and console filesystem
.SH SYNOPSIS
.B aux/kbdfs
[
.B -Dd
] [
.B -s
.I srv
] [
.B -m
.I mntpnt
] [
2011-05-11 16:31:29 -07:00
.I filename
2011-05-12 11:36:46 -07:00
]
.nf
.B mount -b /srv/cons /dev
.B /dev/cons
.B /dev/consctl
.B /dev/kbd
.B /dev/kbin
.B /dev/kbmap
.fi
.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
file and optionaly 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 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
2011-05-11 16:31:29 -07:00
.B /srv/\fIsrv\fP.
2011-05-12 11:36:46 -07:00
On system startup,
.IR boot (8)
sets this to
.B cons.
With the
.B -m
option,
.IR kbdfs
2011-05-11 16:31:29 -07:00
mounts itself on
2011-05-12 11:36:46 -07:00
.I mntpnt
2011-05-11 16:31:29 -07:00
(see
.IR bind (2)),
2011-05-12 11:36:46 -07:00
otherwise on
.B /dev
2011-05-11 16:31:29 -07:00
(the default).
2011-05-12 11:36:46 -07:00
.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 kills
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. 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)
2011-05-11 16:31:29 -07:00
of a length greater than zero causes the process to wait until a newline
2011-05-12 11:36:46 -07:00
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
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
2011-05-11 16:31:29 -07:00
When a
.I filename
is passed to
2011-05-12 11:36:46 -07:00
.IR kbdfs (8)
2011-05-11 16:31:29 -07:00
as its last argument, it reads and processes the
2011-05-12 11:36:46 -07:00
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 on serial consoles.
.SS Keyboard
A read on the
.BR kbd
2011-05-11 16:31:29 -07:00
file returns a null terminated, variable-length,
2011-05-12 11:36:46 -07:00
.SM UTF
encoded string of all the keys that are currently pressed (key is
down) on the keyboard. This includes all keys that have a keyboard
mapping and modifier keys. No key is treated specially. A new event
is generated on each state change or at keyboard repeat rate and put
in a buffer. Each
.IR read (2)
will return a single event or block until there are new events
2011-05-11 16:31:29 -07:00
available. The read data is always terminated with a null-byte,
so when all keys are released (all keys are up), a single
null-byte will be returned. Newly pressed keys are appended to the
string before the null-byte. Key releases remove the
character from the string. Change on a modifier key like
2011-05-12 11:36:46 -07:00
.B Shift
or
.B Num
will not change
2011-05-11 16:31:29 -07:00
the characters already present in the string, but will
take effect on newly pressed keys.
2011-05-12 11:36:46 -07:00
.PP
Raw scancodes can be written to the
.BR kbin
2011-05-13 23:22:53 -07:00
file for external keyboard input (used for USB keyboards).
2011-05-12 11:36:46 -07:00
.SS "Keyboard map"
Scancodes are maped 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)
.SH FILES
.B /dev/lib/kbmap/*
.SH SOURCE
.B /sys/src/cmd/aux/kbdfs.c