aboutsummaryrefslogtreecommitdiffstats
path: root/doc/info/mds.texinfo
diff options
context:
space:
mode:
Diffstat (limited to 'doc/info/mds.texinfo')
-rw-r--r--doc/info/mds.texinfo83
1 files changed, 80 insertions, 3 deletions
diff --git a/doc/info/mds.texinfo b/doc/info/mds.texinfo
index d1b8514..7b7f288 100644
--- a/doc/info/mds.texinfo
+++ b/doc/info/mds.texinfo
@@ -6752,7 +6752,11 @@ Right @kbd{super} key
@node Keyboard Layouts
@chapter Keyboard Layouts
-Keyboard layouts as compiled from one or more files.
+@cpindex Keyboard layouts, files
+@cpindex Keyboard layouts, compile
+@cpindex Compiling keyboard layouts
+@fnindex @command{mds-kbdc}
+Keyboard layouts are compiled from one or more files.
When compiling a layout from multiple files, it is
important that the files are specified in the correct
order. The general rule is that the layout file,
@@ -6783,9 +6787,11 @@ and not in the layouts.
@node Keyboard Layout Syntax
@section Keyboard Layout Syntax
+@cpindex Keyboard layout, files, syntax
+@cpindex Syntax of keyboard layout file
Similar to the C programming language, keyboard layout
files are parsed from the top down. This means that any
-function or macro can only be used from lines beload
+function or macro can only be used from lines below
the definition of said callable. However, the order of
the mapping statements themself, in respect to each
other, does not matter. Additionally, the layout files
@@ -6877,6 +6883,8 @@ If we want to add a mapping to @kbd{ultra} from
@code{-altgr} means that @kbd{altgr} should
not be reported as held down.
+@cpindex Lock keys
+@cpindex Keys, lock
As can be seen in these examples it is not
possible to distinguish between modifiers
and keys. It is up to the keyboard layout
@@ -6937,6 +6945,12 @@ Special characters like simple double quotes,
backspace and, in @code{<>}-notation, greater than
sign must be escaped with a prepending backslash.
+@cpindex Dead keys
+@cpindex Compose key
+@cpindex Modifier keys
+@cpindex Keys, dead
+@cpindex Keys, compose
+@cpindex Keys, modifiers
Many keyboard layouts also have dead keys.
Dead keys are keys that affect the next key-press.
For example, `´' followed by `e' may product `é'.
@@ -6951,6 +6965,8 @@ keycode 125, as a dead keys write
<keycode 125> : <dead compose>
@end example
+@cpindex Duplicate keys
+@cpindex Keys, duplicates
Some may appear on multiple locations on the keyboard,
for example, there may be a left and a right shift key,
and a normal return key and one on the keypad:
@@ -6962,6 +6978,8 @@ and a normal return key and one on the keypad:
<keycode 96> : <keypad return>
@end example
+@cpindex Arrow keys
+@cpindex Keys, arrows
Because @code{<left>} and @code{<right>} are
valid keys --- they are arrow keys --- it is
importatn to place them directly before the
@@ -6976,6 +6994,13 @@ goes first.
@node Sequence Mapping
@subsection Sequence Mapping
+@cpindex Dead keys
+@cpindex Compose key
+@cpindex Keys, dead
+@cpindex Keys, compose
+@cpindex Compose tables
+@cpindex Key sequences
+@cpindex Sequence, keys
Compose tables use mapping statements to map
key sequences. For example the compose key
followed by two `s':es makes an `ß':
@@ -6998,7 +7023,7 @@ a sequence:
<super tab> : <tab> <tab> <tab> <tab>
@end example
-En alternative to @kbd{compose} as a dead key,
+An alternative to @kbd{compose} as a dead key,
is @kbd{compose} as a modifier. If you use this,
the compose table need to be written for just
that. There two ways do this this. Either you
@@ -7034,6 +7059,11 @@ you can write
<dead compose> ("S" "|") : "$"
@end example
+@cpindex Key subsequences, unordered
+@cpindex Subsequence, unordered, keys
+@cpindex Unordered subsequence, keys
+@cpindex Alternation, keys
+@cpindex Key alternations
@code{( )} denotes an unordered subsequence.
You can also use @code{[ ]} for alternation.
For example, instead of
@@ -7109,6 +7139,8 @@ double brackets:
@node Keyboard Layout Identification
@subsection Keyboard Layout Identification
+@cpindex Keyboard layout identification
+@cpindex Identification of keyboard layouts
Whilst it is possible to write a comment
that states what keyboard layout a file
implements, there is a standardise way
@@ -7132,6 +7164,12 @@ information
end information
@end example
+@cpindex Keyboard layout country
+@cpindex Keyboard layout language
+@cpindex Keyboard layout variant
+@cpindex Country, keyboard layout
+@cpindex Language, keyboard layout
+@cpindex Variant, keyboard layout
If the layout is used multiple countries,
or even for multiple lanuages, @code{country}
and @code{language} may be specified on
@@ -7181,6 +7219,9 @@ end information
@node Layout Assumptions
@subsection Layout Assumptions
+@cpindex Keyboard layout, file inclusion
+@cpindex File inclusion, keyboard layout
+@cpindex Inclusion of file, keyboard layout
When writing generic compose tables it can be helpful
to let the compiler assume that a certain set of keys
will be provided by the layout file and not making
@@ -7219,6 +7260,9 @@ end assumption
@node Include Statement
@subsection Include Statement
+@cpindex Keyboard layout, file inclusion
+@cpindex File inclusion, keyboard layout
+@cpindex Inclusion of file, keyboard layout
Writing layout files from scratch is probably something
you want to avoid. For instance you would we need to
create mappings for `A' to `Z' and `0' to `9' (assuming
@@ -7243,6 +7287,8 @@ include "../common/base"
@node Layout Macros and Functions
@subsection Layout Macros and Functions
+@cpindex Keyboard layout, macros
+@cpindex Macros, keyboard layout
There is a lot of repetitive work in layouts, for instance
all letters need mapping for any combination of use of
@kbd{shift} and @kbd{compose}. To reduce this, you can
@@ -7310,6 +7356,8 @@ letter("ö" "Ö")
@code{\add( )} and @code{\sub( )} are calls to two
built-in functions named `add/2' and `sub/2'.
+@cpindex Alternation, keys
+@cpindex Key alternations
Alternation can be used to invoke a macro:
@ifset AFOURPAPER
@@ -7326,6 +7374,8 @@ letter(["u" "v" "w" "x" "y" "z"])
@end example
@end ifclear
+@cpindex Alternation, keys
+@cpindex Key alternations
You may use `.' in an alternation, in that case
macro is called once with the argument, causing it
to invoke for example `letter/0' instead of
@@ -7400,6 +7450,9 @@ to or greater than 2 to the power of 31 not
allowed and can either cause compile-time
error or erroneous compiled files.
+
+@cpindex Keyboard layout, macros
+@cpindex Macros, keyboard layout
Functions are similar to function macros,
the difference is that a function is called
inline and is prefixed with slash, and rather
@@ -7502,6 +7555,10 @@ restricted to the 31:th power of 2.
@node Escaping
@subsection Escaping
+@cpindex Keyboard layout, Escaping special character
+@cpindex Keyboard layout, special character, escaping
+@cpindex Escaping special character, keyboard layout
+@cpindex Special character, escaping, keyboard layout
Similar to most, if not all, programming language, a
backslash inside quotes can be used to parse the next
character with special meaning. For instance, `\"' is
@@ -7555,12 +7612,17 @@ power of 2 also invoke undefined behaviour.
@node Builtin Functions
@section Builtin Functions
+@cpindex Keyboard layout, functions, builtin
+@cpindex Keyboard layout, builtin functions
+@cpindex Functions, builtin, keyboard layout
+@cpindex Builtin functions, keyboard layout
To help you write meaningful functions in your keyboard
layout files, the compiler defines an almost minimal set
of basic functions:
@table @code
@item add/2
+@fnindex @code{add/2}
The code points in \1 plus the code points of the
corresponding characters in \2. If \1 and \2 are
not of the same length, the returned string will
@@ -7568,50 +7630,65 @@ be of the length of the longer of the parameters,
and modulo is used to map to the corresponing
character.
@item sub/2
+@fnindex @code{sub/2}
Like `add/2' but subtraction.
@item mul/2
+@fnindex @code{mul/2}
Like `add/2' but multiplication.
@item div/2
+@fnindex @code{div/2}
Like `add/2' but division.
@item mod/2
+@fnindex @code{mod/2}
Like `add/2' but modulo.
@item rsh/2
+@fnindex @code{rsh/2}
Like `add/2' but rightward bitwise shift.
If a character in \2 is has a code point
greater than 30, undefined behaviour is
invoked.
@item lsh/2
+@fnindex @code{lsh/2}
Like `add/2' but leftward bitwise shift.
If a character in \2 is has a code point
greater than 30, undefined behaviour is
invoked.
@item or/2
+@fnindex @code{or/2}
Like `add/2' but bitwise OR.
@item and/2
+@fnindex @code{and/2}
Like `add/2' but bitwise AND.
@item xor/2
+@fnindex @code{xor/2}
Like `add/2' but bitwise XOR.
@item not/1
+@fnindex @code{not/1}
For each character in \1, evaluate to
zero if the character is not zero, and
one if the character is zero.
@item equals/2
+@fnindex @code{equals/2}
For each character, evalute to one if
the characters in \1 and \2 are equal
and zero otherwise.
@item greater/2
+@fnindex @code{greater/2}
Like `equals/2' but \1 greater than \2
rather than \1 equals \2.
@item less/2
+@fnindex @code{less/2}
Like `equals/2' but \1 less than \2
rather than \1 equals \2.
@item set/3
+@fnindex @code{set/3}
Set the element with index \2, in the
array with variable index \1, to \3,
and return \3.
For example @code{\set(1 0 4)} sets the
first element in \1 to 4.
@item get/2
+@fnindex @code{get/2}
Return the element with index \2 in the
array with variable index \1.
For example after @code{\set(1 0 4)} or