Glossary Allocator Xkb provides functions, known as allocators, to create and initialize Xkb data structures. Audible Bell An audible bell is the sound generated by whatever bell is associated with the keyboard or input extension device, as opposed to any other audible sound generated elsewhere in the system. Autoreset Controls The autoreset controls configure the boolean controls to automatically be enabled or disabled at the time a program exits. Base Group The group in effect as a result of all actions other than a previous lock or latch request; the base group is transient. For example, the user pressing and holding a group shift key that shifts to Group2 would result in the base group being group 2 at that point in time. Initially, base group is always Group1. Base Modifiers Modifiers that are turned on as a result of some actions other than previous lock or latch requests; base modifiers are transient. For example, the user pressing and holding a key bound to the Shift modifier would result in Shift being a base modifier at that point in time. Base Event Code A number assigned by the X server at run time that is assigned to the extension to identify events from that extension. Base State The base group and base modifiers represent keys that are physically or logically down; these constitute the base state. Boolean Controls Global keyboard controls that may be selectively enabled and disabled under program control and that may be automatically set to an on or off condition upon client program exit. Canonical Key Types The canonical key types are predefined key types that 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 types field of the client map and are indexed using the following constants: XkbOneLevelIndex XkbTwoLevelIndex XkbAlphabeticIndex XkbKeypadIndex Client Map The key mapping information needed to convert arbitrary keycodes to symbols. Compat Name The compat name is a string that provides some information about the rules used to bind actions to keys that are changed using core protocol requests. Compatibility State When an Xkb-extended X server connects to an Xkb-unaware client, the compatibility state remaps the keyboard group into a core modifier whenever possible. Compatibility Grab State The grab state that results from applying the compatibility map to the Xkb grab state. Compatibility Map The definition of how to map core protocol keyboard state to Xkb keyboard state. Component Expression An expression used to describe server keyboard database components to be loaded. It describes the order in which the components should be loaded and the rules by which duplicate attributes should be resolved. Compose Processing The process of mapping a series of keysyms to a string is known as compose processing. Consumed Modifier Xkb normally consumes modifiers in determining the appropriate symbol for an event, that is, the modifiers are not considered during any of the later stages of event processing. For those rare occasions when a modifier should be considered despite having been used to look up a symbol, key types include an optional preserve field. Core Event An event created from the core X server. Detectable Auto-Repeat Detectable auto-repeat allows a client to detect an auto-repeating key. If a client requests and the server supports detectable auto-repeat, Xkb generates KeyRelease events only when the key is physically released. Thus the client receives a number of KeyPress events for that key without intervening KeyRelease events until the key is finally released, when a KeyRelease event is received. Effective Group The effective group is the arithmetic sum of the locked, latched, and base groups. The effective keyboard group is always brought back into range depending on the value of the GroupsWrap control for the keyboard. If an event occurs with an effective group that is legal for the keyboard as a whole, but not for the key in question, the group for that event only is normalized using the algorithm specified by the group_info member of the key symbol map ( XkbSymMapRec ). Effective Mask An Xkb modifier definition consists of a set of bit masks corresponding to the eight real modifiers; a similar set of bitmasks corresponding to the 16 named virtual modifiers; and an effective mask. The effective mask represents the set of all real modifiers that can logically be set either by setting any of the real modifiers or by setting any of the virtual modifiers in the definition. Effective Modifier The effective modifiers are the bitwise union of the base, latched and locked modifiers. Extension Device Any keyboard or other input device recognized by the X input extension. Global Keyboard Controls Controls that affect the way Xkb generates key events. The controls affect all keys, as opposed to per-key controls that are for a single key. Global controls include RepeatKeys Control DetectableAuto-repeat SlowKeys BounceKeys StickyKeys MouseKeys MouseKeysAccel AccessXKeys AccessXTimeout AccessXFeedback Overlay1 Overlay2 EnabledControls Grab State The grab state is the state used when matching events to passive grabs. It consists of the grab group and the grab modifiers. Group See Keysym Group Group Index A number used as the internal representation for a group number. Group1 through Group 4 have indices of 0 through 3. Groups Wrap Control If a group index exceeds the maximum number of groups permitted for the specified keyboard, it is wrapped or truncated back into range as specified by the global GroupsWrap control. GroupsWrap can have the following values: WrapIntoRange ClampIntoRange RedirectIntoRange Key Type An attribute of a key that identifies which modifiers affect the shift level of a key and the number of groups on the key. Key Width The maximum number of shift levels in any group for the key type associated with a key. Keysym Group A keysym group is a logical state of the keyboard providing access to a collection of characters. A group usually contains a set of characters that logically belong together and that may be arranged on several shift levels within that group. For example, Group1 could be the English alphabet, and Group2 could be Greek. Xkb supports up to four different groups for an input device or keyboard. Groups are in the range 1-4 (Group1 - Group4), and are often referred to as G1 - G4 and indexed as 0 - 3. Indicator An indicator is a feedback mechanism such as an LED on an input device. Using Xkb, a client application can determine the names of the various indicators, determine and control the way that the individual indicators should be updated to reflect keyboard changes, and determine which of the 32 keyboard indicators reported by the protocol are actually present on the keyboard. Indicator Feedback An indicator feedback describes the state of a bank of up to 32 lights. It has a mask where each bit corresponds to a light and an associated value mask that specifies which lights are on or off. Indicator Map An indicator has its own set of attributes that specify whether clients can explicitly set its state and whether it tracks the keyboard state. The indicator map is the collection of these attributes for each indicator and is held in the maps array, which is an array of XkbIndicatorRec structures. Input Extension An extension to the core X protocol that allows an X server to support multiple keyboards, as well as other input devices, in addition to the core X keyboard and pointer. Other types of devices supported by the input extension include, but are not limited to: mice, tablets, touchscreens, barcode readers, button boxes, trackballs, identifier devices, data gloves, and eye trackers. Key Action A key action consists of an operator and some optional data. Once the server has applied the global controls and per-key behavior and has decided to process a key event, it applies key actions to determine the effects of the key on the internal state of the server. Xkb supports actions that do the following: Change base, latched, or locked modifiers or group Move the core pointer or simulate core pointer button events Change most aspects of keyboard behavior Terminate or suspend the server Send a message to interested clients Simulate events on other keys Key Alias A key alias is a symbolic name for a specific physical key. Key aliases allow the keyboard layout designer to assign multiple key names to a single key. This allows the keyboard layout designer to refer to keys using either their position or their "function." Key aliases can be specified both in the symbolic names component and in the keyboard geometry. Both sets of aliases are always valid, but key alias definitions in the keyboard geometry have priority; if both symbolic names and geometry include aliases, you should consider the definitions from the geometry before considering the definitions from the symbolic names section. Key Behavior The behaviors field of the server map is an array of XkbBehavior , indexed by keycode, and contains the behavior for each key. The X server uses key behavior to determine whether to process or filter out any given key event; key behavior is independent of keyboard modifier or group state. Each key has exactly one behavior. Key behaviors include: XkbKB_Default XkbKB_Lock XkbKB_RadioGroup XkbKB_Overlay1 XkbKB_Overlay2 Key Symbol Map A key symbol map describes the symbols bound to a key and the rules to be used to interpret those symbols. It is an array of XkbSymMapRec structures indexed by keycode. Key Type Key types are used to determine the shift level of a key given the current state of the keyboard. There is one key type for each group for a key. Key types are defined using the XkbKeyTypeRec and XkbKTMapEntryRec structures. 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. Keyboard Bells The sound the default bell makes when rung is the system bell or the default keyboard bell. Some input devices may have more than one bell, identified by bell_class and bell_id. Keyboard Components There are five types of components stored in the X server database of keyboard components. They correspond to the symbols, geometry, keycodes, compat, and types symbolic names associated with a keyboard. Keyboard Feedback A keyboard feedback includes the following: Keyclick volume Bell volume Bell pitch Bell duration Global auto-repeat Per key auto-repeat 32 LEDs Key Width, Key Type Width The maximum number of shift levels for a type is referred to as the width of a key type. Keyboard Geometry Keyboard geometry describes the physical appearance of the keyboard, including the shape, location, and color of all keyboard keys or other visible keyboard components such as indicators and is stored in a XkbGeometryRec structure. The information contained in a keyboard geometry is sufficient to allow a client program to draw an accurate two-dimensional image of the keyboard. Keyboard Geometry Name The keyboard geometry name describes the physical location, size, and shape of the various keys on the keyboard and is part of the XkbNamesRec structure. Keyboard State Keyboard state encompasses all of the transitory information necessary to map a physical key press or release to an appropriate event. Keycode A numeric value returned to the X server when a key on a keyboard is pressed or released, indicating which key is being modulated. Keycode numbers are in the range 1 <= keycode <= max, where max is the number of physical keys on the device. Keycode Name The keycode name describes the range and meaning of the keycodes returned by the keyboard and is part of the XkbNamesRec structure. Latched Group A latched group is a group index that is combined with the base and locked group to form the effective group. It applies only to the next key event that does not change the keyboard state. The latched group can be changed by keyboard activity or via Xkb extension library functions. Latched Modifier Latched modifiers are the set of modifiers that are combined with the base modifiers and the locked modifiers to form the effective modifiers. It applies only to the next key event that does not change the keyboard state. LED A light emitting diode. However, for the purposes of the X keyboard extension specification, a LED is any form of visual two-state indicator that is either on or off. Locked Group A locked group is a group index that is combined with the base and latched group to form the effective group. When a group is locked, it supersedes any previous locked group and remains the locked group for all future key events, until a new group is locked. The locked group can be changed by keyboard activity or via Xkb extension library functions. Locked Modifiers Locked modifiers are the set of modifiers that are combined with the base modifiers and the latched modifiers to form the effective modifiers. A locked modifier applies to all future key events until it is explicitly unlocked. Lookup State The lookup state is composed of the lookup group and the lookup modifiers, and it is the state an Xkb-capable or Xkb-aware client should use to map a keycode to a keysym. Modifier A modifier is a logical condition that is either set or unset. The modifiers control the Shift Level selected when a key event occurs. Xkb supports the core protocol eight modifiers ( Shift , Lock , Control , and Mod1 through Mod5 ), called the real modifiers. In addition, Xkb extends modifier flexibility by providing a set of sixteen named virtual modifiers, each of which can be bound to any set of the eight real modifiers. Modifier Key A modifier key is a key whose operation has no immediate effect, but that, for as long as it is held down, modifies the effect of other keys. A modifier key may be, for example, a shift key or a control key. Modifier Definition An Xkb modifier definition, held in an XkbModsRec , consists of a set of real modifiers, a set of virtual modifiers, and an effective mask. The mask is the union of the real modifiers and the set of real modifiers to which the virtual modifiers map; the mask cannot be explicitly changed. Nonkeyboard Extension Device An input extension device that is not a keyboard. Other types of devices supported by the input extension include, but are not limited to: mice, tablets, touchscreens, barcode readers, button boxes, trackballs, identifier devices, data gloves, and eye trackers. Outlines An outline is a list of one or more points that describes a single closed polygon, used in the geometry specification for a keyboard. Physical Indicator Mask The physical indicator mask is a field in the XkbIndicatorRec that indicates which indicators are bound to physical LEDs on the keyboard; if a bit is set in phys_indicators , then the associated indicator has a physical LED associated with it. This field is necessary because some indicators may not have corresponding physical LEDs on the keyboard. Physical Symbol Keyboard Name The symbols keyboard name identifies the symbols logically bound to the keys. The symbols name is a human or application-readable description of the intended locale or usage of the keyboard with these symbols. The phys_symbols keyboard name, on the other hand, identifies the symbols actually engraved on the keyboard. Preserved Modifier Xkb normally consumes modifiers in determining the appropriate symbol for an event, that is, the modifiers are not considered during any of the later stages of event processing. For those rare occasions when a modifier should be considered despite having been used to look up a symbol, key types include an optional preserve field. If a modifier is present in the preserve list, it is a preserved modifier. Radio Group A radio group is a set of keys whose behavior simulates a set of radio buttons. Once a key in a radio group is pressed, it stays logically depressed until another key in the group is pressed, at which point the previously depressed key is logically released. Consequently, at most one key in a radio group can be logically depressed at one time. Real Modifier Xkb supports the eight core protocol modifiers ( Shift , Lock , Control , and Mod1 through Mod5 ); these are called the real modifiers, as opposed to the set of sixteen named virtual modifiers that can be bound to any set of the eight real modifiers. Server Internal Modifiers Modifiers that the server uses to determine the appropriate symbol for an event; internal modifiers are normally consumed by the server. Shift Level One of several states (normally 2 or 3) governing which graphic character is produced when a key is actuated. Symbol Keyboard Name The symbols keyboard name identifies the symbols logically bound to the keys. The symbols name is a human or application-readable description of the intended locale or usage of the keyboard with these symbols. The phys_symbols keyboard name, on the other hand, identifies the symbols actually engraved on the keyboard. Symbolic Name Xkb supports symbolic names for most components of the keyboard extension. Most of these symbolic names are grouped into the names component of the keyboard description. State Field The portion of a client-side core protocol event that holds the modifier, group, and button state information pertaining to the event. Types Name The types name provides some information about the set of key types that can be associated with the keyboard. In addition, each key type can have a name, and each shift level of a type can have a name. Valuator A valuator reports a range of values for some entity, like a mouse axis, a slider, or a dial. Virtual Modifier Xkb provides a set of sixteen named virtual modifiers that can be bound to any set of the eight real modifiers. Each virtual modifier can be bound to any set of the real modifiers ( Shift , Lock , Control, and Mod1 - Mod5 ). Virtual Modifier Mapping Xkb maintains a virtual modifier mapping, which lists the virtual modifiers associated with each key. Xkb-aware Client A client application that initializes Xkb extension and is consequently bound to an Xlib that includes the Xkb extension. Xkb-capable Client A client application that makes no Xkb extension Xlib calls but is bound to an Xlib that includes the Xkb extension. Xkb-unaware Client A client application that makes no Xkb extension Xlib calls and is bound to an Xlib that does not include the Xkb extension.