setkeycodes - load kernel scancode-to-keycode mapping table entries
setkeycodes scancode keycode ...
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 keycode.
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 these.
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
The keycodes of X have nothing to do with those of Linux. Unusual keys can be
made visible under Linux, but not under X.
dumpkeys (1), loadkeys (1), showkey (1), getkeycodes (8)