glossary.xml revision e9fcaa8a
1e9fcaa8aSmrg<glossary id='glossary'> 2e9fcaa8aSmrg<title>Glossary</title> 3e9fcaa8aSmrg<glossentry> 4e9fcaa8aSmrg <glossterm>Allocator</glossterm> 5e9fcaa8aSmrg <glossdef> 6e9fcaa8aSmrg <para> 7e9fcaa8aSmrgXkb provides functions, known as allocators, to create and initialize Xkb data 8e9fcaa8aSmrgstructures. 9e9fcaa8aSmrg </para> 10e9fcaa8aSmrg </glossdef> 11e9fcaa8aSmrg</glossentry> 12e9fcaa8aSmrg<glossentry> 13e9fcaa8aSmrg <glossterm>Audible Bell</glossterm> 14e9fcaa8aSmrg <glossdef> 15e9fcaa8aSmrg <para> 16e9fcaa8aSmrgAn audible bell is the sound generated by whatever bell is associated with the 17e9fcaa8aSmrgkeyboard or input extension device, as opposed to any other audible sound 18e9fcaa8aSmrggenerated elsewhere in the system. 19e9fcaa8aSmrg </para> 20e9fcaa8aSmrg </glossdef> 21e9fcaa8aSmrg</glossentry> 22e9fcaa8aSmrg<glossentry> 23e9fcaa8aSmrg <glossterm>Autoreset Controls</glossterm> 24e9fcaa8aSmrg <glossdef> 25e9fcaa8aSmrg <para> 26e9fcaa8aSmrgThe autoreset controls configure the boolean controls to automatically be 27e9fcaa8aSmrgenabled or disabled at the time a program exits. 28e9fcaa8aSmrg </para> 29e9fcaa8aSmrg </glossdef> 30e9fcaa8aSmrg</glossentry> 31e9fcaa8aSmrg<glossentry> 32e9fcaa8aSmrg <glossterm>Base Group</glossterm> 33e9fcaa8aSmrg <glossdef> 34e9fcaa8aSmrg <para> 35e9fcaa8aSmrgThe group in effect as a result of all actions other than a previous lock or 36e9fcaa8aSmrglatch request; the base group is transient. For example, the user pressing and 37e9fcaa8aSmrgholding a group shift key that shifts to Group2 would result in the base group 38e9fcaa8aSmrgbeing group 2 at that point in time. Initially, base group is always Group1. 39e9fcaa8aSmrg </para> 40e9fcaa8aSmrg </glossdef> 41e9fcaa8aSmrg</glossentry> 42e9fcaa8aSmrg<glossentry> 43e9fcaa8aSmrg <glossterm>Base Modifiers</glossterm> 44e9fcaa8aSmrg <glossdef> 45e9fcaa8aSmrg <para> 46e9fcaa8aSmrgModifiers that are turned on as a result of some actions other than previous 47e9fcaa8aSmrglock or latch requests; base modifiers are transient. For example, the user 48e9fcaa8aSmrgpressing and holding a key bound to the Shift modifier would result in Shift 49e9fcaa8aSmrgbeing a base modifier at that point in time. 50e9fcaa8aSmrg </para> 51e9fcaa8aSmrg </glossdef> 52e9fcaa8aSmrg</glossentry> 53e9fcaa8aSmrg<glossentry> 54e9fcaa8aSmrg <glossterm>Base Event Code</glossterm> 55e9fcaa8aSmrg <glossdef> 56e9fcaa8aSmrg <para> 57e9fcaa8aSmrgA number assigned by the X server at run time that is assigned to the extension 58e9fcaa8aSmrgto identify events from that extension. 59e9fcaa8aSmrg </para> 60e9fcaa8aSmrg </glossdef> 61e9fcaa8aSmrg</glossentry> 62e9fcaa8aSmrg<glossentry> 63e9fcaa8aSmrg <glossterm>Base State</glossterm> 64e9fcaa8aSmrg <glossdef> 65e9fcaa8aSmrg <para> 66e9fcaa8aSmrgThe base group and base modifiers represent keys that are physically or 67e9fcaa8aSmrglogically down; these constitute the base state. 68e9fcaa8aSmrg </para> 69e9fcaa8aSmrg </glossdef> 70e9fcaa8aSmrg</glossentry> 71e9fcaa8aSmrg<glossentry> 72e9fcaa8aSmrg <glossterm>Boolean Controls</glossterm> 73e9fcaa8aSmrg <glossdef> 74e9fcaa8aSmrg <para> 75e9fcaa8aSmrgGlobal keyboard controls that may be selectively enabled and disabled under 76e9fcaa8aSmrgprogram control and that may be automatically set to an on or off condition 77e9fcaa8aSmrgupon client program exit. 78e9fcaa8aSmrg </para> 79e9fcaa8aSmrg </glossdef> 80e9fcaa8aSmrg</glossentry> 81e9fcaa8aSmrg<glossentry> 82e9fcaa8aSmrg <glossterm>Canonical Key Types</glossterm> 83e9fcaa8aSmrg <glossdef> 84e9fcaa8aSmrg <para> 85e9fcaa8aSmrgThe canonical key types are predefined key types that describe the types of 86e9fcaa8aSmrgkeys available on most keyboards. The definitions for the canonical key types 87e9fcaa8aSmrgare held in the first <emphasis> 88e9fcaa8aSmrgXkbNumRequiredTypes</emphasis> 89e9fcaa8aSmrg entries of the <emphasis> 90e9fcaa8aSmrgtypes</emphasis> 91e9fcaa8aSmrg field of the client map and are indexed using the following constants: 92e9fcaa8aSmrg </para> 93e9fcaa8aSmrg <itemizedlist> 94e9fcaa8aSmrg <listitem> 95e9fcaa8aSmrg <para> 96e9fcaa8aSmrg<emphasis>XkbOneLevelIndex</emphasis> 97e9fcaa8aSmrg </para> 98e9fcaa8aSmrg </listitem> 99e9fcaa8aSmrg <listitem> 100e9fcaa8aSmrg <para> 101e9fcaa8aSmrg<emphasis>XkbTwoLevelIndex</emphasis> 102e9fcaa8aSmrg </para> 103e9fcaa8aSmrg </listitem> 104e9fcaa8aSmrg <listitem> 105e9fcaa8aSmrg <para> 106e9fcaa8aSmrg<emphasis>XkbAlphabeticIndex</emphasis> 107e9fcaa8aSmrg </para> 108e9fcaa8aSmrg </listitem> 109e9fcaa8aSmrg <listitem> 110e9fcaa8aSmrg <para> 111e9fcaa8aSmrg<emphasis>XkbKeypadIndex</emphasis> 112e9fcaa8aSmrg </para> 113e9fcaa8aSmrg </listitem> 114e9fcaa8aSmrg </itemizedlist> 115e9fcaa8aSmrg </glossdef> 116e9fcaa8aSmrg</glossentry> 117e9fcaa8aSmrg 118e9fcaa8aSmrg<glossentry> 119e9fcaa8aSmrg <glossterm>Client Map</glossterm> 120e9fcaa8aSmrg <glossdef> 121e9fcaa8aSmrg <para> 122e9fcaa8aSmrgThe key mapping information needed to convert arbitrary keycodes to symbols. 123e9fcaa8aSmrg </para> 124e9fcaa8aSmrg </glossdef> 125e9fcaa8aSmrg</glossentry> 126e9fcaa8aSmrg<glossentry> 127e9fcaa8aSmrg <glossterm>Compat Name</glossterm> 128e9fcaa8aSmrg <glossdef> 129e9fcaa8aSmrg <para> 130e9fcaa8aSmrgThe <emphasis> 131e9fcaa8aSmrgcompat</emphasis> 132e9fcaa8aSmrg name is a string that provides some information about the rules used to bind 133e9fcaa8aSmrgactions to keys that are changed using core protocol requests. 134e9fcaa8aSmrg </para> 135e9fcaa8aSmrg </glossdef> 136e9fcaa8aSmrg</glossentry> 137e9fcaa8aSmrg<glossentry> 138e9fcaa8aSmrg <glossterm>Compatibility State</glossterm> 139e9fcaa8aSmrg <glossdef> 140e9fcaa8aSmrg <para> 141e9fcaa8aSmrgWhen an Xkb-extended X server connects to an Xkb-unaware client, the 142e9fcaa8aSmrgcompatibility state remaps the keyboard group into a core modifier whenever 143e9fcaa8aSmrgpossible. 144e9fcaa8aSmrg </para> 145e9fcaa8aSmrg </glossdef> 146e9fcaa8aSmrg</glossentry> 147e9fcaa8aSmrg<glossentry> 148e9fcaa8aSmrg <glossterm>Compatibility Grab State</glossterm> 149e9fcaa8aSmrg <glossdef> 150e9fcaa8aSmrg <para> 151e9fcaa8aSmrgThe grab state that results from applying the compatibility map to the Xkb grab 152e9fcaa8aSmrgstate. 153e9fcaa8aSmrg </para> 154e9fcaa8aSmrg </glossdef> 155e9fcaa8aSmrg</glossentry> 156e9fcaa8aSmrg<glossentry> 157e9fcaa8aSmrg <glossterm>Compatibility Map</glossterm> 158e9fcaa8aSmrg <glossdef> 159e9fcaa8aSmrg <para> 160e9fcaa8aSmrgThe definition of how to map core protocol keyboard state to Xkb keyboard state. 161e9fcaa8aSmrg </para> 162e9fcaa8aSmrg </glossdef> 163e9fcaa8aSmrg</glossentry> 164e9fcaa8aSmrg<glossentry> 165e9fcaa8aSmrg <glossterm>Component Expression</glossterm> 166e9fcaa8aSmrg <glossdef> 167e9fcaa8aSmrg <para> 168e9fcaa8aSmrgAn expression used to describe server keyboard database components to be 169e9fcaa8aSmrgloaded. It describes the order in which the components should be loaded and the 170e9fcaa8aSmrgrules by which duplicate attributes should be resolved. 171e9fcaa8aSmrg </para> 172e9fcaa8aSmrg </glossdef> 173e9fcaa8aSmrg</glossentry> 174e9fcaa8aSmrg<glossentry> 175e9fcaa8aSmrg <glossterm>Compose Processing</glossterm> 176e9fcaa8aSmrg <glossdef> 177e9fcaa8aSmrg <para> 178e9fcaa8aSmrgThe process of mapping a series of keysyms to a string is known as compose 179e9fcaa8aSmrgprocessing. 180e9fcaa8aSmrg </para> 181e9fcaa8aSmrg </glossdef> 182e9fcaa8aSmrg</glossentry> 183e9fcaa8aSmrg<glossentry> 184e9fcaa8aSmrg <glossterm>Consumed Modifier</glossterm> 185e9fcaa8aSmrg <glossdef> 186e9fcaa8aSmrg <para> 187e9fcaa8aSmrgXkb normally consumes modifiers in determining the appropriate symbol for an 188e9fcaa8aSmrgevent, that is, the modifiers are not considered during any of the later stages 189e9fcaa8aSmrgof event processing. For those rare occasions when a modifier <emphasis> 190e9fcaa8aSmrgshould</emphasis> 191e9fcaa8aSmrg be considered despite having been used to look up a symbol, key types include 192e9fcaa8aSmrgan optional <emphasis> 193e9fcaa8aSmrgpreserve</emphasis> 194e9fcaa8aSmrg field. 195e9fcaa8aSmrg </para> 196e9fcaa8aSmrg </glossdef> 197e9fcaa8aSmrg</glossentry> 198e9fcaa8aSmrg<glossentry> 199e9fcaa8aSmrg <glossterm>Core Event</glossterm> 200e9fcaa8aSmrg <glossdef> 201e9fcaa8aSmrg <para> 202e9fcaa8aSmrgAn event created from the core X server. 203e9fcaa8aSmrg </para> 204e9fcaa8aSmrg </glossdef> 205e9fcaa8aSmrg</glossentry> 206e9fcaa8aSmrg<glossentry> 207e9fcaa8aSmrg <glossterm>Detectable Auto-Repeat</glossterm> 208e9fcaa8aSmrg <glossdef> 209e9fcaa8aSmrg <para> 210e9fcaa8aSmrgDetectable auto-repeat allows a client to detect an auto-repeating key. If a 211e9fcaa8aSmrgclient requests and the server supports detectable auto-repeat, Xkb generates 212e9fcaa8aSmrg<emphasis> 213e9fcaa8aSmrgKeyRelease</emphasis> 214e9fcaa8aSmrg events only when the key is physically released. Thus the client receives a 215e9fcaa8aSmrgnumber of <emphasis> 216e9fcaa8aSmrgKeyPress</emphasis> 217e9fcaa8aSmrg events for that key without intervening <emphasis> 218e9fcaa8aSmrgKeyRelease</emphasis> 219e9fcaa8aSmrg events until the key is finally released, when a <emphasis> 220e9fcaa8aSmrgKeyRelease</emphasis> 221e9fcaa8aSmrg event is received. 222e9fcaa8aSmrg </para> 223e9fcaa8aSmrg </glossdef> 224e9fcaa8aSmrg</glossentry> 225e9fcaa8aSmrg<glossentry> 226e9fcaa8aSmrg <glossterm>Effective Group</glossterm> 227e9fcaa8aSmrg <glossdef> 228e9fcaa8aSmrg <para> 229e9fcaa8aSmrgThe effective group is the arithmetic sum of the locked, latched, and base 230e9fcaa8aSmrggroups. The effective keyboard group is always brought back into range 231e9fcaa8aSmrgdepending on the value of the <emphasis> 232e9fcaa8aSmrgGroupsWrap</emphasis> 233e9fcaa8aSmrg control for the keyboard. If an event occurs with an effective group that is 234e9fcaa8aSmrglegal for the keyboard as a whole, but not for the key in question, the group 235e9fcaa8aSmrg<emphasis> 236e9fcaa8aSmrgfor that event only</emphasis> 237e9fcaa8aSmrg is normalized using the algorithm specified by the <emphasis> 238e9fcaa8aSmrggroup_info</emphasis> 239e9fcaa8aSmrg member of the key symbol map (<emphasis> 240e9fcaa8aSmrgXkbSymMapRec</emphasis> 241e9fcaa8aSmrg). 242e9fcaa8aSmrg </para> 243e9fcaa8aSmrg </glossdef> 244e9fcaa8aSmrg</glossentry> 245e9fcaa8aSmrg<glossentry> 246e9fcaa8aSmrg <glossterm>Effective Mask</glossterm> 247e9fcaa8aSmrg <glossdef> 248e9fcaa8aSmrg <para> 249e9fcaa8aSmrgAn Xkb modifier definition consists of a set of bit masks corresponding to the 250e9fcaa8aSmrgeight real modifiers; a similar set of bitmasks corresponding to the 16 named 251e9fcaa8aSmrgvirtual modifiers; and an effective mask. The effective mask represents the set 252e9fcaa8aSmrgof all real modifiers that can logically be set either by setting any of the 253e9fcaa8aSmrgreal modifiers or by setting any of the virtual modifiers in the definition. 254e9fcaa8aSmrg </para> 255e9fcaa8aSmrg </glossdef> 256e9fcaa8aSmrg</glossentry> 257e9fcaa8aSmrg<glossentry> 258e9fcaa8aSmrg <glossterm>Effective Modifier</glossterm> 259e9fcaa8aSmrg <glossdef> 260e9fcaa8aSmrg <para> 261e9fcaa8aSmrgThe effective modifiers are the bitwise union of the base, latched and locked 262e9fcaa8aSmrgmodifiers. 263e9fcaa8aSmrg </para> 264e9fcaa8aSmrg </glossdef> 265e9fcaa8aSmrg</glossentry> 266e9fcaa8aSmrg<glossentry> 267e9fcaa8aSmrg <glossterm>Extension Device</glossterm> 268e9fcaa8aSmrg <glossdef> 269e9fcaa8aSmrg <para> 270e9fcaa8aSmrgAny keyboard or other input device recognized by the X input extension. 271e9fcaa8aSmrg </para> 272e9fcaa8aSmrg </glossdef> 273e9fcaa8aSmrg</glossentry> 274e9fcaa8aSmrg<glossentry> 275e9fcaa8aSmrg <glossterm>Global Keyboard Controls</glossterm> 276e9fcaa8aSmrg <glossdef> 277e9fcaa8aSmrg <para> 278e9fcaa8aSmrgControls that affect the way Xkb generates key events. The controls affect all 279e9fcaa8aSmrgkeys, as opposed to per-key controls that are for a single key. Global controls 280e9fcaa8aSmrginclude 281e9fcaa8aSmrg </para> 282e9fcaa8aSmrg <itemizedlist> 283e9fcaa8aSmrg <listitem> 284e9fcaa8aSmrg <para>RepeatKeys Control</para> 285e9fcaa8aSmrg </listitem> 286e9fcaa8aSmrg <listitem> 287e9fcaa8aSmrg <para>DetectableAuto-repeat</para> 288e9fcaa8aSmrg </listitem> 289e9fcaa8aSmrg <listitem> 290e9fcaa8aSmrg <para>SlowKeys</para> 291e9fcaa8aSmrg </listitem> 292e9fcaa8aSmrg <listitem> 293e9fcaa8aSmrg <para>BounceKeys</para> 294e9fcaa8aSmrg </listitem> 295e9fcaa8aSmrg <listitem> 296e9fcaa8aSmrg <para>StickyKeys</para> 297e9fcaa8aSmrg </listitem> 298e9fcaa8aSmrg <listitem> 299e9fcaa8aSmrg <para>MouseKeys</para> 300e9fcaa8aSmrg </listitem> 301e9fcaa8aSmrg <listitem> 302e9fcaa8aSmrg <para>MouseKeysAccel</para> 303e9fcaa8aSmrg </listitem> 304e9fcaa8aSmrg <listitem> 305e9fcaa8aSmrg <para>AccessXKeys</para> 306e9fcaa8aSmrg </listitem> 307e9fcaa8aSmrg <listitem> 308e9fcaa8aSmrg <para>AccessXTimeout</para> 309e9fcaa8aSmrg </listitem> 310e9fcaa8aSmrg <listitem> 311e9fcaa8aSmrg <para>AccessXFeedback</para> 312e9fcaa8aSmrg </listitem> 313e9fcaa8aSmrg <listitem> 314e9fcaa8aSmrg <para>Overlay1</para> 315e9fcaa8aSmrg </listitem> 316e9fcaa8aSmrg <listitem> 317e9fcaa8aSmrg <para>Overlay2</para> 318e9fcaa8aSmrg </listitem> 319e9fcaa8aSmrg <listitem> 320e9fcaa8aSmrg <para>EnabledControls</para> 321e9fcaa8aSmrg </listitem> 322e9fcaa8aSmrg </itemizedlist> 323e9fcaa8aSmrg </glossdef> 324e9fcaa8aSmrg</glossentry> 325e9fcaa8aSmrg<glossentry> 326e9fcaa8aSmrg <glossterm>Grab State</glossterm> 327e9fcaa8aSmrg <glossdef> 328e9fcaa8aSmrg <para> 329e9fcaa8aSmrgThe grab state is the state used when matching events to passive grabs. It 330e9fcaa8aSmrgconsists of the grab group and the grab modifiers. 331e9fcaa8aSmrg </para> 332e9fcaa8aSmrg </glossdef> 333e9fcaa8aSmrg</glossentry> 334e9fcaa8aSmrg<glossentry> 335e9fcaa8aSmrg <glossterm>Group</glossterm> 336e9fcaa8aSmrg <glossdef> 337e9fcaa8aSmrg <para>See Keysym Group</para> 338e9fcaa8aSmrg </glossdef> 339e9fcaa8aSmrg</glossentry> 340e9fcaa8aSmrg<glossentry> 341e9fcaa8aSmrg <glossterm>Group Index</glossterm> 342e9fcaa8aSmrg <glossdef> 343e9fcaa8aSmrg <para> 344e9fcaa8aSmrgA number used as the internal representation for a group number. Group1 through 345e9fcaa8aSmrgGroup 4 have indices of 0 through 3. 346e9fcaa8aSmrg </para> 347e9fcaa8aSmrg </glossdef> 348e9fcaa8aSmrg</glossentry> 349e9fcaa8aSmrg<glossentry> 350e9fcaa8aSmrg <glossterm>Groups Wrap Control</glossterm> 351e9fcaa8aSmrg <glossdef> 352e9fcaa8aSmrg <para> 353e9fcaa8aSmrgIf a group index exceeds the maximum number of groups permitted for the 354e9fcaa8aSmrgspecified keyboard, it is wrapped or truncated back into range as specified by 355e9fcaa8aSmrgthe global <emphasis>GroupsWrap</emphasis> control. <emphasis> 356e9fcaa8aSmrgGroupsWrap</emphasis> can have the following values: 357e9fcaa8aSmrg </para> 358e9fcaa8aSmrg <literallayout> 359e9fcaa8aSmrg <emphasis>WrapIntoRange</emphasis> 360e9fcaa8aSmrg <emphasis>ClampIntoRange</emphasis> 361e9fcaa8aSmrg <emphasis>RedirectIntoRange</emphasis> 362e9fcaa8aSmrg </literallayout> 363e9fcaa8aSmrg </glossdef> 364e9fcaa8aSmrg</glossentry> 365e9fcaa8aSmrg 366e9fcaa8aSmrg<glossentry> 367e9fcaa8aSmrg <glossterm>Key Type</glossterm> 368e9fcaa8aSmrg <glossdef> 369e9fcaa8aSmrg <para> 370e9fcaa8aSmrgAn attribute of a key that identifies which modifiers affect the shift level of 371e9fcaa8aSmrga key and the number of groups on the key. 372e9fcaa8aSmrg </para> 373e9fcaa8aSmrg </glossdef> 374e9fcaa8aSmrg</glossentry> 375e9fcaa8aSmrg<glossentry> 376e9fcaa8aSmrg <glossterm>Key Width</glossterm> 377e9fcaa8aSmrg <glossdef> 378e9fcaa8aSmrg <para> 379e9fcaa8aSmrgThe maximum number of shift levels in any group for the key type associated 380e9fcaa8aSmrgwith a key. 381e9fcaa8aSmrg </para> 382e9fcaa8aSmrg </glossdef> 383e9fcaa8aSmrg</glossentry> 384e9fcaa8aSmrg<glossentry> 385e9fcaa8aSmrg <glossterm>Keysym Group</glossterm> 386e9fcaa8aSmrg <glossdef> 387e9fcaa8aSmrg <para> 388e9fcaa8aSmrgA keysym group is a logical state of the keyboard providing access to a 389e9fcaa8aSmrgcollection of characters. A group usually contains a set of characters that 390e9fcaa8aSmrglogically belong together and that may be arranged on several shift levels 391e9fcaa8aSmrgwithin that group. For example, Group1 could be the English alphabet, and 392e9fcaa8aSmrgGroup2 could be Greek. Xkb supports up to four different groups for an input 393e9fcaa8aSmrgdevice or keyboard. Groups are in the range 1-4 (Group1 - Group4), and are 394e9fcaa8aSmrgoften referred to as G1 - G4 and indexed as 0 - 3. 395e9fcaa8aSmrg </para> 396e9fcaa8aSmrg </glossdef> 397e9fcaa8aSmrg</glossentry> 398e9fcaa8aSmrg<glossentry> 399e9fcaa8aSmrg <glossterm>Indicator</glossterm> 400e9fcaa8aSmrg <glossdef> 401e9fcaa8aSmrg <para> 402e9fcaa8aSmrgAn indicator is a feedback mechanism such as an LED on an input device. Using 403e9fcaa8aSmrgXkb, a client application can determine the names of the various indicators, 404e9fcaa8aSmrgdetermine and control the way that the individual indicators should be updated 405e9fcaa8aSmrgto reflect keyboard changes, and determine which of the 32 keyboard indicators 406e9fcaa8aSmrgreported by the protocol are actually present on the keyboard. 407e9fcaa8aSmrg </para> 408e9fcaa8aSmrg </glossdef> 409e9fcaa8aSmrg</glossentry> 410e9fcaa8aSmrg<glossentry> 411e9fcaa8aSmrg <glossterm>Indicator Feedback</glossterm> 412e9fcaa8aSmrg <glossdef> 413e9fcaa8aSmrg <para> 414e9fcaa8aSmrgAn indicator feedback describes the state of a bank of up to 32 lights. It has 415e9fcaa8aSmrga mask where each bit corresponds to a light and an associated value mask that 416e9fcaa8aSmrgspecifies which lights are on or off. 417e9fcaa8aSmrg </para> 418e9fcaa8aSmrg </glossdef> 419e9fcaa8aSmrg</glossentry> 420e9fcaa8aSmrg<glossentry> 421e9fcaa8aSmrg <glossterm>Indicator Map</glossterm> 422e9fcaa8aSmrg <glossdef> 423e9fcaa8aSmrg <para> 424e9fcaa8aSmrgAn indicator has its own set of attributes that specify whether clients can 425e9fcaa8aSmrgexplicitly set its state and whether it tracks the keyboard state. The 426e9fcaa8aSmrgindicator map is the collection of these attributes for each indicator and is 427e9fcaa8aSmrgheld in the <emphasis> 428e9fcaa8aSmrgmaps</emphasis> 429e9fcaa8aSmrg array, which is an array of <emphasis> 430e9fcaa8aSmrgXkbIndicatorRec</emphasis> 431e9fcaa8aSmrg structures. 432e9fcaa8aSmrg </para> 433e9fcaa8aSmrg </glossdef> 434e9fcaa8aSmrg</glossentry> 435e9fcaa8aSmrg<glossentry> 436e9fcaa8aSmrg <glossterm>Input Extension</glossterm> 437e9fcaa8aSmrg <glossdef> 438e9fcaa8aSmrg <para> 439e9fcaa8aSmrgAn extension to the core X protocol that allows an X server to support multiple 440e9fcaa8aSmrgkeyboards, as well as other input devices, in addition to the core X keyboard 441e9fcaa8aSmrgand pointer. Other types of devices supported by the input extension include, 442e9fcaa8aSmrgbut are not limited to: mice, tablets, touchscreens, barcode readers, button 443e9fcaa8aSmrgboxes, trackballs, identifier devices, data gloves, and eye trackers. 444e9fcaa8aSmrg </para> 445e9fcaa8aSmrg </glossdef> 446e9fcaa8aSmrg</glossentry> 447e9fcaa8aSmrg<glossentry> 448e9fcaa8aSmrg <glossterm>Key Action</glossterm> 449e9fcaa8aSmrg <glossdef> 450e9fcaa8aSmrg <para> 451e9fcaa8aSmrgA key action consists of an operator and some optional data. Once the server 452e9fcaa8aSmrghas applied the global controls and per-key behavior and has decided to process 453e9fcaa8aSmrga key event, it applies key actions to determine the effects of the key on the 454e9fcaa8aSmrginternal state of the server. Xkb supports actions that do the following: 455e9fcaa8aSmrg </para> 456e9fcaa8aSmrg <itemizedlist> 457e9fcaa8aSmrg <listitem> 458e9fcaa8aSmrg <para> 459e9fcaa8aSmrgChange base, latched, or locked modifiers or group 460e9fcaa8aSmrg </para> 461e9fcaa8aSmrg </listitem> 462e9fcaa8aSmrg <listitem> 463e9fcaa8aSmrg <para> 464e9fcaa8aSmrgMove the core pointer or simulate core pointer button events 465e9fcaa8aSmrg </para> 466e9fcaa8aSmrg </listitem> 467e9fcaa8aSmrg <listitem> 468e9fcaa8aSmrg <para> 469e9fcaa8aSmrgChange most aspects of keyboard behavior 470e9fcaa8aSmrg </para> 471e9fcaa8aSmrg </listitem> 472e9fcaa8aSmrg <listitem> 473e9fcaa8aSmrg <para> 474e9fcaa8aSmrgTerminate or suspend the server 475e9fcaa8aSmrg </para> 476e9fcaa8aSmrg </listitem> 477e9fcaa8aSmrg <listitem> 478e9fcaa8aSmrg <para> 479e9fcaa8aSmrgSend a message to interested clients 480e9fcaa8aSmrg </para> 481e9fcaa8aSmrg </listitem> 482e9fcaa8aSmrg <listitem> 483e9fcaa8aSmrg <para> 484e9fcaa8aSmrgSimulate events on other keys 485e9fcaa8aSmrg </para> 486e9fcaa8aSmrg </listitem> 487e9fcaa8aSmrg </itemizedlist> 488e9fcaa8aSmrg </glossdef> 489e9fcaa8aSmrg</glossentry> 490e9fcaa8aSmrg 491e9fcaa8aSmrg<glossentry> 492e9fcaa8aSmrg <glossterm>Key Alias</glossterm> 493e9fcaa8aSmrg <glossdef> 494e9fcaa8aSmrg <para> 495e9fcaa8aSmrgA key alias is a symbolic name for a specific physical key. Key aliases allow 496e9fcaa8aSmrgthe keyboard layout designer to assign multiple key names to a single key. This 497e9fcaa8aSmrgallows the keyboard layout designer to refer to keys using either their 498e9fcaa8aSmrgposition or their "function." Key aliases can be specified both in the symbolic 499e9fcaa8aSmrgnames component and in the keyboard geometry. Both sets of aliases are always 500e9fcaa8aSmrgvalid, but key alias definitions in the keyboard geometry have priority; if 501e9fcaa8aSmrgboth symbolic names and geometry include aliases, you should consider the 502e9fcaa8aSmrgdefinitions from the geometry before considering the definitions from the 503e9fcaa8aSmrgsymbolic names section. 504e9fcaa8aSmrg </para> 505e9fcaa8aSmrg </glossdef> 506e9fcaa8aSmrg</glossentry> 507e9fcaa8aSmrg<glossentry> 508e9fcaa8aSmrg <glossterm>Key Behavior</glossterm> 509e9fcaa8aSmrg <glossdef> 510e9fcaa8aSmrg <para> 511e9fcaa8aSmrgThe <emphasis> 512e9fcaa8aSmrgbehaviors</emphasis> 513e9fcaa8aSmrg field of the server map is an array of <emphasis> 514e9fcaa8aSmrgXkbBehavior</emphasis> 515e9fcaa8aSmrg, indexed by keycode, and contains the behavior for each key. The X server uses 516e9fcaa8aSmrgkey behavior to determine whether to process or filter out any given key event; 517e9fcaa8aSmrgkey behavior is independent of keyboard modifier or group state. Each key has 518e9fcaa8aSmrgexactly one behavior. 519e9fcaa8aSmrg </para> 520e9fcaa8aSmrg <para>Key behaviors include:</para> 521e9fcaa8aSmrg <itemizedlist> 522e9fcaa8aSmrg <listitem> 523e9fcaa8aSmrg <para>XkbKB_Default</para> 524e9fcaa8aSmrg </listitem> 525e9fcaa8aSmrg <listitem> 526e9fcaa8aSmrg <para>XkbKB_Lock</para> 527e9fcaa8aSmrg </listitem> 528e9fcaa8aSmrg <listitem> 529e9fcaa8aSmrg <para>XkbKB_RadioGroup</para> 530e9fcaa8aSmrg </listitem> 531e9fcaa8aSmrg <listitem> 532e9fcaa8aSmrg <para>XkbKB_Overlay1</para> 533e9fcaa8aSmrg </listitem> 534e9fcaa8aSmrg <listitem> 535e9fcaa8aSmrg <para>XkbKB_Overlay2</para> 536e9fcaa8aSmrg </listitem> 537e9fcaa8aSmrg </itemizedlist> 538e9fcaa8aSmrg </glossdef> 539e9fcaa8aSmrg</glossentry> 540e9fcaa8aSmrg<glossentry> 541e9fcaa8aSmrg <glossterm>Key Symbol Map</glossterm> 542e9fcaa8aSmrg <glossdef> 543e9fcaa8aSmrg <para> 544e9fcaa8aSmrgA key symbol map describes the symbols bound to a key and the rules to be used 545e9fcaa8aSmrgto interpret those symbols. It is an array of <emphasis> 546e9fcaa8aSmrgXkbSymMapRec</emphasis> 547e9fcaa8aSmrg structures indexed by keycode. 548e9fcaa8aSmrg </para> 549e9fcaa8aSmrg </glossdef> 550e9fcaa8aSmrg</glossentry> 551e9fcaa8aSmrg<glossentry> 552e9fcaa8aSmrg <glossterm>Key Type</glossterm> 553e9fcaa8aSmrg <glossdef> 554e9fcaa8aSmrg <para> 555e9fcaa8aSmrgKey types are used to determine the shift level of a key given the current 556e9fcaa8aSmrgstate of the keyboard. There is one key type for each group for a key. Key 557e9fcaa8aSmrgtypes are defined using the <emphasis> 558e9fcaa8aSmrgXkbKeyTypeRec</emphasis> 559e9fcaa8aSmrg and <emphasis> 560e9fcaa8aSmrgXkbKTMapEntryRec</emphasis> 561e9fcaa8aSmrg structures. Xkb allows up to <emphasis> 562e9fcaa8aSmrgXkbMaxKeyTypes</emphasis> 563e9fcaa8aSmrg (255) key types to be defined, but requires at least <emphasis> 564e9fcaa8aSmrgXkbNumRequiredTypes</emphasis> 565e9fcaa8aSmrg (4) predefined types to be in a key map. 566e9fcaa8aSmrg </para> 567e9fcaa8aSmrg </glossdef> 568e9fcaa8aSmrg</glossentry> 569e9fcaa8aSmrg<glossentry> 570e9fcaa8aSmrg <glossterm>Keyboard Bells</glossterm> 571e9fcaa8aSmrg <glossdef> 572e9fcaa8aSmrg <para> 573e9fcaa8aSmrgThe sound the default bell makes when rung is the system bell or the default 574e9fcaa8aSmrgkeyboard bell. Some input devices may have more than one bell, identified by 575e9fcaa8aSmrg<emphasis>bell_class</emphasis> and <emphasis>bell_id</emphasis>. 576e9fcaa8aSmrg </para> 577e9fcaa8aSmrg </glossdef> 578e9fcaa8aSmrg</glossentry> 579e9fcaa8aSmrg<glossentry> 580e9fcaa8aSmrg <glossterm>Keyboard Components</glossterm> 581e9fcaa8aSmrg <glossdef> 582e9fcaa8aSmrg <para> 583e9fcaa8aSmrgThere are five types of components stored in the X server database of keyboard 584e9fcaa8aSmrgcomponents. They correspond to the <emphasis> 585e9fcaa8aSmrgsymbols, geometry, keycodes, compat, </emphasis> 586e9fcaa8aSmrgand<emphasis> 587e9fcaa8aSmrg types</emphasis> 588e9fcaa8aSmrg symbolic names associated with a keyboard. 589e9fcaa8aSmrg </para> 590e9fcaa8aSmrg </glossdef> 591e9fcaa8aSmrg</glossentry> 592e9fcaa8aSmrg<glossentry> 593e9fcaa8aSmrg <glossterm>Keyboard Feedback</glossterm> 594e9fcaa8aSmrg <glossdef> 595e9fcaa8aSmrg <para> 596e9fcaa8aSmrgA keyboard feedback includes the following: 597e9fcaa8aSmrg </para> 598e9fcaa8aSmrg<literallayout> 599e9fcaa8aSmrg Keyclick volume 600e9fcaa8aSmrg Bell volume 601e9fcaa8aSmrg Bell pitch 602e9fcaa8aSmrg Bell duration 603e9fcaa8aSmrg Global auto-repeat 604e9fcaa8aSmrg Per key auto-repeat 605e9fcaa8aSmrg 32 LEDs 606e9fcaa8aSmrg</literallayout> 607e9fcaa8aSmrg </glossdef> 608e9fcaa8aSmrg</glossentry> 609e9fcaa8aSmrg 610e9fcaa8aSmrg<glossentry> 611e9fcaa8aSmrg <glossterm>Key Width, Key Type Width</glossterm> 612e9fcaa8aSmrg <glossdef> 613e9fcaa8aSmrg <para> 614e9fcaa8aSmrgThe maximum number of shift levels for a type is referred to as the width of a 615e9fcaa8aSmrgkey type. 616e9fcaa8aSmrg </para> 617e9fcaa8aSmrg </glossdef> 618e9fcaa8aSmrg</glossentry> 619e9fcaa8aSmrg<glossentry> 620e9fcaa8aSmrg <glossterm>Keyboard Geometry</glossterm> 621e9fcaa8aSmrg <glossdef> 622e9fcaa8aSmrg <para> 623e9fcaa8aSmrgKeyboard geometry describes the physical appearance of the keyboard, including 624e9fcaa8aSmrgthe shape, location, and color of all keyboard keys or other visible keyboard 625e9fcaa8aSmrgcomponents such as indicators and is stored in a <emphasis> 626e9fcaa8aSmrgXkbGeometryRec</emphasis> 627e9fcaa8aSmrg structure. The information contained in a keyboard geometry is sufficient to 628e9fcaa8aSmrgallow a client program to draw an accurate two-dimensional image of the 629e9fcaa8aSmrgkeyboard. 630e9fcaa8aSmrg </para> 631e9fcaa8aSmrg </glossdef> 632e9fcaa8aSmrg</glossentry> 633e9fcaa8aSmrg<glossentry> 634e9fcaa8aSmrg <glossterm>Keyboard Geometry Name</glossterm> 635e9fcaa8aSmrg <glossdef> 636e9fcaa8aSmrg <para> 637e9fcaa8aSmrgThe keyboard geometry name describes the physical location, size, and shape of 638e9fcaa8aSmrgthe various keys on the keyboard and is part of the <emphasis> 639e9fcaa8aSmrgXkbNamesRec</emphasis> 640e9fcaa8aSmrg structure. 641e9fcaa8aSmrg </para> 642e9fcaa8aSmrg </glossdef> 643e9fcaa8aSmrg</glossentry> 644e9fcaa8aSmrg<glossentry> 645e9fcaa8aSmrg <glossterm>Keyboard State</glossterm> 646e9fcaa8aSmrg <glossdef> 647e9fcaa8aSmrg <para> 648e9fcaa8aSmrgKeyboard state encompasses all of the transitory information necessary to map a 649e9fcaa8aSmrgphysical key press or release to an appropriate event. 650e9fcaa8aSmrg </para> 651e9fcaa8aSmrg </glossdef> 652e9fcaa8aSmrg</glossentry> 653e9fcaa8aSmrg<glossentry> 654e9fcaa8aSmrg <glossterm>Keycode</glossterm> 655e9fcaa8aSmrg <glossdef> 656e9fcaa8aSmrg <para> 657e9fcaa8aSmrgA numeric value returned to the X server when a key on a keyboard is pressed or 658e9fcaa8aSmrgreleased, indicating which key is being modulated. Keycode numbers are in the 659e9fcaa8aSmrgrange 1 <= keycode <= max, where max is the number of physical keys on 660e9fcaa8aSmrgthe device. 661e9fcaa8aSmrg </para> 662e9fcaa8aSmrg </glossdef> 663e9fcaa8aSmrg</glossentry> 664e9fcaa8aSmrg<glossentry> 665e9fcaa8aSmrg <glossterm>Keycode Name</glossterm> 666e9fcaa8aSmrg <glossdef> 667e9fcaa8aSmrg <para> 668e9fcaa8aSmrgThe keycode name describes the range and meaning of the keycodes returned by 669e9fcaa8aSmrgthe keyboard and is part of the <emphasis> 670e9fcaa8aSmrgXkbNamesRec</emphasis> 671e9fcaa8aSmrg structure. 672e9fcaa8aSmrg </para> 673e9fcaa8aSmrg </glossdef> 674e9fcaa8aSmrg</glossentry> 675e9fcaa8aSmrg<glossentry> 676e9fcaa8aSmrg <glossterm>Latched Group</glossterm> 677e9fcaa8aSmrg <glossdef> 678e9fcaa8aSmrg <para> 679e9fcaa8aSmrgA latched group is a group index that is combined with the base and locked 680e9fcaa8aSmrggroup to form the effective group. It applies only to the next key event that 681e9fcaa8aSmrgdoes not change the keyboard state. The latched group can be changed by 682e9fcaa8aSmrgkeyboard activity or via Xkb extension library functions. 683e9fcaa8aSmrg </para> 684e9fcaa8aSmrg </glossdef> 685e9fcaa8aSmrg</glossentry> 686e9fcaa8aSmrg<glossentry> 687e9fcaa8aSmrg <glossterm>Latched Modifier</glossterm> 688e9fcaa8aSmrg <glossdef> 689e9fcaa8aSmrg <para> 690e9fcaa8aSmrgLatched modifiers are the set of modifiers that are combined with the base 691e9fcaa8aSmrgmodifiers and the locked modifiers to form the effective modifiers. It applies 692e9fcaa8aSmrgonly to the next key event that does not change the keyboard state. 693e9fcaa8aSmrg </para> 694e9fcaa8aSmrg </glossdef> 695e9fcaa8aSmrg</glossentry> 696e9fcaa8aSmrg<glossentry> 697e9fcaa8aSmrg <glossterm>LED</glossterm> 698e9fcaa8aSmrg <glossdef> 699e9fcaa8aSmrg <para> 700e9fcaa8aSmrgA light emitting diode. However, for the purposes of the X keyboard extension 701e9fcaa8aSmrgspecification, a LED is any form of visual two-state indicator that is either 702e9fcaa8aSmrgon or off. 703e9fcaa8aSmrg </para> 704e9fcaa8aSmrg </glossdef> 705e9fcaa8aSmrg</glossentry> 706e9fcaa8aSmrg<glossentry> 707e9fcaa8aSmrg <glossterm>Locked Group</glossterm> 708e9fcaa8aSmrg <glossdef> 709e9fcaa8aSmrg <para> 710e9fcaa8aSmrgA locked group is a group index that is combined with the base and latched 711e9fcaa8aSmrggroup to form the effective group. When a group is locked, it supersedes any 712e9fcaa8aSmrgprevious locked group and remains the locked group for all future key events, 713e9fcaa8aSmrguntil a new group is locked. The locked group can be changed by keyboard 714e9fcaa8aSmrgactivity or via Xkb extension library functions. 715e9fcaa8aSmrg </para> 716e9fcaa8aSmrg </glossdef> 717e9fcaa8aSmrg</glossentry> 718e9fcaa8aSmrg<glossentry> 719e9fcaa8aSmrg <glossterm>Locked Modifiers</glossterm> 720e9fcaa8aSmrg <glossdef> 721e9fcaa8aSmrg <para> 722e9fcaa8aSmrgLocked modifiers are the set of modifiers that are combined with the base 723e9fcaa8aSmrgmodifiers and the latched modifiers to form the effective modifiers. A locked 724e9fcaa8aSmrgmodifier applies to all future key events until it is explicitly unlocked. 725e9fcaa8aSmrg </para> 726e9fcaa8aSmrg </glossdef> 727e9fcaa8aSmrg</glossentry> 728e9fcaa8aSmrg<glossentry> 729e9fcaa8aSmrg <glossterm>Lookup State </glossterm> 730e9fcaa8aSmrg <glossdef> 731e9fcaa8aSmrg <para> 732e9fcaa8aSmrgThe lookup state is composed of the lookup group and the lookup modifiers, and 733e9fcaa8aSmrgit is the state an Xkb-capable or Xkb-aware client should use to map a keycode 734e9fcaa8aSmrgto a keysym. 735e9fcaa8aSmrg </para> 736e9fcaa8aSmrg </glossdef> 737e9fcaa8aSmrg</glossentry> 738e9fcaa8aSmrg<glossentry> 739e9fcaa8aSmrg <glossterm>Modifier</glossterm> 740e9fcaa8aSmrg <glossdef> 741e9fcaa8aSmrg <para> 742e9fcaa8aSmrgA modifier is a logical condition that is either set or unset. The modifiers 743e9fcaa8aSmrgcontrol the Shift Level selected when a key event occurs. Xkb supports the core 744e9fcaa8aSmrgprotocol eight modifiers (<emphasis> 745e9fcaa8aSmrgShift</emphasis> 746e9fcaa8aSmrg, <emphasis> 747e9fcaa8aSmrgLock</emphasis> 748e9fcaa8aSmrg, <emphasis> 749e9fcaa8aSmrgControl</emphasis> 750e9fcaa8aSmrg, and <emphasis> 751e9fcaa8aSmrgMod1</emphasis> 752e9fcaa8aSmrg through <emphasis> 753e9fcaa8aSmrgMod5</emphasis> 754e9fcaa8aSmrg), called the <emphasis> 755e9fcaa8aSmrgreal</emphasis> 756e9fcaa8aSmrg modifiers. In addition, Xkb extends modifier flexibility by providing a set of 757e9fcaa8aSmrgsixteen named virtual modifiers, each of which can be bound to any set of the 758e9fcaa8aSmrgeight real modifiers. 759e9fcaa8aSmrg </para> 760e9fcaa8aSmrg </glossdef> 761e9fcaa8aSmrg</glossentry> 762e9fcaa8aSmrg<glossentry> 763e9fcaa8aSmrg <glossterm>Modifier Key</glossterm> 764e9fcaa8aSmrg <glossdef> 765e9fcaa8aSmrg <para> 766e9fcaa8aSmrgA modifier key is a key whose operation has no immediate effect, but that, for 767e9fcaa8aSmrgas long as it is held down, modifies the effect of other keys. A modifier key 768e9fcaa8aSmrgmay be, for example, a shift key or a control key. 769e9fcaa8aSmrg </para> 770e9fcaa8aSmrg </glossdef> 771e9fcaa8aSmrg</glossentry> 772e9fcaa8aSmrg<glossentry> 773e9fcaa8aSmrg <glossterm>Modifier Definition</glossterm> 774e9fcaa8aSmrg <glossdef> 775e9fcaa8aSmrg <para> 776e9fcaa8aSmrgAn Xkb modifier definition, held in an <emphasis> 777e9fcaa8aSmrgXkbModsRec</emphasis> 778e9fcaa8aSmrg, consists of a set of real modifiers, a set of virtual modifiers, and an 779e9fcaa8aSmrgeffective mask. The mask is the union of the real modifiers and the set of real 780e9fcaa8aSmrgmodifiers to which the virtual modifiers map; the mask cannot be explicitly 781e9fcaa8aSmrgchanged. 782e9fcaa8aSmrg </para> 783e9fcaa8aSmrg </glossdef> 784e9fcaa8aSmrg</glossentry> 785e9fcaa8aSmrg<glossentry> 786e9fcaa8aSmrg <glossterm>Nonkeyboard Extension Device </glossterm> 787e9fcaa8aSmrg <glossdef> 788e9fcaa8aSmrg <para> 789e9fcaa8aSmrgAn input extension device that is not a keyboard. Other types of devices 790e9fcaa8aSmrgsupported by the input extension include, but are not limited to: mice, 791e9fcaa8aSmrgtablets, touchscreens, barcode readers, button boxes, trackballs, identifier 792e9fcaa8aSmrgdevices, data gloves, and eye trackers. 793e9fcaa8aSmrg </para> 794e9fcaa8aSmrg </glossdef> 795e9fcaa8aSmrg</glossentry> 796e9fcaa8aSmrg<glossentry> 797e9fcaa8aSmrg <glossterm>Outlines</glossterm> 798e9fcaa8aSmrg <glossdef> 799e9fcaa8aSmrg <para> 800e9fcaa8aSmrgAn outline is a list of one or more points that describes a single closed 801e9fcaa8aSmrgpolygon, used in the geometry specification for a keyboard. 802e9fcaa8aSmrg </para> 803e9fcaa8aSmrg </glossdef> 804e9fcaa8aSmrg</glossentry> 805e9fcaa8aSmrg<glossentry> 806e9fcaa8aSmrg <glossterm>Physical Indicator Mask</glossterm> 807e9fcaa8aSmrg <glossdef> 808e9fcaa8aSmrg <para> 809e9fcaa8aSmrgThe physical indicator mask is a field in the <emphasis> 810e9fcaa8aSmrgXkbIndicatorRec</emphasis> 811e9fcaa8aSmrg that indicates which indicators are bound to physical LEDs on the keyboard; if 812e9fcaa8aSmrga bit is set in <emphasis> 813e9fcaa8aSmrgphys_indicators</emphasis> 814e9fcaa8aSmrg, then the associated indicator has a physical LED associated with it. This 815e9fcaa8aSmrgfield is necessary because some indicators may not have corresponding physical 816e9fcaa8aSmrgLEDs on the keyboard. 817e9fcaa8aSmrg </para> 818e9fcaa8aSmrg </glossdef> 819e9fcaa8aSmrg</glossentry> 820e9fcaa8aSmrg<glossentry> 821e9fcaa8aSmrg <glossterm>Physical Symbol Keyboard Name</glossterm> 822e9fcaa8aSmrg <glossdef> 823e9fcaa8aSmrg <para> 824e9fcaa8aSmrgThe <emphasis> 825e9fcaa8aSmrgsymbols</emphasis> 826e9fcaa8aSmrg keyboard name identifies the symbols logically bound to the keys. The symbols 827e9fcaa8aSmrgname is a human or application-readable description of the intended locale or 828e9fcaa8aSmrgusage of the keyboard with these symbols. The <emphasis> 829e9fcaa8aSmrgphys_symbols</emphasis> 830e9fcaa8aSmrg keyboard name, on the other hand, identifies the symbols actually engraved on 831e9fcaa8aSmrgthe keyboard. 832e9fcaa8aSmrg </para> 833e9fcaa8aSmrg </glossdef> 834e9fcaa8aSmrg</glossentry> 835e9fcaa8aSmrg<glossentry> 836e9fcaa8aSmrg <glossterm>Preserved Modifier</glossterm> 837e9fcaa8aSmrg <glossdef> 838e9fcaa8aSmrg <para> 839e9fcaa8aSmrgXkb normally consumes modifiers in determining the appropriate symbol for an 840e9fcaa8aSmrgevent, that is, the modifiers are not considered during any of the later stages 841e9fcaa8aSmrgof event processing. For those rare occasions when a modifier <emphasis> 842e9fcaa8aSmrgshould</emphasis> 843e9fcaa8aSmrg be considered despite having been used to look up a symbol, key types include 844e9fcaa8aSmrgan optional <emphasis> 845e9fcaa8aSmrgpreserve</emphasis> 846e9fcaa8aSmrg field. If a modifier is present in the <emphasis> 847e9fcaa8aSmrgpreserve</emphasis> 848e9fcaa8aSmrg list, it is a preserved modifier. 849e9fcaa8aSmrg </para> 850e9fcaa8aSmrg </glossdef> 851e9fcaa8aSmrg</glossentry> 852e9fcaa8aSmrg<glossentry> 853e9fcaa8aSmrg <glossterm>Radio Group</glossterm> 854e9fcaa8aSmrg <glossdef> 855e9fcaa8aSmrg <para> 856e9fcaa8aSmrgA radio group is a set of keys whose behavior simulates a set of radio buttons. 857e9fcaa8aSmrgOnce a key in a radio group is pressed, it stays logically depressed until 858e9fcaa8aSmrganother key in the group is pressed, at which point the previously depressed 859e9fcaa8aSmrgkey is logically released. Consequently, at most one key in a radio group can 860e9fcaa8aSmrgbe logically depressed at one time. 861e9fcaa8aSmrg </para> 862e9fcaa8aSmrg </glossdef> 863e9fcaa8aSmrg</glossentry> 864e9fcaa8aSmrg<glossentry> 865e9fcaa8aSmrg <glossterm>Real Modifier</glossterm> 866e9fcaa8aSmrg <glossdef> 867e9fcaa8aSmrg <para> 868e9fcaa8aSmrgXkb supports the eight core protocol modifiers (<emphasis> 869e9fcaa8aSmrgShift</emphasis> 870e9fcaa8aSmrg, <emphasis> 871e9fcaa8aSmrgLock</emphasis> 872e9fcaa8aSmrg, <emphasis> 873e9fcaa8aSmrgControl</emphasis> 874e9fcaa8aSmrg, and <emphasis> 875e9fcaa8aSmrgMod1</emphasis> 876e9fcaa8aSmrg through <emphasis> 877e9fcaa8aSmrgMod5</emphasis> 878e9fcaa8aSmrg); these are called the <emphasis> 879e9fcaa8aSmrgreal</emphasis> 880e9fcaa8aSmrg modifiers, as opposed to the set of sixteen named virtual modifiers that can 881e9fcaa8aSmrgbe bound to any set of the eight real modifiers. 882e9fcaa8aSmrg </para> 883e9fcaa8aSmrg </glossdef> 884e9fcaa8aSmrg</glossentry> 885e9fcaa8aSmrg<glossentry> 886e9fcaa8aSmrg <glossterm>Server Internal Modifiers</glossterm> 887e9fcaa8aSmrg <glossdef> 888e9fcaa8aSmrg <para> 889e9fcaa8aSmrgModifiers that the server uses to determine the appropriate symbol for an 890e9fcaa8aSmrgevent; internal modifiers are normally consumed by the server. 891e9fcaa8aSmrg </para> 892e9fcaa8aSmrg </glossdef> 893e9fcaa8aSmrg</glossentry> 894e9fcaa8aSmrg<glossentry> 895e9fcaa8aSmrg <glossterm>Shift Level</glossterm> 896e9fcaa8aSmrg <glossdef> 897e9fcaa8aSmrg <para> 898e9fcaa8aSmrgOne of several states (normally 2 or 3) governing which graphic character is 899e9fcaa8aSmrgproduced when a key is actuated. 900e9fcaa8aSmrg </para> 901e9fcaa8aSmrg </glossdef> 902e9fcaa8aSmrg</glossentry> 903e9fcaa8aSmrg<glossentry> 904e9fcaa8aSmrg <glossterm>Symbol Keyboard Name</glossterm> 905e9fcaa8aSmrg <glossdef> 906e9fcaa8aSmrg <para> 907e9fcaa8aSmrgThe <emphasis> 908e9fcaa8aSmrgsymbols</emphasis> 909e9fcaa8aSmrg keyboard name identifies the symbols logically bound to the keys. The symbols 910e9fcaa8aSmrgname is a human or application-readable description of the intended locale or 911e9fcaa8aSmrgusage of the keyboard with these symbols. The <emphasis> 912e9fcaa8aSmrgphys_symbols</emphasis> 913e9fcaa8aSmrg keyboard name, on the other hand, identifies the symbols actually engraved on 914e9fcaa8aSmrgthe keyboard. 915e9fcaa8aSmrg </para> 916e9fcaa8aSmrg </glossdef> 917e9fcaa8aSmrg</glossentry> 918e9fcaa8aSmrg<glossentry> 919e9fcaa8aSmrg <glossterm>Symbolic Name</glossterm> 920e9fcaa8aSmrg <glossdef> 921e9fcaa8aSmrg <para> 922e9fcaa8aSmrgXkb supports symbolic names for most components of the keyboard extension. Most 923e9fcaa8aSmrgof these symbolic names are grouped into the <emphasis> 924e9fcaa8aSmrgnames</emphasis> 925e9fcaa8aSmrg component of the keyboard description. 926e9fcaa8aSmrg </para> 927e9fcaa8aSmrg </glossdef> 928e9fcaa8aSmrg</glossentry> 929e9fcaa8aSmrg<glossentry> 930e9fcaa8aSmrg <glossterm>State Field</glossterm> 931e9fcaa8aSmrg <glossdef> 932e9fcaa8aSmrg <para> 933e9fcaa8aSmrgThe portion of a client-side core protocol event that holds the modifier, 934e9fcaa8aSmrggroup, and button state information pertaining to the event. 935e9fcaa8aSmrg </para> 936e9fcaa8aSmrg </glossdef> 937e9fcaa8aSmrg</glossentry> 938e9fcaa8aSmrg<glossentry> 939e9fcaa8aSmrg <glossterm>Types Name</glossterm> 940e9fcaa8aSmrg <glossdef> 941e9fcaa8aSmrg <para> 942e9fcaa8aSmrgThe <emphasis> 943e9fcaa8aSmrgtypes</emphasis> 944e9fcaa8aSmrg name provides some information about the set of key types that can be 945e9fcaa8aSmrgassociated with the keyboard. In addition, each key type can have a name, and 946e9fcaa8aSmrgeach shift level of a type can have a name. 947e9fcaa8aSmrg </para> 948e9fcaa8aSmrg </glossdef> 949e9fcaa8aSmrg</glossentry> 950e9fcaa8aSmrg<glossentry> 951e9fcaa8aSmrg <glossterm>Valuator</glossterm> 952e9fcaa8aSmrg <glossdef> 953e9fcaa8aSmrg <para> 954e9fcaa8aSmrgA valuator reports a range of values for some entity, like a mouse axis, a 955e9fcaa8aSmrgslider, or a dial. 956e9fcaa8aSmrg </para> 957e9fcaa8aSmrg </glossdef> 958e9fcaa8aSmrg</glossentry> 959e9fcaa8aSmrg<glossentry> 960e9fcaa8aSmrg <glossterm>Virtual Modifier</glossterm> 961e9fcaa8aSmrg <glossdef> 962e9fcaa8aSmrg <para> 963e9fcaa8aSmrgXkb provides a set of sixteen named virtual modifiers that can be bound to any 964e9fcaa8aSmrgset of the eight real modifiers. Each virtual modifier can be bound to any set 965e9fcaa8aSmrgof the real modifiers (<emphasis> 966e9fcaa8aSmrgShift</emphasis> 967e9fcaa8aSmrg, <emphasis> 968e9fcaa8aSmrgLock</emphasis> 969e9fcaa8aSmrg, <emphasis> 970e9fcaa8aSmrgControl,</emphasis> 971e9fcaa8aSmrg and <emphasis> 972e9fcaa8aSmrgMod1</emphasis> 973e9fcaa8aSmrg-<emphasis> 974e9fcaa8aSmrgMod5</emphasis> 975e9fcaa8aSmrg). 976e9fcaa8aSmrg </para> 977e9fcaa8aSmrg </glossdef> 978e9fcaa8aSmrg</glossentry> 979e9fcaa8aSmrg<glossentry> 980e9fcaa8aSmrg <glossterm>Virtual Modifier Mapping</glossterm> 981e9fcaa8aSmrg <glossdef> 982e9fcaa8aSmrg <para> 983e9fcaa8aSmrgXkb maintains a virtual modifier mapping, which lists the virtual modifiers 984e9fcaa8aSmrgassociated with each key. 985e9fcaa8aSmrg </para> 986e9fcaa8aSmrg </glossdef> 987e9fcaa8aSmrg</glossentry> 988e9fcaa8aSmrg<glossentry> 989e9fcaa8aSmrg <glossterm>Xkb-aware Client</glossterm> 990e9fcaa8aSmrg <glossdef> 991e9fcaa8aSmrg <para> 992e9fcaa8aSmrgA client application that initializes Xkb extension and is consequently bound 993e9fcaa8aSmrgto an Xlib that includes the Xkb extension. 994e9fcaa8aSmrg </para> 995e9fcaa8aSmrg </glossdef> 996e9fcaa8aSmrg</glossentry> 997e9fcaa8aSmrg<glossentry> 998e9fcaa8aSmrg <glossterm>Xkb-capable Client</glossterm> 999e9fcaa8aSmrg <glossdef> 1000e9fcaa8aSmrg <para> 1001e9fcaa8aSmrgA client application that makes no Xkb extension Xlib calls but is bound to an 1002e9fcaa8aSmrgXlib that includes the Xkb extension. 1003e9fcaa8aSmrg </para> 1004e9fcaa8aSmrg </glossdef> 1005e9fcaa8aSmrg</glossentry> 1006e9fcaa8aSmrg<glossentry> 1007e9fcaa8aSmrg <glossterm>Xkb-unaware Client</glossterm> 1008e9fcaa8aSmrg <glossdef> 1009e9fcaa8aSmrg <para> 1010e9fcaa8aSmrgA client application that makes no Xkb extension Xlib calls and is bound to an 1011e9fcaa8aSmrgXlib that does not include the Xkb extension. 1012e9fcaa8aSmrg </para> 1013e9fcaa8aSmrg </glossdef> 1014e9fcaa8aSmrg</glossentry> 1015e9fcaa8aSmrg 1016e9fcaa8aSmrg</glossary> 1017