summaryrefslogtreecommitdiffstats
path: root/upstream/debian-bookworm/man5/keymaps.5
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/debian-bookworm/man5/keymaps.5')
-rw-r--r--upstream/debian-bookworm/man5/keymaps.5434
1 files changed, 434 insertions, 0 deletions
diff --git a/upstream/debian-bookworm/man5/keymaps.5 b/upstream/debian-bookworm/man5/keymaps.5
new file mode 100644
index 00000000..7d3c2f62
--- /dev/null
+++ b/upstream/debian-bookworm/man5/keymaps.5
@@ -0,0 +1,434 @@
+.\" keymaps.5 - Copyright (C) Andries Brouwer 1998
+.\" May be freely distributed.
+.\" @(#)keymaps.5 1.10 940130 aeb
+.TH KEYMAPS 5 "24 April 1998" "kbd"
+.SH NAME
+keymaps \- keyboard table descriptions for loadkeys and dumpkeys
+.SH DESCRIPTION
+.LP
+These files are used by
+.BR loadkeys (1)
+to modify the translation tables used by the kernel keyboard driver
+and generated by
+.BR dumpkeys (1)
+from those translation tables.
+.LP
+The format of these files is vaguely similar to the one accepted by
+.BR xmodmap (1).
+The file consists of charset or key or string definition lines
+interspersed with comments.
+.LP
+Comments are introduced with
+.B !
+or
+.B #
+characters and continue to the end of the line. Anything following one
+of these characters on that line is ignored. Note that comments need
+not begin from column one as with
+.BR xmodmap (1).
+.LP
+The syntax of keymap files is line oriented; a complete definition
+must fit on a single logical line. Logical lines can, however, be split
+into multiple physical lines by ending each subline with the backslash
+character (\\).
+.SH "INCLUDE FILES"
+A keymap can include other keymaps using the syntax
+.LP
+.RS
+include "pathname"
+.RE
+.LP
+.SH "CHARSET DEFINITIONS"
+A character set definition line is of the form:
+.LP
+.RS
+.EX
+charset "iso-8859-x"
+.EE
+.RE
+.LP
+It defines how following keysyms are to be interpreted.
+For example, in iso-8859-1 the symbol mu (or micro) has code 0265,
+while in iso-8859-7 the letter mu has code 0354.
+.SH "COMPLETE KEYCODE DEFINITIONS"
+Each complete key definition line is of the form:
+.LP
+.RS
+.nf
+.BI keycode " keynumber " = " keysym keysym keysym" \fR...
+.fi
+.RE
+.LP
+.I keynumber
+is the internal identification number of the key, roughly equivalent to
+the scan code of it.
+.I keynumber
+can be given in decimal, octal or hexadecimal notation.
+Octal is denoted by a leading zero and hexadecimal by the prefix
+.B 0x.
+.LP
+Each of the
+.I keysyms
+represent keyboard actions, of which up to 256 can be bound to a single
+key. The actions available include outputting character codes or
+character sequences, switching consoles or keymaps, booting the machine
+etc. (The complete list can be obtained from
+.BR dumpkeys (1)
+by saying
+.B " dumpkeys -l"
+\&.)
+.LP
+Each
+.I keysym
+may be prefixed by a '+' (plus sign), in which case this keysym is treated
+as a "letter" and therefore affected by the "CapsLock" the same way as by
+"Shift" (to be correct, the CapsLock inverts the Shift state).
+The ASCII letters ('a'-'z' and 'A'-'Z') are made CapsLock'able by default.
+If Shift+CapsLock should not produce a lower case symbol, put lines like
+.LP
+.RS
+.nf
+.B "keycode 30 = +a A"
+.fi
+.RE
+.LP
+in the map file.
+.LP
+Which of the actions bound to a given key is taken when it is pressed
+depends on what modifiers are in effect at that moment.
+The keyboard driver supports 9 modifiers. These modifiers are labeled
+(completely arbitrarily) Shift, AltGr, Control, Alt, ShiftL, ShiftR,
+CtrlL, CtrlR and CapsShift.
+Each of these modifiers has an associated weight of power of two
+according to the following table:
+
+.ev table
+.LP
+.RS
+.TP 20
+.I modifier
+.I weight
+.P
+.ta T 24R
+Shift 1
+.br
+AltGr 2
+.br
+Control 4
+.br
+Alt 8
+.br
+ShiftL 16
+.br
+ShiftR 32
+.br
+CtrlL 64
+.br
+CtrlR 128
+.br
+CapsShift 256
+.RE
+.LP
+.ev
+The effective action of a key is found out by adding up the weights of
+all the modifiers in effect. By default, no modifiers are in effect, so
+action number zero, i.e. the one in the first column in a key definition
+line, is taken when the key is pressed or released. When e.g. Shift and
+Alt modifiers are in effect, action number nine (from the 10th column)
+is the effective one.
+.LP
+Changing the state of what modifiers are in effect can be achieved by
+binding appropriate key actions to desired keys. For example, binding
+the symbol Shift to a key sets the Shift modifier in effect when that
+key is pressed and cancels the effect of that modifier when the key is
+released. Binding AltGr_Lock to a key sets AltGr in effect when the key
+is pressed and cancels the effect when the key is pressed again.
+(By default Shift, AltGr, Control and Alt are bound to the keys that bear
+a similar label; AltGr may denote the right Alt key.)
+.LP
+Note that you should be very careful when binding the modifier keys,
+otherwise you can end up with an unusable keyboard mapping. If you for
+example define a key to have Control in its first column and leave the
+rest of the columns to be VoidSymbols, you're in trouble. This is
+because pressing the key puts Control modifier in effect and the
+following actions are looked up from the fifth column (see the table
+above). So, when you release the key, the action from the fifth column
+is taken. It has VoidSymbol in it, so nothing happens. This means that
+the Control modifier is still in effect, although you have released the key.
+Re-pressing and releasing the key has no effect. To avoid this,
+you should always define all the columns to have the same modifier
+symbol. There is a handy short-hand notation for this, see below.
+.LP
+.I keysyms
+can be given in decimal, octal, hexadecimal, unicode or symbolic notation.
+The numeric notations use the same format as with
+.IR keynumber .
+Unicode notation is "U+" followed by four hexadecimal digits.
+The symbolic notation resembles that used by
+.BR xmodmap (1).
+Notable differences are the number symbols. The numeric
+symbols '0', ..., '9' of
+.BR xmodmap (1)
+are replaced with the corresponding words 'zero', 'one', ... 'nine' to
+avoid confusion with the numeric notation.
+.LP
+It should be noted that using numeric notation for the
+.I keysyms
+is highly unportable as the key action numbers may vary from one kernel
+version to another and the use of numeric notations is thus strongly
+discouraged. They are intended to be used only when you know there is a
+supported keyboard action in your kernel for which your current version
+of
+.BR loadkeys (1)
+has no symbolic name.
+.LP
+There is a number of short-hand notations to add readability and reduce
+typing work and the probability of typing-errors.
+.LP
+First of all, you can give a map specification line, of the form
+.LP
+.RS
+.EX
+keymaps 0-2,4-5,8,12
+.EE
+.RE
+.LP
+to indicate that the lines of the keymap will not specify all 256 columns,
+but only the indicated ones. (In the example: only the plain, Shift,
+AltGr, Control, Control+Shift, Alt and Control+Alt maps, that is, 7 columns
+instead of 256.)
+When no such line is given, the keymaps 0-M will be defined, where
+M+1 is the maximum number of entries found in any definition line.
+.LP
+Next, you can leave off any trailing VoidSymbol entries from a key
+definition line. VoidSymbol denotes a keyboard action which produces no
+output and has no other effects either. For example, to define key
+number 30 to output 'a' unshifted, 'A' when pressed with Shift and do
+nothing when pressed with AltGr or other modifiers, you can write
+.LP
+.RS
+.nf
+keycode 30 = a A
+.fi
+.RE
+.LP
+instead of the more verbose
+.LP
+.RS
+.nf
+keycode 30 = a A VoidSymbol VoidSymbol \\
+ VoidSymbol VoidSymbol VoidSymbol ...
+.fi
+.RE
+.LP
+For added convenience, you can usually get off with still more terse
+definitions. If you enter a key definition line with only and exactly
+one action code after the equals sign, it has a special meaning. If the
+code (numeric or symbolic) is not an ASCII letter, it means the code
+is implicitly replicated through all columns being defined.
+If, on the other hand, the action code is an ASCII character in the
+range 'a', ..., 'z' or 'A', ..., 'Z' in the ASCII collating sequence,
+the following definitions are made for the different modifier combinations,
+provided these are actually being defined.
+(The table lists the two possible cases:
+either the single action code is a lower case letter,
+denoted by 'x' or an upper case letter, denoted by 'Y'.)
+.LP
+.RS 4
+.TP 24
+.I modifier
+.I symbol
+.TP 24
+none
+x Y
+.PD 0
+.TP 24
+Shift
+X y
+.TP 24
+AltGr
+x Y
+.TP 24
+Shift+AltGr
+X y
+.TP 24
+Control
+Control_x Control_y
+.TP 24
+Shift+Control
+Control_x Control_y
+.TP 24
+AltGr+Control
+Control_x Control_y
+.TP 24
+Shift+AltGr+Control
+Control_x Control_y
+.TP 24
+Alt
+Meta_x Meta_Y
+.TP 24
+Shift+Alt
+Meta_X Meta_y
+.TP 24
+AltGr+Alt
+Meta_x Meta_Y
+.TP 24
+Shift+AltGr+Alt
+Meta_X Meta_y
+.TP 24
+Control+Alt
+Meta_Control_x Meta_Control_y
+.TP 24
+Shift+Control+Alt
+Meta_Control_x Meta_Control_y
+.TP 24
+AltGr+Control+Alt
+Meta_Control_x Meta_Control_y
+.TP 24
+Shift+AltGr+Control+Alt
+Meta_Control_x Meta_Control_y
+.PD
+.RE
+.LP
+.SH "SINGLE MODIFIER DEFINITIONS"
+All the previous forms of key definition lines always define all the M+1
+possible modifier combinations being defined, whether the line actually
+contains that many action codes or not.
+There is, however, a variation of the definition
+syntax for defining only single actions to a particular modifier
+combination of a key. This is especially useful, if you load a keymap
+which doesn't match your needs in only some modifier combinations, like
+AltGr+function keys. You can then make a small local file redefining
+only those modifier combinations and loading it after the main file.
+The syntax of this form is:
+.LP
+.BR "" { " plain " "| <modifier sequence> } " keycode
+.I keynumber
+.B =
+.I keysym
+.LP
+, e.g.,
+.RS
+.EX
+.nf
+plain keycode 14 = BackSpace
+control alt keycode 83 = Boot
+alt keycode 105 = Decr_Console
+alt keycode 106 = Incr_Console
+.fi
+.EE
+.RE
+Using "plain" will define only the base entry of a
+key (i.e. the one with no modifiers in effect) without affecting the
+bindings of other modifier combinations of that key.
+.SH "STRING DEFINITIONS"
+In addition to comments and key definition lines, a keymap can
+contain string definitions. These are used to define what each function
+key action code sends. The syntax of string definitions is:
+.LP
+.RS
+.B string
+.I keysym
+.B =
+.BI """" text """"
+.RE
+.LP
+.I text
+can contain literal characters, octal character codes in the format of
+backslash followed by up to three octal digits, and the three escape
+sequences \fB\\n\fP, \fB\\\\\fP, and \fB\\"\fP,
+for newline, backslash and quote, respectively.
+.SH "COMPOSE DEFINITIONS"
+Then there may also be compose definitions. They have syntax
+.LP
+.RS
+.BI "compose '" char "' '" char "' to '" char "'"
+.RE
+and describe how two bytes are combined to form a third one
+(when a dead accent or compose key is used).
+This is used to get accented letters and the like on a standard
+keyboard.
+.SH ABBREVIATIONS
+Various abbreviations can be used with kbd-0.96 and later.
+.TP
+.B "strings as usual"
+Defines the usual values of the strings (but not the keys
+they are bound to).
+.TP
+\fBcompose as usual for "iso-8859-1"\fP
+Defines the usual compose combinations.
+.LP
+To find out what
+.I keysyms
+there are available for use in keymaps, use the command
+.LP
+.RS
+.nf
+.B dumpkeys --long-info
+.fi
+.RE
+.LP
+Unfortunately, there is currently no description of what each symbol
+does. It has to be guessed from the name or figured out from the kernel
+sources.
+.LP
+.SH EXAMPLES
+(Be careful to use a keymaps line, like the first line of `dumpkeys`,
+or "keymaps 0-15" or so.)
+.LP
+The following entry exchanges the left Control key and the Caps Lock
+key on the keyboard:
+.LP
+.RS
+.nf
+keycode 58 = Control
+keycode 29 = Caps_Lock
+.fi
+.RE
+.LP
+Key number 58 is normally the Caps Lock key, and key number 29 is
+normally the Control key.
+.LP
+The following entry sets the Shift and Caps Lock keys to behave more
+nicely, like in older typewriters. That is, pressing Caps Lock key once
+or more sets the keyboard in CapsLock state and pressing either of the
+Shift keys releases it.
+.LP
+.RS
+.nf
+keycode 42 = Uncaps_Shift
+keycode 54 = Uncaps_Shift
+keycode 58 = Caps_On
+.fi
+.RE
+.LP
+The following entry sets the layout of the edit pad in the enhanced
+keyboard to be more like that in the VT200 series terminals:
+.LP
+.RS
+.nf
+keycode 102 = Insert
+keycode 104 = Remove
+keycode 107 = Prior
+shift keycode 107 = Scroll_Backward
+keycode 110 = Find
+keycode 111 = Select
+control alt keycode 111 = Boot
+control altgr keycode 111 = Boot
+.fi
+.RE
+.LP
+Here's an example to bind the string "du\\ndf\\n" to the key AltGr-D. We use
+the "spare" action code F100 not normally bound to any key.
+.LP
+.RS
+.nf
+altgr keycode 32 = F100
+string F100 = "du\\ndf\\n"
+.RE
+.LP
+.SH "SEE ALSO"
+.BR loadkeys (1),
+.BR dumpkeys (1),
+.BR showkey (1),
+.BR xmodmap (1)