diff options
author | marha <marha@users.sourceforge.net> | 2010-09-04 20:35:29 +0000 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2010-09-04 20:35:29 +0000 |
commit | 86f0d840164841d04abfea284e2d9be5ba742537 (patch) | |
tree | b9bab35a924b788e6e3c96a81307ae2736648187 /libX11/man/xkb/XkbApplyCompatMapToKey.man | |
parent | f2523be58f4546b530ab03ece3a9dd1183f4deec (diff) | |
parent | ff7fa74dd9fde036f79d02e5810dd5ded98dae59 (diff) | |
download | vcxsrv-86f0d840164841d04abfea284e2d9be5ba742537.tar.gz vcxsrv-86f0d840164841d04abfea284e2d9be5ba742537.tar.bz2 vcxsrv-86f0d840164841d04abfea284e2d9be5ba742537.zip |
svn merge ^/branches/released .
Diffstat (limited to 'libX11/man/xkb/XkbApplyCompatMapToKey.man')
-rw-r--r-- | libX11/man/xkb/XkbApplyCompatMapToKey.man | 724 |
1 files changed, 362 insertions, 362 deletions
diff --git a/libX11/man/xkb/XkbApplyCompatMapToKey.man b/libX11/man/xkb/XkbApplyCompatMapToKey.man index 288213f6d..c1a414661 100644 --- a/libX11/man/xkb/XkbApplyCompatMapToKey.man +++ b/libX11/man/xkb/XkbApplyCompatMapToKey.man @@ -1,362 +1,362 @@ -'\" t -.\" Copyright 1999 Sun Microsystems, Inc. All rights reserved. -.\" -.\" Permission is hereby granted, free of charge, to any person obtaining a -.\" copy of this software and associated documentation files (the "Software"), -.\" to deal in the Software without restriction, including without limitation -.\" the rights to use, copy, modify, merge, publish, distribute, sublicense, -.\" and/or sell copies of the Software, and to permit persons to whom the -.\" Software is furnished to do so, subject to the following conditions: -.\" -.\" The above copyright notice and this permission notice (including the next -.\" paragraph) shall be included in all copies or substantial portions of the -.\" Software. -.\" -.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -.\" DEALINGS IN THE SOFTWARE. -.\" -.TH XkbApplyCompatMapToKey __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" -.SH NAME -XkbApplyCompatMapToKey \- Apply the new compatibility mapping to an individual -key to get its semantics updated -.SH SYNOPSIS -.HP -.B Bool XkbApplyCompatMapToKey -.BI "(\^XkbDescPtr " "xkb" "\^," -.BI "KeyCode " "key" "\^," -.BI "XkbChangesPtr " "changes" "\^);" -.if n .ti +5n -.if t .ti +.5i -.SH ARGUMENTS -.TP -.I \- xkb -keyboard description to be updated -.TP -.I \- key -key to be updated -.TP -.I \- changes -notes changes to the Xkb keyboard description -.SH DESCRIPTION -.LP -.I XkbApplyCompatMapToKey -essentially performs the operation described in Core Keyboard Mapping to Xkb -Keyboard Mapping Transformation to a specific key. This updates the behavior, -actions, repeat status, and virtual modifier bindings of the key. - -.B Core Keyboard Mapping to Xkb Keyboard Mapping Transformation - -When a core protocol keyboard mapping request is received by the server, the -server's core keyboard map is updated, and then the Xkb map maintained by the -server is updated. Because a client may have explicitly configured some of the -Xkb keyboard mapping in the server, this automatic regeneration of the Xkb -keyboard mapping from the core protocol keyboard mapping should not modify any -components of the Xkb keyboard mapping that were explicitly set by a client. The -client must set explicit override controls to prevent this from happening (see -Explicit Components-Avoiding Automatic Remapping by the Server). The core-to-Xkb -mapping is done as follows: - -.B Explicit Components-Avoiding Automatic Remapping by the Server - -Whenever a client remaps the keyboard using core protocol requests, Xkb examines -the map to determine likely default values for the components that cannot be -specified using the core protocol. - -This automatic remapping might replace definitions explicitly requested by an -application, so the Xkb keyboard description defines an explicit components mask -for each key. Any aspects of the automatic remapping listed in the explicit -components mask for a key are not changed by the automatic keyboard mapping. - -The explicit components masks are held in the -.I explicit -field of the server map, which is an array indexed by keycode. Each entry in -this array is a mask that is a bitwise inclusive OR of the values shown in Table -1. - -.TS -c s s -l l l -l l lw(3i). -Table 1 Explicit Component Masks -_ -Bit in Explicit Mask Value Protects Against -_ -ExplicitKeyType1 (1<<0) T{ -Automatic determination of the key type associated with Group1. -T} -ExplicitKeyType2 (1<<1) T{ -Automatic determination of the key type associated with Group2. -T} -ExplicitKeyType3 (1<<2) T{ -Automatic determination of the key type associated with Group3. -T} -ExplicitKeyType4 (1<<3) T{ -Automatic determination of the key type associated with Group4. -T} -ExplicitInterpret (1<<4) T{ -Application of any of the fields of a symbol interpretation to the key in -question. -T} -ExplicitAutoRepeat (1<<5) T{ -Automatic determination of auto-repeat status for the key, as specified in a -symbol interpretation. -T} -ExplicitBehavior (1<<6) T{ -Automatic assignment of the XkbKB_Lock behavior to the key, if the -XkbSI_LockingKey flag is set in a symbol interpretation. -T} -ExplicitVModMap (1<<7) T{ -Automatic determination of the virtual modifier map for the key based on the -actions assigned to the key and the symbol interpretations that match the key. -T} -.TE -.TP 4 -1. -Map the symbols from the keys in the core keyboard map to groups and symbols on -keys in the Xkb keyboard map. The core keyboard mapping is of fixed width, so -each key in the core mapping has the same number of symbols associated with it. -The Xkb mapping allows a different number of symbols to be associated with each -key; those symbols may be divided into a different number of groups (1-4) for -each key. For each key, this process therefore involves partitioning the fixed -number of symbols from the core mapping into a set of variable-length groups -with a variable number of symbols in each group. For example, if the core -protocol map is of width five, the partition for one key might result in one -group with two symbols and another with three symbols. A different key might -result in two groups with two symbols plus a third group with one symbol. The -core protocol map requires at least two symbols in each of the first two groups. -.TP 4 -1a. -For each changed key, determine the number of groups represented in the new core -keyboard map. This results in a tentative group count for each key in the Xkb -map. -.TP 4 -1b. -For each changed key, determine the number of symbols in each of the groups -found in step 1a. There is one explicit override control associated with each of -the four possible groups for each Xkb key, ExplicitKeyType1 through -ExplicitKeyType4. If no explicit override control is set for a group, the number -of symbols used for that group from the core map is two. If the explicit -override control is set for a group on the key, the number of symbols used for -that Xkb group from the core map is the width of the Xkb group with one -exception: because of the core protocol requirement for at least two symbols in -each of groups one and two, the number of symbols used for groups one and two is -the maximum of 2 or the width of the Xkb group. -.TP 4 -1c. -For each changed key, assign the symbols in the core map to the appropriate -group on the key. If the total number of symbols required by the Xkb map for a -particular key needs more symbols than the core protocol map contains, the -additional symbols are taken to be NoSymbol keysyms appended to the end of the -core set. If the core map contains more symbols than are needed by the Xkb map, -trailing symbols in the core map are discarded. In the absence of an explicit -override for group one or two, symbols are assigned in order by group; the first -symbols in the core map are assigned to group one, in order, followed by group -two, and so on. For example, if the core map contained eight symbols per key, -and a particular Xkb map contained 2 symbols for G1 and G2 and three for G3, the -symbols would be assigned as (G is group, L is shift level): -.nf - - G1L1 G1L2 G2L1 G2L2 G3L1 G3L2 G3L3 - -.fi -If an explicit override control is set for group one or two, the symbols are -taken from the core set in a somewhat different order. The first four symbols -from the core set are assigned to G1L1, G1L2, G2L1, G2L2, respectively. If group -one requires more symbols, they are taken next, and then any additional symbols -needed by group two. Group three and four symbols are taken in complete sequence -after group two. For example, a key with four groups and three symbols in each -group would take symbols from the core set in the following order: -.nf - - G1L1 G1L2 G2L1 G2L2 G1L3 G2L3 G3L1 G3L2 G3L3 G4L1 G4L2 G4L3 - -.fi -As previously noted, the core protocol map requires at lease two symbols in -groups one and two. Because of this, if an explicit override control for an Xkb -key is set and group one and / or group two is of width one, it is not possible -to generate the symbols taken from the core protocol set and assigned to -position G1L2 and / or G2L2. -.TP 4 -1d. -For each group on each changed key, assign a key type appropriate for the -symbols in the group. -.TP 4 -1e. -For each changed key, remove any empty or redundant groups. - -At this point, the groups and their associated symbols have been assigned to the -corresponding key definitions in the Xkb map. -.TP 4 -2. -Apply symbol interpretations to modify key operation. This phase is completely -skipped if the ExplicitInterpret override control bit is set in the explicit -controls mask for the Xkb key (see Explicit Components-Avoiding Automatic -Remapping by the Server). -.TP 4 -2a. -For each symbol on each changed key, attempt to match the symbol and modifiers -from the Xkb map to a symbol interpretation describing how to generate the -symbol. -.TP 4 -2b. -When a match is found in step 2a, apply the symbol interpretation to change the -semantics associated with the symbol in the Xkb key map. If no match is found, -apply a default interpretation. -.LP -The symbol interpretations used in step 2 are configurable and may be specified -using XkbSymInterpretRec structures referenced by the sym_interpret field of an -XkbCompatMapRec. - -.B Symbol Interpretations - the XkbSymInterpretRec Structure - -Symbol interpretations are used to guide the X server when it modifies the Xkb -keymap in step 2. An initial set of symbol interpretations is loaded by the -server when it starts. A client may add new ones using XkbSetCompatMap. - -Symbol interpretations result in key semantics being set. When a symbol -interpretation is applied, the following components of server key event -processing may be modified for the particular key involved: -.nf - - Virtual modifier map - Auto repeat - Key behavior (may be set to XkbKB_Lock) - Key action - -.fi -The XkbSymInterpretRec structure specifies a symbol interpretation: -.nf - -typedef struct { - KeySym sym; /\(** keysym of interest or NULL */ - unsigned char flags; /\(** XkbSI_AutoRepeat, XkbSI_LockingKey */ - unsigned char match; /\(** specifies how mods is interpreted */ - unsigned char mods; /\(** modifier bits, correspond to eight real modifiers */ - unsigned char virtual_mod; /\(** 1 modifier to add to key virtual mod map */ - XkbAnyAction act; /\(** action to bind to symbol position on key */ -} XkbSymInterpretRec,*XkbSymInterpretPtr; - -.fi -If sym is not NULL, it limits the symbol interpretation to keys on which that -particular keysym is selected by the modifiers matching the criteria specified -by -.I mods -and -.I match. -If -.I sym -is NULL, the interpretation may be applied to any symbol selected on a key when -the modifiers match the criteria specified by -.I mods -and -.I match. - -.I match -must be one of the values shown in Table 2 and specifies how the real modifiers -specified in -.I mods -are to be interpreted. - -.TS -c s s -l l l -l l lw(3i). -Table 2 Symbol Interpretation Match Criteria -_ -Match Criteria Value Effect -_ -XkbSI_NoneOf (0) T{ -None of the bits that are on in mods can be set, but other bits can be. -T} -XkbSI_AnyOfOrNone (1) T{ -Zero or more of the bits that are on in mods can be set, as well as others. -T} -XkbSI_AnyOf (2) T{ -One or more of the bits that are on in mods can be set, as well as any others. -T} -XkbSI_AllOf (3) T{ -All of the bits that are on in mods must be set, but others may be set as well. -T} -XkbSI_Exactly (4) T{ -All of the bits that are on in mods must be set, and no other bits may be set. -T} -.TE - -In addition to the above bits, -.I match -may contain the XkbSI_LevelOneOnly bit, in which case the modifier match -criteria specified by -.I mods -and -.I match -applies only if -.I sym -is in level one of its group; otherwise, -.I mods -and -.I match -are ignored and the symbol matches a condition where no modifiers are set. -.nf - -\&#define XkbSI_LevelOneOnly (0x80) /\(** use mods + match only if sym is level 1 */ - -.fi -If no matching symbol interpretation is found, the server uses a default -interpretation where: -.nf - - sym = 0 - flags = XkbSI_AutoRepeat - match = XkbSI_AnyOfOrNone - mods = 0 - virtual_mod = XkbNoModifier - act = SA_NoAction - -.fi -When a matching symbol interpretation is found in step 2a, the interpretation is -applied to modify the Xkb map as follows. - -The -.I act -field specifies a single action to be bound to the symbol position; any key event that selects the symbol -causes the action to be taken. Valid actions are defined in Key Actions. - -If the Xkb keyboard map for the key does not have its ExplicitVModMap control set, the XkbSI_LevelOneOnly bit -and symbol position are examined. If the XkbSI_LevelOneOnly bit is not set in -.I match -or the symbol is in position G1L1, the -.I virtual_mod -field is examined. If -.I virtual_mod -is not XkbNoModifier, -.I virtual_mod -specifies a single virtual modifier to be added to the virtual modifier map for the key. -.I virtual_mod -is specified as an index in the range [0..15]. - -If the matching symbol is in position G1L1 of the key, two bits in the flags field potentially specify -additional behavior modifications: -.nf - -\&#define XkbSI_AutoRepeat (1<<0) /\(** key repeats if sym is in position G1L1 */ -\&#define XkbSI_LockingKey (1<<1) /\(** set KB_Lock behavior if sym is in psn G1L1 */ - -.fi -If the Xkb keyboard map for the key does not have its ExplicitAutoRepeat control set, its auto repeat behavior -is set based on the value of the XkbSI_AutoRepeat bit. If the XkbSI_AutoRepeat bit is set, the auto-repeat -behavior of the key is turned on; otherwise, it is turned off. - -If the Xkb keyboard map for the key does not have its ExplicitBehavior control set, its locking behavior is -set based on the value of the XkbSI_LockingKey bit. If XkbSI_LockingKey is set, the key behavior is set to -KB_Lock; otherwise, it is turned off. -.SH "SEE ALSO" -.BR XkbKeyAction (__libmansuffix__), -.BR XkbKeyActionEntry (__libmansuffix__), -.BR XkbKeyActionsPtr (__libmansuffix__), -.BR XkbKeyHasActions (__libmansuffix__), -.BR XkbKeyNumActions (__libmansuffix__) +'\" t
+.\" Copyright 1999 Oracle and/or its affiliates. All rights reserved.
+.\"
+.\" Permission is hereby granted, free of charge, to any person obtaining a
+.\" copy of this software and associated documentation files (the "Software"),
+.\" to deal in the Software without restriction, including without limitation
+.\" the rights to use, copy, modify, merge, publish, distribute, sublicense,
+.\" and/or sell copies of the Software, and to permit persons to whom the
+.\" Software is furnished to do so, subject to the following conditions:
+.\"
+.\" The above copyright notice and this permission notice (including the next
+.\" paragraph) shall be included in all copies or substantial portions of the
+.\" Software.
+.\"
+.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+.\" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+.\" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+.\" THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+.\" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+.\" FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+.\" DEALINGS IN THE SOFTWARE.
+.\"
+.TH XkbApplyCompatMapToKey __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
+.SH NAME
+XkbApplyCompatMapToKey \- Apply the new compatibility mapping to an individual
+key to get its semantics updated
+.SH SYNOPSIS
+.HP
+.B Bool XkbApplyCompatMapToKey
+.BI "(\^XkbDescPtr " "xkb" "\^,"
+.BI "KeyCode " "key" "\^,"
+.BI "XkbChangesPtr " "changes" "\^);"
+.if n .ti +5n
+.if t .ti +.5i
+.SH ARGUMENTS
+.TP
+.I \- xkb
+keyboard description to be updated
+.TP
+.I \- key
+key to be updated
+.TP
+.I \- changes
+notes changes to the Xkb keyboard description
+.SH DESCRIPTION
+.LP
+.I XkbApplyCompatMapToKey
+essentially performs the operation described in Core Keyboard Mapping to Xkb
+Keyboard Mapping Transformation to a specific key. This updates the behavior,
+actions, repeat status, and virtual modifier bindings of the key.
+
+.B Core Keyboard Mapping to Xkb Keyboard Mapping Transformation
+
+When a core protocol keyboard mapping request is received by the server, the
+server's core keyboard map is updated, and then the Xkb map maintained by the
+server is updated. Because a client may have explicitly configured some of the
+Xkb keyboard mapping in the server, this automatic regeneration of the Xkb
+keyboard mapping from the core protocol keyboard mapping should not modify any
+components of the Xkb keyboard mapping that were explicitly set by a client. The
+client must set explicit override controls to prevent this from happening (see
+Explicit Components-Avoiding Automatic Remapping by the Server). The core-to-Xkb
+mapping is done as follows:
+
+.B Explicit Components-Avoiding Automatic Remapping by the Server
+
+Whenever a client remaps the keyboard using core protocol requests, Xkb examines
+the map to determine likely default values for the components that cannot be
+specified using the core protocol.
+
+This automatic remapping might replace definitions explicitly requested by an
+application, so the Xkb keyboard description defines an explicit components mask
+for each key. Any aspects of the automatic remapping listed in the explicit
+components mask for a key are not changed by the automatic keyboard mapping.
+
+The explicit components masks are held in the
+.I explicit
+field of the server map, which is an array indexed by keycode. Each entry in
+this array is a mask that is a bitwise inclusive OR of the values shown in Table
+1.
+
+.TS
+c s s
+l l l
+l l lw(3i).
+Table 1 Explicit Component Masks
+_
+Bit in Explicit Mask Value Protects Against
+_
+ExplicitKeyType1 (1<<0) T{
+Automatic determination of the key type associated with Group1.
+T}
+ExplicitKeyType2 (1<<1) T{
+Automatic determination of the key type associated with Group2.
+T}
+ExplicitKeyType3 (1<<2) T{
+Automatic determination of the key type associated with Group3.
+T}
+ExplicitKeyType4 (1<<3) T{
+Automatic determination of the key type associated with Group4.
+T}
+ExplicitInterpret (1<<4) T{
+Application of any of the fields of a symbol interpretation to the key in
+question.
+T}
+ExplicitAutoRepeat (1<<5) T{
+Automatic determination of auto-repeat status for the key, as specified in a
+symbol interpretation.
+T}
+ExplicitBehavior (1<<6) T{
+Automatic assignment of the XkbKB_Lock behavior to the key, if the
+XkbSI_LockingKey flag is set in a symbol interpretation.
+T}
+ExplicitVModMap (1<<7) T{
+Automatic determination of the virtual modifier map for the key based on the
+actions assigned to the key and the symbol interpretations that match the key.
+T}
+.TE
+.TP 4
+1.
+Map the symbols from the keys in the core keyboard map to groups and symbols on
+keys in the Xkb keyboard map. The core keyboard mapping is of fixed width, so
+each key in the core mapping has the same number of symbols associated with it.
+The Xkb mapping allows a different number of symbols to be associated with each
+key; those symbols may be divided into a different number of groups (1-4) for
+each key. For each key, this process therefore involves partitioning the fixed
+number of symbols from the core mapping into a set of variable-length groups
+with a variable number of symbols in each group. For example, if the core
+protocol map is of width five, the partition for one key might result in one
+group with two symbols and another with three symbols. A different key might
+result in two groups with two symbols plus a third group with one symbol. The
+core protocol map requires at least two symbols in each of the first two groups.
+.TP 4
+1a.
+For each changed key, determine the number of groups represented in the new core
+keyboard map. This results in a tentative group count for each key in the Xkb
+map.
+.TP 4
+1b.
+For each changed key, determine the number of symbols in each of the groups
+found in step 1a. There is one explicit override control associated with each of
+the four possible groups for each Xkb key, ExplicitKeyType1 through
+ExplicitKeyType4. If no explicit override control is set for a group, the number
+of symbols used for that group from the core map is two. If the explicit
+override control is set for a group on the key, the number of symbols used for
+that Xkb group from the core map is the width of the Xkb group with one
+exception: because of the core protocol requirement for at least two symbols in
+each of groups one and two, the number of symbols used for groups one and two is
+the maximum of 2 or the width of the Xkb group.
+.TP 4
+1c.
+For each changed key, assign the symbols in the core map to the appropriate
+group on the key. If the total number of symbols required by the Xkb map for a
+particular key needs more symbols than the core protocol map contains, the
+additional symbols are taken to be NoSymbol keysyms appended to the end of the
+core set. If the core map contains more symbols than are needed by the Xkb map,
+trailing symbols in the core map are discarded. In the absence of an explicit
+override for group one or two, symbols are assigned in order by group; the first
+symbols in the core map are assigned to group one, in order, followed by group
+two, and so on. For example, if the core map contained eight symbols per key,
+and a particular Xkb map contained 2 symbols for G1 and G2 and three for G3, the
+symbols would be assigned as (G is group, L is shift level):
+.nf
+
+ G1L1 G1L2 G2L1 G2L2 G3L1 G3L2 G3L3
+
+.fi
+If an explicit override control is set for group one or two, the symbols are
+taken from the core set in a somewhat different order. The first four symbols
+from the core set are assigned to G1L1, G1L2, G2L1, G2L2, respectively. If group
+one requires more symbols, they are taken next, and then any additional symbols
+needed by group two. Group three and four symbols are taken in complete sequence
+after group two. For example, a key with four groups and three symbols in each
+group would take symbols from the core set in the following order:
+.nf
+
+ G1L1 G1L2 G2L1 G2L2 G1L3 G2L3 G3L1 G3L2 G3L3 G4L1 G4L2 G4L3
+
+.fi
+As previously noted, the core protocol map requires at lease two symbols in
+groups one and two. Because of this, if an explicit override control for an Xkb
+key is set and group one and / or group two is of width one, it is not possible
+to generate the symbols taken from the core protocol set and assigned to
+position G1L2 and / or G2L2.
+.TP 4
+1d.
+For each group on each changed key, assign a key type appropriate for the
+symbols in the group.
+.TP 4
+1e.
+For each changed key, remove any empty or redundant groups.
+
+At this point, the groups and their associated symbols have been assigned to the
+corresponding key definitions in the Xkb map.
+.TP 4
+2.
+Apply symbol interpretations to modify key operation. This phase is completely
+skipped if the ExplicitInterpret override control bit is set in the explicit
+controls mask for the Xkb key (see Explicit Components-Avoiding Automatic
+Remapping by the Server).
+.TP 4
+2a.
+For each symbol on each changed key, attempt to match the symbol and modifiers
+from the Xkb map to a symbol interpretation describing how to generate the
+symbol.
+.TP 4
+2b.
+When a match is found in step 2a, apply the symbol interpretation to change the
+semantics associated with the symbol in the Xkb key map. If no match is found,
+apply a default interpretation.
+.LP
+The symbol interpretations used in step 2 are configurable and may be specified
+using XkbSymInterpretRec structures referenced by the sym_interpret field of an
+XkbCompatMapRec.
+
+.B Symbol Interpretations - the XkbSymInterpretRec Structure
+
+Symbol interpretations are used to guide the X server when it modifies the Xkb
+keymap in step 2. An initial set of symbol interpretations is loaded by the
+server when it starts. A client may add new ones using XkbSetCompatMap.
+
+Symbol interpretations result in key semantics being set. When a symbol
+interpretation is applied, the following components of server key event
+processing may be modified for the particular key involved:
+.nf
+
+ Virtual modifier map
+ Auto repeat
+ Key behavior (may be set to XkbKB_Lock)
+ Key action
+
+.fi
+The XkbSymInterpretRec structure specifies a symbol interpretation:
+.nf
+
+typedef struct {
+ KeySym sym; /\(** keysym of interest or NULL */
+ unsigned char flags; /\(** XkbSI_AutoRepeat, XkbSI_LockingKey */
+ unsigned char match; /\(** specifies how mods is interpreted */
+ unsigned char mods; /\(** modifier bits, correspond to eight real modifiers */
+ unsigned char virtual_mod; /\(** 1 modifier to add to key virtual mod map */
+ XkbAnyAction act; /\(** action to bind to symbol position on key */
+} XkbSymInterpretRec,*XkbSymInterpretPtr;
+
+.fi
+If sym is not NULL, it limits the symbol interpretation to keys on which that
+particular keysym is selected by the modifiers matching the criteria specified
+by
+.I mods
+and
+.I match.
+If
+.I sym
+is NULL, the interpretation may be applied to any symbol selected on a key when
+the modifiers match the criteria specified by
+.I mods
+and
+.I match.
+
+.I match
+must be one of the values shown in Table 2 and specifies how the real modifiers
+specified in
+.I mods
+are to be interpreted.
+
+.TS
+c s s
+l l l
+l l lw(3i).
+Table 2 Symbol Interpretation Match Criteria
+_
+Match Criteria Value Effect
+_
+XkbSI_NoneOf (0) T{
+None of the bits that are on in mods can be set, but other bits can be.
+T}
+XkbSI_AnyOfOrNone (1) T{
+Zero or more of the bits that are on in mods can be set, as well as others.
+T}
+XkbSI_AnyOf (2) T{
+One or more of the bits that are on in mods can be set, as well as any others.
+T}
+XkbSI_AllOf (3) T{
+All of the bits that are on in mods must be set, but others may be set as well.
+T}
+XkbSI_Exactly (4) T{
+All of the bits that are on in mods must be set, and no other bits may be set.
+T}
+.TE
+
+In addition to the above bits,
+.I match
+may contain the XkbSI_LevelOneOnly bit, in which case the modifier match
+criteria specified by
+.I mods
+and
+.I match
+applies only if
+.I sym
+is in level one of its group; otherwise,
+.I mods
+and
+.I match
+are ignored and the symbol matches a condition where no modifiers are set.
+.nf
+
+\&#define XkbSI_LevelOneOnly (0x80) /\(** use mods + match only if sym is level 1 */
+
+.fi
+If no matching symbol interpretation is found, the server uses a default
+interpretation where:
+.nf
+
+ sym = 0
+ flags = XkbSI_AutoRepeat
+ match = XkbSI_AnyOfOrNone
+ mods = 0
+ virtual_mod = XkbNoModifier
+ act = SA_NoAction
+
+.fi
+When a matching symbol interpretation is found in step 2a, the interpretation is
+applied to modify the Xkb map as follows.
+
+The
+.I act
+field specifies a single action to be bound to the symbol position; any key event that selects the symbol
+causes the action to be taken. Valid actions are defined in Key Actions.
+
+If the Xkb keyboard map for the key does not have its ExplicitVModMap control set, the XkbSI_LevelOneOnly bit
+and symbol position are examined. If the XkbSI_LevelOneOnly bit is not set in
+.I match
+or the symbol is in position G1L1, the
+.I virtual_mod
+field is examined. If
+.I virtual_mod
+is not XkbNoModifier,
+.I virtual_mod
+specifies a single virtual modifier to be added to the virtual modifier map for the key.
+.I virtual_mod
+is specified as an index in the range [0..15].
+
+If the matching symbol is in position G1L1 of the key, two bits in the flags field potentially specify
+additional behavior modifications:
+.nf
+
+\&#define XkbSI_AutoRepeat (1<<0) /\(** key repeats if sym is in position G1L1 */
+\&#define XkbSI_LockingKey (1<<1) /\(** set KB_Lock behavior if sym is in psn G1L1 */
+
+.fi
+If the Xkb keyboard map for the key does not have its ExplicitAutoRepeat control set, its auto repeat behavior
+is set based on the value of the XkbSI_AutoRepeat bit. If the XkbSI_AutoRepeat bit is set, the auto-repeat
+behavior of the key is turned on; otherwise, it is turned off.
+
+If the Xkb keyboard map for the key does not have its ExplicitBehavior control set, its locking behavior is
+set based on the value of the XkbSI_LockingKey bit. If XkbSI_LockingKey is set, the key behavior is set to
+KB_Lock; otherwise, it is turned off.
+.SH "SEE ALSO"
+.BR XkbKeyAction (__libmansuffix__),
+.BR XkbKeyActionEntry (__libmansuffix__),
+.BR XkbKeyActionsPtr (__libmansuffix__),
+.BR XkbKeyHasActions (__libmansuffix__),
+.BR XkbKeyNumActions (__libmansuffix__)
|