diff options
Diffstat (limited to 'upstream/debian-bookworm/man5/keymaps.5')
-rw-r--r-- | upstream/debian-bookworm/man5/keymaps.5 | 434 |
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) |