# man > setkeycodes(8)

[_SETKEYCODES_(8)](https://www.chedong.com/phpMan.php/man/SETKEYCODES/8/markdown)                         System Manager's Manual                        [_SETKEYCODES_(8)](https://www.chedong.com/phpMan.php/man/SETKEYCODES/8/markdown)

## 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)](https://www.chedong.com/phpMan.php/man/showkey/1/markdown) ) The kernel parses this stream  of  scan‐
       codes,  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  se‐
       quence 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 pro‐
       duces e0 6f according to [**showkey**(1)](https://www.chedong.com/phpMan.php/man/showkey/1/markdown), the command
              **setkeycodes e06f 112**
       will assign the keycode 112 to it, and then [**loadkeys**(1)](https://www.chedong.com/phpMan.php/man/loadkeys/1/markdown) can be used to define the function of
       this key.

       Some  older  kernels  might hardwire a low scancode range to the equivalent keycodes; setkey‐
       codes 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 con‐
       fine 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)](https://www.chedong.com/phpMan.php/man/showkey/1/markdown).

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

## SEE ALSO
       [**dumpkeys**(1)](https://www.chedong.com/phpMan.php/man/dumpkeys/1/markdown), [**loadkeys**(1)](https://www.chedong.com/phpMan.php/man/loadkeys/1/markdown), [**showkey**(1)](https://www.chedong.com/phpMan.php/man/showkey/1/markdown), [**getkeycodes**(8)](https://www.chedong.com/phpMan.php/man/getkeycodes/8/markdown)

kbd                                          8 Nov 1994                               [_SETKEYCODES_(8)](https://www.chedong.com/phpMan.php/man/SETKEYCODES/8/markdown)
