1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
.\" @(#)showkey.1 1.1 980201 aeb
.TH SHOWKEY 1 "1 Feb 1998" "kbd"
.SH NAME
showkey \- examine the codes sent by the keyboard
.SH SYNOPSIS
showkey [\-h|\-\-help] [\-a|\-\-ascii] [\-s|\-\-scancodes] [\-k|\-\-keycodes] [\-V|\-\-version]
.SH DESCRIPTION
.IX "showkey command" "" "\fLshowkey\fR command"
.LP
.B 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.
.LP
When in scancode dump mode,
.B 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
.BR setkeycodes (8).
.LP
When in the default keycode dump mode,
.B 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
.B showkey
in this mode, you can find out what numbers to use in your personalized
keymap files.
.LP
When in `ascii' dump mode,
.B showkey
prints to the standard output the decimal, octal, and hexadecimal
value(s) of the key pressed, according to he present keymap.
.SH OPTIONS
.TP
\-h \-\-help
.B showkey
prints to the standard error output its version number, a compile
option and a short usage message, then exits.
.TP
\-s \-\-scancodes
Starts
.B showkey
in scan code dump mode.
.TP
\-k \-\-keycodes
Starts
.B showkey
in keycode dump mode. This is the default, when no command line options
are present.
.TP
\-a \-\-ascii
Starts
.B showkey
in `ascii' dump mode.
.TP
\-V \-\-version
.B showkey
prints version number and exits.
.SH "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.
.LP
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.
.SH "SEE ALSO"
.BR loadkeys (1),
.BR dumpkeys (1),
.BR keymaps (5),
.BR setkeycodes (8)
|