The setkeycodes command reads its arguments two at a time, each pair
of arguments consisting of a scancode (given in hexadecimal) and a
keycode (given in decimal). For each such pair, it tells the kernel
keyboard driver to map the specified scancode to the specified
This command is useful only for people with slightly unusual
keyboards, that have a few keys which produce scancodes that the
kernel does not recognize.
The usual PC keyboard produces a series of scancodes for each key
press and key release. (Scancodes are shown by showkey -s, see
showkey(1).) The kernel parses this stream of scancodes, and
converts it to a stream of keycodes (key press/release events).
(Keycodes are shown by showkey.) Apart from a few scancodes with
special meaning, and apart from the sequence produced by the Pause
key, and apart from shiftstate related scancodes, and apart from the
key up/down bit, the stream of scancodes consists of unescaped
scancodes xx (7 bits) and escaped scancodes e0 xx (8+7 bits). To
these scancodes or scancode pairs, a corresponding keycode can be
assigned (in the range 1-127). For example, if you have a Macro key
that produces e0 6f according to showkey(1), the command
setkeycodes e06f 112
will assign the keycode 112 to it, and then loadkeys(1) can be used
to define the function of this key.
Some older kernels might hardwire a low scancode range to the
equivalent keycodes; setkeycodes will fail when you try to remap
In 2.6 kernels key codes lie in the range 1-255, instead of 1-127.
(It might be best to confine oneself to the range 1-239.)
In 2.6 kernels raw mode, or scancode mode, is not very raw at all.
The code returned by showkey -s will change after use of setkeycodes.
A kernel bug. See also showkey(1).
This page is part of the kbd (Linux keyboard tools) project.
Information about the project can be found at
⟨http://www.kbd-project.org/⟩. If you have a bug report for this man‐
ual page, send it to email@example.com. This page was obtained
from the project's upstream Git repository
2017-03-13. If you discover any rendering problems in this HTML ver‐
sion of the page, or you believe there is a better or more up-to-date
source for the page, or you have corrections or improvements to the
information in this COLOPHON (which is not part of the original man‐
ual page), send a mail to firstname.lastname@example.org
Local 8 Nov 1994 SETKEYCODES(8)