62 lines
3.1 KiB
HTML
62 lines
3.1 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
|
<HTML>
|
|
<HEAD>
|
|
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
|
|
<TITLE>The Linux keyboard and console HOWTO: Keyboard generalities</TITLE>
|
|
<LINK HREF="Keyboard-and-Console-HOWTO-3.html" REL=next>
|
|
<LINK HREF="Keyboard-and-Console-HOWTO-1.html" REL=previous>
|
|
<LINK HREF="Keyboard-and-Console-HOWTO.html#toc2" REL=contents>
|
|
</HEAD>
|
|
<BODY>
|
|
<A HREF="Keyboard-and-Console-HOWTO-3.html">Next</A>
|
|
<A HREF="Keyboard-and-Console-HOWTO-1.html">Previous</A>
|
|
<A HREF="Keyboard-and-Console-HOWTO.html#toc2">Contents</A>
|
|
<HR>
|
|
<H2><A NAME="s2">2. Keyboard generalities</A></H2>
|
|
|
|
<P>
|
|
<!--
|
|
keyboard!theory of operation
|
|
-->
|
|
<P>You press a key, and the keyboard controller sends
|
|
<A HREF="http://www.win.tue.nl/~aeb/linux/kbd/scancodes.html">scancodes</A>
|
|
to the kernel keyboard driver. Some keyboards can be programmed,
|
|
but usually the scancodes corresponding to your keys are fixed.
|
|
The kernel keyboard driver just transmits whatever it receives
|
|
to the application program when it is in <EM>scancode mode</EM>,
|
|
like when <CODE>X</CODE> is running. Otherwise, it parses the stream of scancodes
|
|
into keycodes, corresponding to key press or key release events.
|
|
(A single key press can generate up to 6 scancodes.)
|
|
These keycodes are transmitted to the application program when it is
|
|
in <EM>keycode mode</EM> (as used, for example, by <CODE>showkey</CODE>
|
|
and some X servers).
|
|
Otherwise, these keycodes are looked up in the keymap, and the character
|
|
or string found there is transmitted to the application, or the action
|
|
described there is performed.
|
|
(For example, if one presses and releases the <CODE>a</CODE> key, then the keyboard
|
|
produces scancodes 0x1e and 0x9e, this is converted to keycodes 30 and 158,
|
|
and then transmitted as 0141, the ASCII or latin-1 code for `a';
|
|
if one presses and releases <CODE>Delete</CODE>, then the keyboard produces scancodes
|
|
0xe0 0x53 0xe0 0xd3, these are converted to keycodes 111 and 239, and then
|
|
transmitted as the 4-symbol sequence ESC [ 3 ~, all assuming
|
|
a US keyboard and a default keymap. An example of a key combination to which
|
|
an action is assigned is Ctrl-Alt-Del.)
|
|
<P>The translation between unusual scancodes and keycodes can be set using the
|
|
utility <CODE>setkeycodes</CODE> - only few people will need it.
|
|
The translation between keycodes and characters or strings or actions, that is,
|
|
the keymap, is set using the utilities <CODE>loadkeys</CODE> and <CODE>setmetamode</CODE>.
|
|
For details, see getkeycodes(8), setkeycodes(8), dumpkeys(1), loadkeys(1),
|
|
setmetamode(1). The format of the files output by <CODE>dumpkeys</CODE> and read
|
|
by <CODE>loadkeys</CODE> is described in keymaps(5).
|
|
<P>Where it says `transmitted to the application' in the above description,
|
|
this really means `transmitted to the terminal driver'. That is, further
|
|
processing is just like that of text that comes in over a serial line.
|
|
The details of this processing are set by the program <CODE>stty</CODE>.
|
|
<P>
|
|
<HR>
|
|
<A HREF="Keyboard-and-Console-HOWTO-3.html">Next</A>
|
|
<A HREF="Keyboard-and-Console-HOWTO-1.html">Previous</A>
|
|
<A HREF="Keyboard-and-Console-HOWTO.html#toc2">Contents</A>
|
|
</BODY>
|
|
</HTML>
|