# man > showkey(1)

> **TLDR:** Display the keycode of pressed keys on the keyboard, helpful for debugging keyboard-related issues and key remapping.
>
- View keycodes in decimal:
  `sudo showkey`
- Display scancodes in hexadecimal:
  `sudo showkey {{-s|--scancodes}}`
- Display keycodes in decimal (default):
  `sudo showkey {{-k|--keycodes}}`
- Display keycodes in ASCII, decimal, and hexadecimal:
  `sudo showkey {{-a|--ascii}}`
- Exit the program:
  `<Ctrl d>`

*Source: tldr-pages*

---

[_SHOWKEY_(1)](https://www.chedong.com/phpMan.php/man/SHOWKEY/1/markdown)                             General Commands Manual                            [_SHOWKEY_(1)](https://www.chedong.com/phpMan.php/man/SHOWKEY/1/markdown)

## 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 ker‐
       nel does not associate a keycode, and, after finding out what these are, the user can  assign
       keycodes with [**setkeycodes**(8)](https://www.chedong.com/phpMan.php/man/setkeycodes/8/markdown).

       When in the default keycode dump mode, **showkey **prints to the standard output the keycode num‐
       ber  or  each  key  pressed or released. The kind of the event, press or release, is also re‐
       ported.  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 mul‐
       tiple 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.

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

kbd                                          1 Feb 1998                                   [_SHOWKEY_(1)](https://www.chedong.com/phpMan.php/man/SHOWKEY/1/markdown)
