Back to main site | Back to man page index

SETKEYCODES(8)                                     Keyboard Support                                    SETKEYCODES(8)



NAME
       setkeycodes - load kernel scancode-to-keycode mapping table entries

SYNOPSIS
       setkeycodes scancode keycode ...

DESCRIPTION
       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 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.


THEORY
       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  spe‐
       cial  meaning,  and apart from the sequence produced by the Pause key, and apart from shiftstate related scan‐
       codes, 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.

       USB keyboards have standardized keycodes and setkeycodes doesn't affect them at all.

       Some  older kernels might hardwire a low scancode range to the equivalent keycodes; setkeycodes will fail when
       you try to remap these.


2.6 KERNELS
       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).

OPTIONS
       None.

BUGS
       The keycodes of X have nothing to do with those of Linux.  Unusual keys can be made visible under  Linux,  but
       not under X.

       setkeycodes  affects  only the "first" input device that has modifiable scancode-to-keycode mapping.  If there
       is more than one such device, setkeycodes cannot change the mapping of other devices than the "first" one.


SEE ALSO
       dumpkeys (1), loadkeys (1), showkey (1), getkeycodes (8)