diff --git a/docs/man/man1/showkey.1 b/docs/man/man1/showkey.1 index 7a5b8e1..7690e99 100644 --- a/docs/man/man1/showkey.1 +++ b/docs/man/man1/showkey.1 @@ -84,6 +84,19 @@ 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 NOTES +The raw scan codes are available only on AT and PS/2 keyboards, +and even then they are disabled unless the +.B atkbd.softraw=0 +kernel parameter is used. +When the raw scan codes are not available, the kernel uses a fixed built-in +table to produce scan codes from keycodes. Thus, +.BR setkeycodes (8) +can affect the output of +.B showkey +in scan code dump mode. + .SH "SEE ALSO" .BR loadkeys (1), .BR dumpkeys (1), diff --git a/docs/man/man1/showkey.1.keycodes-man b/docs/man/man1/showkey.1.keycodes-man new file mode 100644 index 0000000..7a5b8e1 --- /dev/null +++ b/docs/man/man1/showkey.1.keycodes-man @@ -0,0 +1,91 @@ +.\" @(#)showkey.1 1.1 980201 aeb +.TH SHOWKEY 1 "1 Feb 1998" +.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) diff --git a/docs/man/man8/setkeycodes.8 b/docs/man/man8/setkeycodes.8 index 8cad162..3fb7d4a 100644 --- a/docs/man/man8/setkeycodes.8 +++ b/docs/man/man8/setkeycodes.8 @@ -38,6 +38,10 @@ to showkey(1), the command .RE 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 +.B setkeycodes +doesn't affect them at all. .LP Some older kernels might hardwire a low scancode range to the equivalent keycodes; setkeycodes will fail when you try to remap @@ -56,6 +60,14 @@ None. .SH 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. + +.B setkeycodes +affects only the "first" input device +that has modifiable scancode-to-keycode mapping. +If there is more than one such device, +.B setkeycodes +cannot change the mapping of other devices than the "first" one. + .SH "SEE ALSO" .I "dumpkeys (1), loadkeys (1), showkey (1), getkeycodes (8)" diff --git a/docs/man/man8/setkeycodes.8.keycodes-man b/docs/man/man8/setkeycodes.8.keycodes-man new file mode 100644 index 0000000..8cad162 --- /dev/null +++ b/docs/man/man8/setkeycodes.8.keycodes-man @@ -0,0 +1,62 @@ +.\" @(#)man/man8/setkeycodes.8 1.0 Nov 8 22:30:48 MET 1994 +.TH SETKEYCODES 8 "8 Nov 1994" "Local" "Keyboard Support" +.SH NAME +setkeycodes \- load kernel scancode-to-keycode mapping table entries +.SH SYNOPSIS +.B setkeycodes +.I "scancode keycode ..." +.SH DESCRIPTION +The +.I 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. + +.SH THEORY +The usual PC keyboard produces a series of scancodes for each +key press and key release. (Scancodes are shown by +\fBshowkey \-s\fP, 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 \fBshowkey\fP.) +Apart from a few scancodes with special meaning, and apart from +the sequence 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 produces e0 6f according +to showkey(1), the command +.RS +.B "setkeycodes e06f 112" +.RE +will assign the keycode 112 to it, and then loadkeys(1) can be used +to define the function of this key. +.LP +Some older kernels might hardwire a low scancode range to the +equivalent keycodes; setkeycodes will fail when you try to remap +these. + +.SH "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.) +.LP +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 +.BR showkey (1). +.SH OPTIONS +None. +.SH 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. +.SH "SEE ALSO" +.I "dumpkeys (1), loadkeys (1), showkey (1), getkeycodes (8)" + +