# showkey

## NAME



           showkey - examine the codes sent by the keyboard
    


## SYNOPSIS



           showkey [-h|--help] [-a|--ascii] [-s|--scancodes] [-k|--keycodes]
           [-V|--version]
    


## DESCRIPTION



           **showkey** prints to standard output either the scan codes or the
           keycode or the `ascii' code of each key pressed.  In the first two
           modes the program runs until 10 seconds have elapsed since the
           last key press or release event, or until it receives a suitable
           signal, like SIGTERM, from another process.  In `ascii' mode the
           program terminates when the user types ^D.
    
           When in scancode dump mode, **showkey** prints in hexadecimal format
           each byte received from the keyboard to the standard output. A new
           line is printed when an interval of about 0.1 seconds occurs
           between the bytes received, or when the internal receive buffer
           fills up. This can be used to determine roughly, what byte
           sequences the keyboard sends at once on a given key press. The
           scan code dumping mode is primarily intended for debugging the
           keyboard driver or other low level interfaces. As such it
           shouldn't be of much interest to the regular end-user. However,
           some modern keyboards have keys or buttons that produce scancodes
           to which the kernel does not associate a keycode, and, after
           finding out what these are, the user can assign keycodes with
           setkeycodes(8).
    
           When in the default keycode dump mode, **showkey** prints to the
           standard output the keycode number or each key pressed or
           released. The kind of the event, press or release, is also
           reported.  Keycodes are numbers assigned by the kernel to each
           individual physical key. Every key has always only one associated
           keycode number, whether the keyboard sends single or multiple scan
           codes when pressing it. Using **showkey** in this mode, you can find
           out what numbers to use in your personalized keymap files.
    
           When in `ascii' dump mode, **showkey** prints to the standard output
           the decimal, octal, and hexadecimal value(s) of the key pressed,
           according to he present keymap.
    


## OPTIONS



           -h --help
                  **showkey** prints to the standard error output its version
                  number, a compile option and a short usage message, then
                  exits.
    
           -s --scancodes
                  Starts **showkey** in scan code dump mode.
    
           -k --keycodes
                  Starts **showkey** in keycode dump mode. This is the default,
                  when no command line options are present.
    
           -a --ascii
                  Starts **showkey** in `ascii' dump mode.
    
           -V --version
                  **showkey** prints version number and exits.
    


## 2.6 KERNELS



           In 2.6 kernels key codes lie in the range 1-255, instead of 1-127.
           Key codes larger than 127 are returned as three bytes of which the
           low order 7 bits are: zero, bits 13-7, and bits 6-0 of the key
           code.  The high order bits are: 0/1 for make/break, 1, 1.
    
           In 2.6 kernels raw mode, or scancode mode, is not very raw at all.
           Scan codes are first translated to key codes, and when scancodes
           are desired, the key codes are translated back. Various
           transformations are involved, and there is no guarantee at all
           that the final result corresponds to what the keyboard hardware
           did send. So, if you want to know the scan codes sent by various
           keys it is better to boot a 2.4 kernel. Since 2.6.9 there also is
           the boot option atkbd.softraw=0 that tells the 2.6 kernel to
           return the actual scan codes.
    


* * *