diff options
Diffstat (limited to 'libX11/man/xkb/XkbKeyTypesForCoreSymbols.man')
-rw-r--r-- | libX11/man/xkb/XkbKeyTypesForCoreSymbols.man | 456 |
1 files changed, 228 insertions, 228 deletions
diff --git a/libX11/man/xkb/XkbKeyTypesForCoreSymbols.man b/libX11/man/xkb/XkbKeyTypesForCoreSymbols.man index 502d8bed3..e7678d5c2 100644 --- a/libX11/man/xkb/XkbKeyTypesForCoreSymbols.man +++ b/libX11/man/xkb/XkbKeyTypesForCoreSymbols.man @@ -1,228 +1,228 @@ -'\" 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 XkbKeyTypesForCoreSymbols __libmansuffix__ __xorgversion__ "XKB FUNCTIONS"
-.SH NAME
-XkbKeyTypesForCoreSymbols \- Determine the Xkb key types appropriate for the
-symbols bound to a key in a core keyboard mapping
-.SH SYNOPSIS
-.HP
-.B int XkbKeyTypesForCoreSymbols
-.BI "(\^XkbDescPtr " "xkb" "\^,"
-.BI "int " "map_width" "\^,"
-.BI "KeySym *" "core_syms" "\^,"
-.BI "unsigned int " "protected" "\^,"
-.BI "int *" "types_inout" "\^,"
-.BI "KeySym *" "xkb_syms_rtrn" "\^);"
-.if n .ti +5n
-.if t .ti +.5i
-.SH ARGUMENTS
-.TP
-.I \- xkb
-keyboard description in which to place symbols
-.TP
-.I \- map_width
-width of core protocol keymap in xkb_syms_rtrn
-.TP
-.I \- core_syms
-core protocol format array of KeySyms
-.TP
-.I \- protected
-explicit key types
-.TP
-.I \- types_inout
-backfilled with the canonical types bound to groups one and two for the key
-.TP
-.I \- xkb_syms_rtrn
-backfilled with symbols bound to the key in the Xkb mapping
-.SH DESCRIPTION
-.LP
-.I XkbKeyTypesForCoreSymbols
-expands the symbols in
-.I core_syms
-and types in
-.I types_inout,
-then chooses canonical key types (canonical key types are
-defined The Canonical Key Types) for groups 1 and 2 using the rules specified by
-the Xkb protocol and places them in xkb_syms_rtrn, which will be non-NULL.
-
-.B The Canonical Key Types
-
-Xkb allows up to XkbMaxKeyTypes (255) key types to be defined, but requires at
-least XkbNumRequiredTypes (4) predefined types to be in a key map. These
-predefined key types are referred to as the canonical key types and describe the
-types of keys available on most keyboards. The definitions for the canonical key
-types are held in the first XkbNumRequiredTypes entries of the
-.I types
-field of the client map and are indexed using the following constants:
-.nf
-
- XkbOneLevelIndex
- XkbTwoLevelIndex
- XkbAlphabeticIndex
- XkbKeypadIndex
-
-.fi
-
-ONE_LEVEL
-
-The ONE_LEVEL key type describes groups that have only one symbol. The default
-ONE_LEVEL key type has no map entries and does not pay attention to any
-modifiers. A symbolic representation of this key type could look like the
-following:
-.nf
-
- type "ONE_LEVEL" {
- modifiers = None;
- map[None]= Level1;
- level_name[Level1]= "Any";
- };
-
-.fi
-The description of the ONE_LEVEL key type is stored in the
-types[XkbOneLevelIndex] entry of the client key map.
-
-TWO_LEVEL
-
-The TWO_LEVEL key type describes groups that consist of two symbols but are
-neither alphabetic nor numeric keypad keys. The default TWO_LEVEL type uses only
-the Shift modifier. It returns shift level two if Shift is set, and level one if
-it is not. A symbolic representation of this key type could look like the
-following:
-.nf
-
- type "TWO_LEVEL" {
- modifiers = Shift;
- map[Shift]= Level2;
- level_name[Level1]= "Base";
- level_name[Level2]= "Shift";
- };
-
-.fi
-
-The description of the TWO_LEVEL key type is stored in the
-types[XkbTwoLevelIndex] entry of the client key map.
-
-ALPHABETIC
-
-The ALPHABETIC key type describes groups consisting of two symbols: the
-lowercase form of a symbol followed by the uppercase form of the same symbol.
-The default ALPHABETIC type implements locale-sensitive "Shift cancels CapsLock"
-behavior using both the Shift and Lock modifiers as follows:
-
-.IP \(bu 5
-If Shift and Lock are both set, the default ALPHABETIC type yields level one.
-.IP \(bu 5
-If Shift alone is set, it yields level two.
-.IP \(bu 5
-If Lock alone is set, it yields level one, but preserves the Lock modifier so
-Xlib notices and applies the appropriate capitalization rules. The Xlib
-functions are locale-sensitive and apply different capitalization rules for
-different locales.
-.IP \(bu 5
-If neither Shift nor Lock is set, it yields level one.
-
-A symbolic representation of this key type could look like the following:
-.nf
-
- type "ALPHABETIC" {
- modifiers = Shift+Lock;
- map[Shift]= Level2;
- preserve[Lock]= Lock;
- level_name[Level1]= "Base";
- level_name[Level2]= "Caps";
- };
-
-.fi
-The description of the ALPHABETIC key type is stored in the
-types[XkbAlphabeticIndex] entry of the client key map.
-
-KEYPAD
-
-The KEYPAD key type describes groups that consist of two symbols, at least one
-of which is a numeric keypad symbol. The numeric keypad symbol is assumed to
-reside at level two. The default KEYPAD key type implements "Shift cancels
-NumLock" behavior using the Shift modifier and the real modifier bound to the
-virtual modifier named "NumLock," known as the NumLock modifier, as follows:
-
-.IP \(bu 5
-If Shift and NumLock are both set, the default KEYPAD type yields level one.
-.IP \(bu 5
-If Shift alone is set, it yields level two.
-.IP \(bu 5
-If NumLock alone is set, it yields level two.
-.IP \(bu 5
-If neither Shift nor NumLock is set, it yields level one.
-
-A symbolic representation of this key type could look like the following:
-.nf
-
- type "KEYPAD" {
- modifiers = Shift+NumLock;
- map[None]= Level1;
- map[Shift]= Level2;
- map[NumLock]= Level2;
- map[Shift+NumLock]= Level1;
- level_name[Level1]= "Base";
- level_name[Level2]= "Caps";
- };
-
-.fi
-The description of the KEYPAD key type is stored in the types[XkbKeypadIndex]
-entry of the client key map.
-
-A core keymap is a two-dimensional array of keysyms. It has
-.I map_width
-columns and
-.I max_key_code
-rows.
-.I XkbKeyTypesForCoreSymbols
-takes a single row from a core keymap, determines the number of groups
-associated with it, the type of each group, and the symbols bound to each group.
-The return value is the number of groups,
-.I types_inout
-has the types for each group, and
-.I xkb_syms_rtrn
-has the symbols in Xkb order (that is, groups are contiguous, regardless of
-size).
-
-.I protected
-contains the explicitly protected key types. There is one explicit override
-control associated with each of the four possible groups for each Xkb key,
-ExplicitKeyType1 through ExplicitKeyType4;
-.I protected
-is an inclusive OR of these controls.
-.I map_width
-is the width of the core keymap and is not dependent on any Xkb definitions.
-.I types_inout
-is an array of four type indices. On input,
-.I types_inout
-contains the indices of any types already assigned to the key, in case they are
-explicitly protected from change.
-
-Upon return,
-.I types_inout
-contains any automatically selected (that is, canonical) types plus any
-protected types. Canonical types are assigned to all four groups if there are
-enough symbols to do so. The four entries in
-.I types_inout
-correspond to the four groups for the key in question.
+'\" 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 XkbKeyTypesForCoreSymbols __libmansuffix__ __xorgversion__ "XKB FUNCTIONS" +.SH NAME +XkbKeyTypesForCoreSymbols \- Determine the Xkb key types appropriate for the +symbols bound to a key in a core keyboard mapping +.SH SYNOPSIS +.HP +.B int XkbKeyTypesForCoreSymbols +.BI "(\^XkbDescPtr " "xkb" "\^," +.BI "int " "map_width" "\^," +.BI "KeySym *" "core_syms" "\^," +.BI "unsigned int " "protected" "\^," +.BI "int *" "types_inout" "\^," +.BI "KeySym *" "xkb_syms_rtrn" "\^);" +.if n .ti +5n +.if t .ti +.5i +.SH ARGUMENTS +.TP +.I \- xkb +keyboard description in which to place symbols +.TP +.I \- map_width +width of core protocol keymap in xkb_syms_rtrn +.TP +.I \- core_syms +core protocol format array of KeySyms +.TP +.I \- protected +explicit key types +.TP +.I \- types_inout +backfilled with the canonical types bound to groups one and two for the key +.TP +.I \- xkb_syms_rtrn +backfilled with symbols bound to the key in the Xkb mapping +.SH DESCRIPTION +.LP +.I XkbKeyTypesForCoreSymbols +expands the symbols in +.I core_syms +and types in +.I types_inout, +then chooses canonical key types (canonical key types are +defined The Canonical Key Types) for groups 1 and 2 using the rules specified by +the Xkb protocol and places them in xkb_syms_rtrn, which will be non-NULL. + +.B The Canonical Key Types + +Xkb allows up to XkbMaxKeyTypes (255) key types to be defined, but requires at +least XkbNumRequiredTypes (4) predefined types to be in a key map. These +predefined key types are referred to as the canonical key types and describe the +types of keys available on most keyboards. The definitions for the canonical key +types are held in the first XkbNumRequiredTypes entries of the +.I types +field of the client map and are indexed using the following constants: +.nf + + XkbOneLevelIndex + XkbTwoLevelIndex + XkbAlphabeticIndex + XkbKeypadIndex + +.fi + +ONE_LEVEL + +The ONE_LEVEL key type describes groups that have only one symbol. The default +ONE_LEVEL key type has no map entries and does not pay attention to any +modifiers. A symbolic representation of this key type could look like the +following: +.nf + + type "ONE_LEVEL" { + modifiers = None; + map[None]= Level1; + level_name[Level1]= "Any"; + }; + +.fi +The description of the ONE_LEVEL key type is stored in the +types[XkbOneLevelIndex] entry of the client key map. + +TWO_LEVEL + +The TWO_LEVEL key type describes groups that consist of two symbols but are +neither alphabetic nor numeric keypad keys. The default TWO_LEVEL type uses only +the Shift modifier. It returns shift level two if Shift is set, and level one if +it is not. A symbolic representation of this key type could look like the +following: +.nf + + type "TWO_LEVEL" { + modifiers = Shift; + map[Shift]= Level2; + level_name[Level1]= "Base"; + level_name[Level2]= "Shift"; + }; + +.fi + +The description of the TWO_LEVEL key type is stored in the +types[XkbTwoLevelIndex] entry of the client key map. + +ALPHABETIC + +The ALPHABETIC key type describes groups consisting of two symbols: the +lowercase form of a symbol followed by the uppercase form of the same symbol. +The default ALPHABETIC type implements locale-sensitive "Shift cancels CapsLock" +behavior using both the Shift and Lock modifiers as follows: + +.IP \(bu 5 +If Shift and Lock are both set, the default ALPHABETIC type yields level one. +.IP \(bu 5 +If Shift alone is set, it yields level two. +.IP \(bu 5 +If Lock alone is set, it yields level one, but preserves the Lock modifier so +Xlib notices and applies the appropriate capitalization rules. The Xlib +functions are locale-sensitive and apply different capitalization rules for +different locales. +.IP \(bu 5 +If neither Shift nor Lock is set, it yields level one. + +A symbolic representation of this key type could look like the following: +.nf + + type "ALPHABETIC" { + modifiers = Shift+Lock; + map[Shift]= Level2; + preserve[Lock]= Lock; + level_name[Level1]= "Base"; + level_name[Level2]= "Caps"; + }; + +.fi +The description of the ALPHABETIC key type is stored in the +types[XkbAlphabeticIndex] entry of the client key map. + +KEYPAD + +The KEYPAD key type describes groups that consist of two symbols, at least one +of which is a numeric keypad symbol. The numeric keypad symbol is assumed to +reside at level two. The default KEYPAD key type implements "Shift cancels +NumLock" behavior using the Shift modifier and the real modifier bound to the +virtual modifier named "NumLock," known as the NumLock modifier, as follows: + +.IP \(bu 5 +If Shift and NumLock are both set, the default KEYPAD type yields level one. +.IP \(bu 5 +If Shift alone is set, it yields level two. +.IP \(bu 5 +If NumLock alone is set, it yields level two. +.IP \(bu 5 +If neither Shift nor NumLock is set, it yields level one. + +A symbolic representation of this key type could look like the following: +.nf + + type "KEYPAD" { + modifiers = Shift+NumLock; + map[None]= Level1; + map[Shift]= Level2; + map[NumLock]= Level2; + map[Shift+NumLock]= Level1; + level_name[Level1]= "Base"; + level_name[Level2]= "Caps"; + }; + +.fi +The description of the KEYPAD key type is stored in the types[XkbKeypadIndex] +entry of the client key map. + +A core keymap is a two-dimensional array of keysyms. It has +.I map_width +columns and +.I max_key_code +rows. +.I XkbKeyTypesForCoreSymbols +takes a single row from a core keymap, determines the number of groups +associated with it, the type of each group, and the symbols bound to each group. +The return value is the number of groups, +.I types_inout +has the types for each group, and +.I xkb_syms_rtrn +has the symbols in Xkb order (that is, groups are contiguous, regardless of +size). + +.I protected +contains the explicitly protected key types. There is one explicit override +control associated with each of the four possible groups for each Xkb key, +ExplicitKeyType1 through ExplicitKeyType4; +.I protected +is an inclusive OR of these controls. +.I map_width +is the width of the core keymap and is not dependent on any Xkb definitions. +.I types_inout +is an array of four type indices. On input, +.I types_inout +contains the indices of any types already assigned to the key, in case they are +explicitly protected from change. + +Upon return, +.I types_inout +contains any automatically selected (that is, canonical) types plus any +protected types. Canonical types are assigned to all four groups if there are +enough symbols to do so. The four entries in +.I types_inout +correspond to the four groups for the key in question. |