10f8248bfSmrg<?xml version="1.0" encoding="UTF-8" ?> 20f8248bfSmrg<!DOCTYPE glossary PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN" 30f8248bfSmrg "http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"> 4e9fcaa8aSmrg<glossary id='glossary'> 5e9fcaa8aSmrg<title>Glossary</title> 6e9fcaa8aSmrg<glossentry> 7e9fcaa8aSmrg <glossterm>Allocator</glossterm> 8e9fcaa8aSmrg <glossdef> 9e9fcaa8aSmrg <para> 10e9fcaa8aSmrgXkb provides functions, known as allocators, to create and initialize Xkb data 11e9fcaa8aSmrgstructures. 12e9fcaa8aSmrg </para> 13e9fcaa8aSmrg </glossdef> 14e9fcaa8aSmrg</glossentry> 15e9fcaa8aSmrg<glossentry> 16e9fcaa8aSmrg <glossterm>Audible Bell</glossterm> 17e9fcaa8aSmrg <glossdef> 18e9fcaa8aSmrg <para> 19e9fcaa8aSmrgAn audible bell is the sound generated by whatever bell is associated with the 20e9fcaa8aSmrgkeyboard or input extension device, as opposed to any other audible sound 21e9fcaa8aSmrggenerated elsewhere in the system. 22e9fcaa8aSmrg </para> 23e9fcaa8aSmrg </glossdef> 24e9fcaa8aSmrg</glossentry> 25e9fcaa8aSmrg<glossentry> 26e9fcaa8aSmrg <glossterm>Autoreset Controls</glossterm> 27e9fcaa8aSmrg <glossdef> 28e9fcaa8aSmrg <para> 29e9fcaa8aSmrgThe autoreset controls configure the boolean controls to automatically be 30e9fcaa8aSmrgenabled or disabled at the time a program exits. 31e9fcaa8aSmrg </para> 32e9fcaa8aSmrg </glossdef> 33e9fcaa8aSmrg</glossentry> 34e9fcaa8aSmrg<glossentry> 35e9fcaa8aSmrg <glossterm>Base Group</glossterm> 36e9fcaa8aSmrg <glossdef> 37e9fcaa8aSmrg <para> 38e9fcaa8aSmrgThe group in effect as a result of all actions other than a previous lock or 39e9fcaa8aSmrglatch request; the base group is transient. For example, the user pressing and 40e9fcaa8aSmrgholding a group shift key that shifts to Group2 would result in the base group 41e9fcaa8aSmrgbeing group 2 at that point in time. Initially, base group is always Group1. 42e9fcaa8aSmrg </para> 43e9fcaa8aSmrg </glossdef> 44e9fcaa8aSmrg</glossentry> 45e9fcaa8aSmrg<glossentry> 46e9fcaa8aSmrg <glossterm>Base Modifiers</glossterm> 47e9fcaa8aSmrg <glossdef> 48e9fcaa8aSmrg <para> 49e9fcaa8aSmrgModifiers that are turned on as a result of some actions other than previous 50e9fcaa8aSmrglock or latch requests; base modifiers are transient. For example, the user 51e9fcaa8aSmrgpressing and holding a key bound to the Shift modifier would result in Shift 52e9fcaa8aSmrgbeing a base modifier at that point in time. 53e9fcaa8aSmrg </para> 54e9fcaa8aSmrg </glossdef> 55e9fcaa8aSmrg</glossentry> 56e9fcaa8aSmrg<glossentry> 57e9fcaa8aSmrg <glossterm>Base Event Code</glossterm> 58e9fcaa8aSmrg <glossdef> 59e9fcaa8aSmrg <para> 60e9fcaa8aSmrgA number assigned by the X server at run time that is assigned to the extension 61e9fcaa8aSmrgto identify events from that extension. 62e9fcaa8aSmrg </para> 63e9fcaa8aSmrg </glossdef> 64e9fcaa8aSmrg</glossentry> 65e9fcaa8aSmrg<glossentry> 66e9fcaa8aSmrg <glossterm>Base State</glossterm> 67e9fcaa8aSmrg <glossdef> 68e9fcaa8aSmrg <para> 69e9fcaa8aSmrgThe base group and base modifiers represent keys that are physically or 70e9fcaa8aSmrglogically down; these constitute the base state. 71e9fcaa8aSmrg </para> 72e9fcaa8aSmrg </glossdef> 73e9fcaa8aSmrg</glossentry> 74e9fcaa8aSmrg<glossentry> 75e9fcaa8aSmrg <glossterm>Boolean Controls</glossterm> 76e9fcaa8aSmrg <glossdef> 77e9fcaa8aSmrg <para> 78e9fcaa8aSmrgGlobal keyboard controls that may be selectively enabled and disabled under 79e9fcaa8aSmrgprogram control and that may be automatically set to an on or off condition 80e9fcaa8aSmrgupon client program exit. 81e9fcaa8aSmrg </para> 82e9fcaa8aSmrg </glossdef> 83e9fcaa8aSmrg</glossentry> 84e9fcaa8aSmrg<glossentry> 85e9fcaa8aSmrg <glossterm>Canonical Key Types</glossterm> 86e9fcaa8aSmrg <glossdef> 87e9fcaa8aSmrg <para> 88e9fcaa8aSmrgThe canonical key types are predefined key types that describe the types of 89e9fcaa8aSmrgkeys available on most keyboards. The definitions for the canonical key types 900f8248bfSmrgare held in the first 910f8248bfSmrg<symbol>XkbNumRequiredTypes</symbol> 920f8248bfSmrgentries of the 930f8248bfSmrg<structfield>types</structfield> 940f8248bfSmrgfield of the client map and are indexed using the following constants: 95e9fcaa8aSmrg </para> 96e9fcaa8aSmrg <itemizedlist> 97e9fcaa8aSmrg <listitem> 98e9fcaa8aSmrg <para> 990f8248bfSmrg<symbol>XkbOneLevelIndex</symbol> 100e9fcaa8aSmrg </para> 101e9fcaa8aSmrg </listitem> 102e9fcaa8aSmrg <listitem> 103e9fcaa8aSmrg <para> 1040f8248bfSmrg<symbol>XkbTwoLevelIndex</symbol> 105e9fcaa8aSmrg </para> 106e9fcaa8aSmrg </listitem> 107e9fcaa8aSmrg <listitem> 108e9fcaa8aSmrg <para> 1090f8248bfSmrg<symbol>XkbAlphabeticIndex</symbol> 110e9fcaa8aSmrg </para> 111e9fcaa8aSmrg </listitem> 112e9fcaa8aSmrg <listitem> 113e9fcaa8aSmrg <para> 1140f8248bfSmrg<symbol>XkbKeypadIndex</symbol> 115e9fcaa8aSmrg </para> 116e9fcaa8aSmrg </listitem> 117e9fcaa8aSmrg </itemizedlist> 118e9fcaa8aSmrg </glossdef> 119e9fcaa8aSmrg</glossentry> 120e9fcaa8aSmrg 121e9fcaa8aSmrg<glossentry> 122e9fcaa8aSmrg <glossterm>Client Map</glossterm> 123e9fcaa8aSmrg <glossdef> 124e9fcaa8aSmrg <para> 125e9fcaa8aSmrgThe key mapping information needed to convert arbitrary keycodes to symbols. 126e9fcaa8aSmrg </para> 127e9fcaa8aSmrg </glossdef> 128e9fcaa8aSmrg</glossentry> 129e9fcaa8aSmrg<glossentry> 130e9fcaa8aSmrg <glossterm>Compat Name</glossterm> 131e9fcaa8aSmrg <glossdef> 132e9fcaa8aSmrg <para> 1330f8248bfSmrgThe 1340f8248bfSmrg<emphasis>compat</emphasis> 1350f8248bfSmrgname is a string that provides some information about the rules used to bind 136e9fcaa8aSmrgactions to keys that are changed using core protocol requests. 137e9fcaa8aSmrg </para> 138e9fcaa8aSmrg </glossdef> 139e9fcaa8aSmrg</glossentry> 140e9fcaa8aSmrg<glossentry> 141e9fcaa8aSmrg <glossterm>Compatibility State</glossterm> 142e9fcaa8aSmrg <glossdef> 143e9fcaa8aSmrg <para> 144e9fcaa8aSmrgWhen an Xkb-extended X server connects to an Xkb-unaware client, the 145e9fcaa8aSmrgcompatibility state remaps the keyboard group into a core modifier whenever 146e9fcaa8aSmrgpossible. 147e9fcaa8aSmrg </para> 148e9fcaa8aSmrg </glossdef> 149e9fcaa8aSmrg</glossentry> 150e9fcaa8aSmrg<glossentry> 151e9fcaa8aSmrg <glossterm>Compatibility Grab State</glossterm> 152e9fcaa8aSmrg <glossdef> 153e9fcaa8aSmrg <para> 154e9fcaa8aSmrgThe grab state that results from applying the compatibility map to the Xkb grab 155e9fcaa8aSmrgstate. 156e9fcaa8aSmrg </para> 157e9fcaa8aSmrg </glossdef> 158e9fcaa8aSmrg</glossentry> 159e9fcaa8aSmrg<glossentry> 160e9fcaa8aSmrg <glossterm>Compatibility Map</glossterm> 161e9fcaa8aSmrg <glossdef> 162e9fcaa8aSmrg <para> 163e9fcaa8aSmrgThe definition of how to map core protocol keyboard state to Xkb keyboard state. 164e9fcaa8aSmrg </para> 165e9fcaa8aSmrg </glossdef> 166e9fcaa8aSmrg</glossentry> 167e9fcaa8aSmrg<glossentry> 168e9fcaa8aSmrg <glossterm>Component Expression</glossterm> 169e9fcaa8aSmrg <glossdef> 170e9fcaa8aSmrg <para> 171e9fcaa8aSmrgAn expression used to describe server keyboard database components to be 172e9fcaa8aSmrgloaded. It describes the order in which the components should be loaded and the 173e9fcaa8aSmrgrules by which duplicate attributes should be resolved. 174e9fcaa8aSmrg </para> 175e9fcaa8aSmrg </glossdef> 176e9fcaa8aSmrg</glossentry> 177e9fcaa8aSmrg<glossentry> 178e9fcaa8aSmrg <glossterm>Compose Processing</glossterm> 179e9fcaa8aSmrg <glossdef> 180e9fcaa8aSmrg <para> 181e9fcaa8aSmrgThe process of mapping a series of keysyms to a string is known as compose 182e9fcaa8aSmrgprocessing. 183e9fcaa8aSmrg </para> 184e9fcaa8aSmrg </glossdef> 185e9fcaa8aSmrg</glossentry> 186e9fcaa8aSmrg<glossentry> 187e9fcaa8aSmrg <glossterm>Consumed Modifier</glossterm> 188e9fcaa8aSmrg <glossdef> 189e9fcaa8aSmrg <para> 190e9fcaa8aSmrgXkb normally consumes modifiers in determining the appropriate symbol for an 191e9fcaa8aSmrgevent, that is, the modifiers are not considered during any of the later stages 1920f8248bfSmrgof event processing. For those rare occasions when a modifier 1930f8248bfSmrg<emphasis>should</emphasis> 1940f8248bfSmrgbe considered despite having been used to look up a symbol, key types include 1950f8248bfSmrgan optional 1960f8248bfSmrg<structfield>preserve</structfield> 1970f8248bfSmrgfield. 198e9fcaa8aSmrg </para> 199e9fcaa8aSmrg </glossdef> 200e9fcaa8aSmrg</glossentry> 201e9fcaa8aSmrg<glossentry> 202e9fcaa8aSmrg <glossterm>Core Event</glossterm> 203e9fcaa8aSmrg <glossdef> 204e9fcaa8aSmrg <para> 205e9fcaa8aSmrgAn event created from the core X server. 206e9fcaa8aSmrg </para> 207e9fcaa8aSmrg </glossdef> 208e9fcaa8aSmrg</glossentry> 209e9fcaa8aSmrg<glossentry> 210e9fcaa8aSmrg <glossterm>Detectable Auto-Repeat</glossterm> 211e9fcaa8aSmrg <glossdef> 212e9fcaa8aSmrg <para> 213e9fcaa8aSmrgDetectable auto-repeat allows a client to detect an auto-repeating key. If a 214e9fcaa8aSmrgclient requests and the server supports detectable auto-repeat, Xkb generates 2150f8248bfSmrg<symbol>KeyRelease</symbol> 2160f8248bfSmrgevents only when the key is physically released. Thus the client receives a 2170f8248bfSmrgnumber of 2180f8248bfSmrg<symbol>KeyPress</symbol> 2190f8248bfSmrgevents for that key without intervening 2200f8248bfSmrg<symbol>KeyRelease</symbol> 2210f8248bfSmrgevents until the key is finally released, when a 2220f8248bfSmrg<symbol>KeyRelease</symbol> 2230f8248bfSmrgevent is received. 224e9fcaa8aSmrg </para> 225e9fcaa8aSmrg </glossdef> 226e9fcaa8aSmrg</glossentry> 227e9fcaa8aSmrg<glossentry> 228e9fcaa8aSmrg <glossterm>Effective Group</glossterm> 229e9fcaa8aSmrg <glossdef> 230e9fcaa8aSmrg <para> 231e9fcaa8aSmrgThe effective group is the arithmetic sum of the locked, latched, and base 232e9fcaa8aSmrggroups. The effective keyboard group is always brought back into range 2330f8248bfSmrgdepending on the value of the 2340f8248bfSmrg<emphasis>GroupsWrap</emphasis> 2350f8248bfSmrgcontrol for the keyboard. If an event occurs with an effective group that is 236e9fcaa8aSmrglegal for the keyboard as a whole, but not for the key in question, the group 2370f8248bfSmrg<emphasis>for that event only</emphasis> 2380f8248bfSmrgis normalized using the algorithm specified by the 2390f8248bfSmrg<structfield>group_info</structfield> 2400f8248bfSmrgmember of the key symbol map 2410f8248bfSmrg(<structname>XkbSymMapRec</structname>). 2420f8248bfSmrg 243e9fcaa8aSmrg </para> 244e9fcaa8aSmrg </glossdef> 245e9fcaa8aSmrg</glossentry> 246e9fcaa8aSmrg<glossentry> 247e9fcaa8aSmrg <glossterm>Effective Mask</glossterm> 248e9fcaa8aSmrg <glossdef> 249e9fcaa8aSmrg <para> 250e9fcaa8aSmrgAn Xkb modifier definition consists of a set of bit masks corresponding to the 251e9fcaa8aSmrgeight real modifiers; a similar set of bitmasks corresponding to the 16 named 252e9fcaa8aSmrgvirtual modifiers; and an effective mask. The effective mask represents the set 253e9fcaa8aSmrgof all real modifiers that can logically be set either by setting any of the 254e9fcaa8aSmrgreal modifiers or by setting any of the virtual modifiers in the definition. 255e9fcaa8aSmrg </para> 256e9fcaa8aSmrg </glossdef> 257e9fcaa8aSmrg</glossentry> 258e9fcaa8aSmrg<glossentry> 259e9fcaa8aSmrg <glossterm>Effective Modifier</glossterm> 260e9fcaa8aSmrg <glossdef> 261e9fcaa8aSmrg <para> 262e9fcaa8aSmrgThe effective modifiers are the bitwise union of the base, latched and locked 263e9fcaa8aSmrgmodifiers. 264e9fcaa8aSmrg </para> 265e9fcaa8aSmrg </glossdef> 266e9fcaa8aSmrg</glossentry> 267e9fcaa8aSmrg<glossentry> 268e9fcaa8aSmrg <glossterm>Extension Device</glossterm> 269e9fcaa8aSmrg <glossdef> 270e9fcaa8aSmrg <para> 271e9fcaa8aSmrgAny keyboard or other input device recognized by the X input extension. 272e9fcaa8aSmrg </para> 273e9fcaa8aSmrg </glossdef> 274e9fcaa8aSmrg</glossentry> 275e9fcaa8aSmrg<glossentry> 276e9fcaa8aSmrg <glossterm>Global Keyboard Controls</glossterm> 277e9fcaa8aSmrg <glossdef> 278e9fcaa8aSmrg <para> 279e9fcaa8aSmrgControls that affect the way Xkb generates key events. The controls affect all 280e9fcaa8aSmrgkeys, as opposed to per-key controls that are for a single key. Global controls 281e9fcaa8aSmrginclude 282e9fcaa8aSmrg </para> 283e9fcaa8aSmrg <itemizedlist> 284e9fcaa8aSmrg <listitem> 285e9fcaa8aSmrg <para>RepeatKeys Control</para> 286e9fcaa8aSmrg </listitem> 287e9fcaa8aSmrg <listitem> 288e9fcaa8aSmrg <para>DetectableAuto-repeat</para> 289e9fcaa8aSmrg </listitem> 290e9fcaa8aSmrg <listitem> 291e9fcaa8aSmrg <para>SlowKeys</para> 292e9fcaa8aSmrg </listitem> 293e9fcaa8aSmrg <listitem> 294e9fcaa8aSmrg <para>BounceKeys</para> 295e9fcaa8aSmrg </listitem> 296e9fcaa8aSmrg <listitem> 297e9fcaa8aSmrg <para>StickyKeys</para> 298e9fcaa8aSmrg </listitem> 299e9fcaa8aSmrg <listitem> 300e9fcaa8aSmrg <para>MouseKeys</para> 301e9fcaa8aSmrg </listitem> 302e9fcaa8aSmrg <listitem> 303e9fcaa8aSmrg <para>MouseKeysAccel</para> 304e9fcaa8aSmrg </listitem> 305e9fcaa8aSmrg <listitem> 306e9fcaa8aSmrg <para>AccessXKeys</para> 307e9fcaa8aSmrg </listitem> 308e9fcaa8aSmrg <listitem> 309e9fcaa8aSmrg <para>AccessXTimeout</para> 310e9fcaa8aSmrg </listitem> 311e9fcaa8aSmrg <listitem> 312e9fcaa8aSmrg <para>AccessXFeedback</para> 313e9fcaa8aSmrg </listitem> 314e9fcaa8aSmrg <listitem> 315e9fcaa8aSmrg <para>Overlay1</para> 316e9fcaa8aSmrg </listitem> 317e9fcaa8aSmrg <listitem> 318e9fcaa8aSmrg <para>Overlay2</para> 319e9fcaa8aSmrg </listitem> 320e9fcaa8aSmrg <listitem> 321e9fcaa8aSmrg <para>EnabledControls</para> 322e9fcaa8aSmrg </listitem> 323e9fcaa8aSmrg </itemizedlist> 324e9fcaa8aSmrg </glossdef> 325e9fcaa8aSmrg</glossentry> 326e9fcaa8aSmrg<glossentry> 327e9fcaa8aSmrg <glossterm>Grab State</glossterm> 328e9fcaa8aSmrg <glossdef> 329e9fcaa8aSmrg <para> 330e9fcaa8aSmrgThe grab state is the state used when matching events to passive grabs. It 331e9fcaa8aSmrgconsists of the grab group and the grab modifiers. 332e9fcaa8aSmrg </para> 333e9fcaa8aSmrg </glossdef> 334e9fcaa8aSmrg</glossentry> 335e9fcaa8aSmrg<glossentry> 336e9fcaa8aSmrg <glossterm>Group</glossterm> 337e9fcaa8aSmrg <glossdef> 338e9fcaa8aSmrg <para>See Keysym Group</para> 339e9fcaa8aSmrg </glossdef> 340e9fcaa8aSmrg</glossentry> 341e9fcaa8aSmrg<glossentry> 342e9fcaa8aSmrg <glossterm>Group Index</glossterm> 343e9fcaa8aSmrg <glossdef> 344e9fcaa8aSmrg <para> 345e9fcaa8aSmrgA number used as the internal representation for a group number. Group1 through 346e9fcaa8aSmrgGroup 4 have indices of 0 through 3. 347e9fcaa8aSmrg </para> 348e9fcaa8aSmrg </glossdef> 349e9fcaa8aSmrg</glossentry> 350e9fcaa8aSmrg<glossentry> 351e9fcaa8aSmrg <glossterm>Groups Wrap Control</glossterm> 352e9fcaa8aSmrg <glossdef> 353e9fcaa8aSmrg <para> 354e9fcaa8aSmrgIf a group index exceeds the maximum number of groups permitted for the 355e9fcaa8aSmrgspecified keyboard, it is wrapped or truncated back into range as specified by 3560f8248bfSmrgthe global <emphasis>GroupsWrap</emphasis> control. 3570f8248bfSmrg<emphasis>GroupsWrap</emphasis> can have the following values: 3580f8248bfSmrg <simplelist type='vert' columns='1'> 3590f8248bfSmrg <member><emphasis>WrapIntoRange</emphasis></member> 3600f8248bfSmrg <member><emphasis>ClampIntoRange</emphasis></member> 3610f8248bfSmrg <member><emphasis>RedirectIntoRange</emphasis></member> 3620f8248bfSmrg </simplelist> 363e9fcaa8aSmrg </para> 364e9fcaa8aSmrg </glossdef> 365e9fcaa8aSmrg</glossentry> 366e9fcaa8aSmrg 367e9fcaa8aSmrg<glossentry> 368e9fcaa8aSmrg <glossterm>Key Type</glossterm> 369e9fcaa8aSmrg <glossdef> 370e9fcaa8aSmrg <para> 371e9fcaa8aSmrgAn attribute of a key that identifies which modifiers affect the shift level of 372e9fcaa8aSmrga key and the number of groups on the key. 373e9fcaa8aSmrg </para> 374e9fcaa8aSmrg </glossdef> 375e9fcaa8aSmrg</glossentry> 376e9fcaa8aSmrg<glossentry> 377e9fcaa8aSmrg <glossterm>Key Width</glossterm> 378e9fcaa8aSmrg <glossdef> 379e9fcaa8aSmrg <para> 380e9fcaa8aSmrgThe maximum number of shift levels in any group for the key type associated 381e9fcaa8aSmrgwith a key. 382e9fcaa8aSmrg </para> 383e9fcaa8aSmrg </glossdef> 384e9fcaa8aSmrg</glossentry> 385e9fcaa8aSmrg<glossentry> 386e9fcaa8aSmrg <glossterm>Keysym Group</glossterm> 387e9fcaa8aSmrg <glossdef> 388e9fcaa8aSmrg <para> 389e9fcaa8aSmrgA keysym group is a logical state of the keyboard providing access to a 390e9fcaa8aSmrgcollection of characters. A group usually contains a set of characters that 391e9fcaa8aSmrglogically belong together and that may be arranged on several shift levels 392e9fcaa8aSmrgwithin that group. For example, Group1 could be the English alphabet, and 393e9fcaa8aSmrgGroup2 could be Greek. Xkb supports up to four different groups for an input 3940f8248bfSmrgdevice or keyboard. Groups are in the range 1–4 (Group1–Group4), 3950f8248bfSmrgand are often referred to as G1–G4 and indexed as 0–3. 396e9fcaa8aSmrg </para> 397e9fcaa8aSmrg </glossdef> 398e9fcaa8aSmrg</glossentry> 399e9fcaa8aSmrg<glossentry> 400e9fcaa8aSmrg <glossterm>Indicator</glossterm> 401e9fcaa8aSmrg <glossdef> 402e9fcaa8aSmrg <para> 403e9fcaa8aSmrgAn indicator is a feedback mechanism such as an LED on an input device. Using 404e9fcaa8aSmrgXkb, a client application can determine the names of the various indicators, 405e9fcaa8aSmrgdetermine and control the way that the individual indicators should be updated 406e9fcaa8aSmrgto reflect keyboard changes, and determine which of the 32 keyboard indicators 407e9fcaa8aSmrgreported by the protocol are actually present on the keyboard. 408e9fcaa8aSmrg </para> 409e9fcaa8aSmrg </glossdef> 410e9fcaa8aSmrg</glossentry> 411e9fcaa8aSmrg<glossentry> 412e9fcaa8aSmrg <glossterm>Indicator Feedback</glossterm> 413e9fcaa8aSmrg <glossdef> 414e9fcaa8aSmrg <para> 415e9fcaa8aSmrgAn indicator feedback describes the state of a bank of up to 32 lights. It has 416e9fcaa8aSmrga mask where each bit corresponds to a light and an associated value mask that 417e9fcaa8aSmrgspecifies which lights are on or off. 418e9fcaa8aSmrg </para> 419e9fcaa8aSmrg </glossdef> 420e9fcaa8aSmrg</glossentry> 421e9fcaa8aSmrg<glossentry> 422e9fcaa8aSmrg <glossterm>Indicator Map</glossterm> 423e9fcaa8aSmrg <glossdef> 424e9fcaa8aSmrg <para> 425e9fcaa8aSmrgAn indicator has its own set of attributes that specify whether clients can 426e9fcaa8aSmrgexplicitly set its state and whether it tracks the keyboard state. The 427e9fcaa8aSmrgindicator map is the collection of these attributes for each indicator and is 4280f8248bfSmrgheld in the 4290f8248bfSmrg<structfield>maps</structfield> 4300f8248bfSmrgarray, which is an array of 4310f8248bfSmrg<structname>XkbIndicatorRec</structname> 4320f8248bfSmrgstructures. 433e9fcaa8aSmrg </para> 434e9fcaa8aSmrg </glossdef> 435e9fcaa8aSmrg</glossentry> 436e9fcaa8aSmrg<glossentry> 437e9fcaa8aSmrg <glossterm>Input Extension</glossterm> 438e9fcaa8aSmrg <glossdef> 439e9fcaa8aSmrg <para> 440e9fcaa8aSmrgAn extension to the core X protocol that allows an X server to support multiple 441e9fcaa8aSmrgkeyboards, as well as other input devices, in addition to the core X keyboard 442e9fcaa8aSmrgand pointer. Other types of devices supported by the input extension include, 443e9fcaa8aSmrgbut are not limited to: mice, tablets, touchscreens, barcode readers, button 444e9fcaa8aSmrgboxes, trackballs, identifier devices, data gloves, and eye trackers. 445e9fcaa8aSmrg </para> 446e9fcaa8aSmrg </glossdef> 447e9fcaa8aSmrg</glossentry> 448e9fcaa8aSmrg<glossentry> 449e9fcaa8aSmrg <glossterm>Key Action</glossterm> 450e9fcaa8aSmrg <glossdef> 451e9fcaa8aSmrg <para> 452e9fcaa8aSmrgA key action consists of an operator and some optional data. Once the server 453e9fcaa8aSmrghas applied the global controls and per-key behavior and has decided to process 454e9fcaa8aSmrga key event, it applies key actions to determine the effects of the key on the 455e9fcaa8aSmrginternal state of the server. Xkb supports actions that do the following: 456e9fcaa8aSmrg </para> 457e9fcaa8aSmrg <itemizedlist> 458e9fcaa8aSmrg <listitem> 459e9fcaa8aSmrg <para> 460e9fcaa8aSmrgChange base, latched, or locked modifiers or group 461e9fcaa8aSmrg </para> 462e9fcaa8aSmrg </listitem> 463e9fcaa8aSmrg <listitem> 464e9fcaa8aSmrg <para> 465e9fcaa8aSmrgMove the core pointer or simulate core pointer button events 466e9fcaa8aSmrg </para> 467e9fcaa8aSmrg </listitem> 468e9fcaa8aSmrg <listitem> 469e9fcaa8aSmrg <para> 470e9fcaa8aSmrgChange most aspects of keyboard behavior 471e9fcaa8aSmrg </para> 472e9fcaa8aSmrg </listitem> 473e9fcaa8aSmrg <listitem> 474e9fcaa8aSmrg <para> 475e9fcaa8aSmrgTerminate or suspend the server 476e9fcaa8aSmrg </para> 477e9fcaa8aSmrg </listitem> 478e9fcaa8aSmrg <listitem> 479e9fcaa8aSmrg <para> 480e9fcaa8aSmrgSend a message to interested clients 481e9fcaa8aSmrg </para> 482e9fcaa8aSmrg </listitem> 483e9fcaa8aSmrg <listitem> 484e9fcaa8aSmrg <para> 485e9fcaa8aSmrgSimulate events on other keys 486e9fcaa8aSmrg </para> 487e9fcaa8aSmrg </listitem> 488e9fcaa8aSmrg </itemizedlist> 489e9fcaa8aSmrg </glossdef> 490e9fcaa8aSmrg</glossentry> 491e9fcaa8aSmrg 492e9fcaa8aSmrg<glossentry> 493e9fcaa8aSmrg <glossterm>Key Alias</glossterm> 494e9fcaa8aSmrg <glossdef> 495e9fcaa8aSmrg <para> 496e9fcaa8aSmrgA key alias is a symbolic name for a specific physical key. Key aliases allow 497e9fcaa8aSmrgthe keyboard layout designer to assign multiple key names to a single key. This 498e9fcaa8aSmrgallows the keyboard layout designer to refer to keys using either their 4990f8248bfSmrgposition or their <quote>function</quote>. 5000f8248bfSmrgKey aliases can be specified both in the symbolic 501e9fcaa8aSmrgnames component and in the keyboard geometry. Both sets of aliases are always 502e9fcaa8aSmrgvalid, but key alias definitions in the keyboard geometry have priority; if 503e9fcaa8aSmrgboth symbolic names and geometry include aliases, you should consider the 504e9fcaa8aSmrgdefinitions from the geometry before considering the definitions from the 505e9fcaa8aSmrgsymbolic names section. 506e9fcaa8aSmrg </para> 507e9fcaa8aSmrg </glossdef> 508e9fcaa8aSmrg</glossentry> 509e9fcaa8aSmrg<glossentry> 510e9fcaa8aSmrg <glossterm>Key Behavior</glossterm> 511e9fcaa8aSmrg <glossdef> 512e9fcaa8aSmrg <para> 5130f8248bfSmrgThe 5140f8248bfSmrg<structfield>behaviors</structfield> 5150f8248bfSmrgfield of the server map is an array of 5160f8248bfSmrg<structname>XkbBehavior</structname>, 5170f8248bfSmrgindexed by keycode, and contains the behavior for each key. The X server uses 518e9fcaa8aSmrgkey behavior to determine whether to process or filter out any given key event; 519e9fcaa8aSmrgkey behavior is independent of keyboard modifier or group state. Each key has 520e9fcaa8aSmrgexactly one behavior. 521e9fcaa8aSmrg </para> 522e9fcaa8aSmrg <para>Key behaviors include:</para> 523e9fcaa8aSmrg <itemizedlist> 524e9fcaa8aSmrg <listitem> 525e9fcaa8aSmrg <para>XkbKB_Default</para> 526e9fcaa8aSmrg </listitem> 527e9fcaa8aSmrg <listitem> 528e9fcaa8aSmrg <para>XkbKB_Lock</para> 529e9fcaa8aSmrg </listitem> 530e9fcaa8aSmrg <listitem> 531e9fcaa8aSmrg <para>XkbKB_RadioGroup</para> 532e9fcaa8aSmrg </listitem> 533e9fcaa8aSmrg <listitem> 534e9fcaa8aSmrg <para>XkbKB_Overlay1</para> 535e9fcaa8aSmrg </listitem> 536e9fcaa8aSmrg <listitem> 537e9fcaa8aSmrg <para>XkbKB_Overlay2</para> 538e9fcaa8aSmrg </listitem> 539e9fcaa8aSmrg </itemizedlist> 540e9fcaa8aSmrg </glossdef> 541e9fcaa8aSmrg</glossentry> 542e9fcaa8aSmrg<glossentry> 543e9fcaa8aSmrg <glossterm>Key Symbol Map</glossterm> 544e9fcaa8aSmrg <glossdef> 545e9fcaa8aSmrg <para> 546e9fcaa8aSmrgA key symbol map describes the symbols bound to a key and the rules to be used 5470f8248bfSmrgto interpret those symbols. It is an array of 5480f8248bfSmrg<structname>XkbSymMapRec</structname> 5490f8248bfSmrgstructures indexed by keycode. 550e9fcaa8aSmrg </para> 551e9fcaa8aSmrg </glossdef> 552e9fcaa8aSmrg</glossentry> 553e9fcaa8aSmrg<glossentry> 554e9fcaa8aSmrg <glossterm>Key Type</glossterm> 555e9fcaa8aSmrg <glossdef> 556e9fcaa8aSmrg <para> 557e9fcaa8aSmrgKey types are used to determine the shift level of a key given the current 558e9fcaa8aSmrgstate of the keyboard. There is one key type for each group for a key. Key 5590f8248bfSmrgtypes are defined using the 5600f8248bfSmrg<structname>XkbKeyTypeRec</structname> 5610f8248bfSmrgand 5620f8248bfSmrg<structname>XkbKTMapEntryRec</structname> 5630f8248bfSmrgstructures. Xkb allows up to 5640f8248bfSmrg<symbol>XkbMaxKeyTypes</symbol> 5650f8248bfSmrg(255) key types to be defined, but requires at least 5660f8248bfSmrg<symbol>XkbNumRequiredTypes</symbol> 5670f8248bfSmrg(4) predefined types to be in a key map. 568e9fcaa8aSmrg </para> 569e9fcaa8aSmrg </glossdef> 570e9fcaa8aSmrg</glossentry> 571e9fcaa8aSmrg<glossentry> 572e9fcaa8aSmrg <glossterm>Keyboard Bells</glossterm> 573e9fcaa8aSmrg <glossdef> 574e9fcaa8aSmrg <para> 575e9fcaa8aSmrgThe sound the default bell makes when rung is the system bell or the default 576e9fcaa8aSmrgkeyboard bell. Some input devices may have more than one bell, identified by 5770f8248bfSmrg<structfield>bell_class</structfield> and <structfield>bell_id</structfield>. 578e9fcaa8aSmrg </para> 579e9fcaa8aSmrg </glossdef> 580e9fcaa8aSmrg</glossentry> 581e9fcaa8aSmrg<glossentry> 582e9fcaa8aSmrg <glossterm>Keyboard Components</glossterm> 583e9fcaa8aSmrg <glossdef> 584e9fcaa8aSmrg <para> 585e9fcaa8aSmrgThere are five types of components stored in the X server database of keyboard 5860f8248bfSmrgcomponents. They correspond to the 5870f8248bfSmrg<structfield>>symbols</structfield>, 5880f8248bfSmrg<structfield>geometry</structfield>, 5890f8248bfSmrg<structfield>keycodes</structfield>, 5900f8248bfSmrg<structfield>compat</structfield>, 5910f8248bfSmrgand 5920f8248bfSmrg<structfield>types</structfield> 5930f8248bfSmrgsymbolic names associated with a keyboard. 594e9fcaa8aSmrg </para> 595e9fcaa8aSmrg </glossdef> 596e9fcaa8aSmrg</glossentry> 597e9fcaa8aSmrg<glossentry> 598e9fcaa8aSmrg <glossterm>Keyboard Feedback</glossterm> 599e9fcaa8aSmrg <glossdef> 600e9fcaa8aSmrg <para> 601e9fcaa8aSmrgA keyboard feedback includes the following: 6020f8248bfSmrg <simplelist type='vert' columns='1'> 6030f8248bfSmrg <member>Keyclick volume</member> 6040f8248bfSmrg <member>Bell volume</member> 6050f8248bfSmrg <member>Bell pitch</member> 6060f8248bfSmrg <member>Bell duration</member> 6070f8248bfSmrg <member>Global auto-repeat</member> 6080f8248bfSmrg <member>Per key auto-repeat</member> 6090f8248bfSmrg <member>32 LEDs</member> 6100f8248bfSmrg </simplelist> 611e9fcaa8aSmrg </para> 612e9fcaa8aSmrg </glossdef> 613e9fcaa8aSmrg</glossentry> 614e9fcaa8aSmrg 615e9fcaa8aSmrg<glossentry> 616e9fcaa8aSmrg <glossterm>Key Width, Key Type Width</glossterm> 617e9fcaa8aSmrg <glossdef> 618e9fcaa8aSmrg <para> 619e9fcaa8aSmrgThe maximum number of shift levels for a type is referred to as the width of a 620e9fcaa8aSmrgkey type. 621e9fcaa8aSmrg </para> 622e9fcaa8aSmrg </glossdef> 623e9fcaa8aSmrg</glossentry> 624e9fcaa8aSmrg<glossentry> 625e9fcaa8aSmrg <glossterm>Keyboard Geometry</glossterm> 626e9fcaa8aSmrg <glossdef> 627e9fcaa8aSmrg <para> 628e9fcaa8aSmrgKeyboard geometry describes the physical appearance of the keyboard, including 629e9fcaa8aSmrgthe shape, location, and color of all keyboard keys or other visible keyboard 6300f8248bfSmrgcomponents such as indicators and is stored in a 6310f8248bfSmrg<structname>XkbGeometryRec</structname> 6320f8248bfSmrgstructure. The information contained in a keyboard geometry is sufficient to 633e9fcaa8aSmrgallow a client program to draw an accurate two-dimensional image of the 634e9fcaa8aSmrgkeyboard. 635e9fcaa8aSmrg </para> 636e9fcaa8aSmrg </glossdef> 637e9fcaa8aSmrg</glossentry> 638e9fcaa8aSmrg<glossentry> 639e9fcaa8aSmrg <glossterm>Keyboard Geometry Name</glossterm> 640e9fcaa8aSmrg <glossdef> 641e9fcaa8aSmrg <para> 642e9fcaa8aSmrgThe keyboard geometry name describes the physical location, size, and shape of 6430f8248bfSmrgthe various keys on the keyboard and is part of the 6440f8248bfSmrg<structname>XkbNamesRec</structname> 6450f8248bfSmrgstructure. 646e9fcaa8aSmrg </para> 647e9fcaa8aSmrg </glossdef> 648e9fcaa8aSmrg</glossentry> 649e9fcaa8aSmrg<glossentry> 650e9fcaa8aSmrg <glossterm>Keyboard State</glossterm> 651e9fcaa8aSmrg <glossdef> 652e9fcaa8aSmrg <para> 653e9fcaa8aSmrgKeyboard state encompasses all of the transitory information necessary to map a 654e9fcaa8aSmrgphysical key press or release to an appropriate event. 655e9fcaa8aSmrg </para> 656e9fcaa8aSmrg </glossdef> 657e9fcaa8aSmrg</glossentry> 658e9fcaa8aSmrg<glossentry> 659e9fcaa8aSmrg <glossterm>Keycode</glossterm> 660e9fcaa8aSmrg <glossdef> 661e9fcaa8aSmrg <para> 662e9fcaa8aSmrgA numeric value returned to the X server when a key on a keyboard is pressed or 663e9fcaa8aSmrgreleased, indicating which key is being modulated. Keycode numbers are in the 664e9fcaa8aSmrgrange 1 <= keycode <= max, where max is the number of physical keys on 665e9fcaa8aSmrgthe device. 666e9fcaa8aSmrg </para> 667e9fcaa8aSmrg </glossdef> 668e9fcaa8aSmrg</glossentry> 669e9fcaa8aSmrg<glossentry> 670e9fcaa8aSmrg <glossterm>Keycode Name</glossterm> 671e9fcaa8aSmrg <glossdef> 672e9fcaa8aSmrg <para> 673e9fcaa8aSmrgThe keycode name describes the range and meaning of the keycodes returned by 6740f8248bfSmrgthe keyboard and is part of the 6750f8248bfSmrg<structname>XkbNamesRec</structname> 6760f8248bfSmrgstructure. 677e9fcaa8aSmrg </para> 678e9fcaa8aSmrg </glossdef> 679e9fcaa8aSmrg</glossentry> 680e9fcaa8aSmrg<glossentry> 681e9fcaa8aSmrg <glossterm>Latched Group</glossterm> 682e9fcaa8aSmrg <glossdef> 683e9fcaa8aSmrg <para> 684e9fcaa8aSmrgA latched group is a group index that is combined with the base and locked 685e9fcaa8aSmrggroup to form the effective group. It applies only to the next key event that 686e9fcaa8aSmrgdoes not change the keyboard state. The latched group can be changed by 687e9fcaa8aSmrgkeyboard activity or via Xkb extension library functions. 688e9fcaa8aSmrg </para> 689e9fcaa8aSmrg </glossdef> 690e9fcaa8aSmrg</glossentry> 691e9fcaa8aSmrg<glossentry> 692e9fcaa8aSmrg <glossterm>Latched Modifier</glossterm> 693e9fcaa8aSmrg <glossdef> 694e9fcaa8aSmrg <para> 695e9fcaa8aSmrgLatched modifiers are the set of modifiers that are combined with the base 696e9fcaa8aSmrgmodifiers and the locked modifiers to form the effective modifiers. It applies 697e9fcaa8aSmrgonly to the next key event that does not change the keyboard state. 698e9fcaa8aSmrg </para> 699e9fcaa8aSmrg </glossdef> 700e9fcaa8aSmrg</glossentry> 701e9fcaa8aSmrg<glossentry> 702e9fcaa8aSmrg <glossterm>LED</glossterm> 703e9fcaa8aSmrg <glossdef> 704e9fcaa8aSmrg <para> 705e9fcaa8aSmrgA light emitting diode. However, for the purposes of the X keyboard extension 706e9fcaa8aSmrgspecification, a LED is any form of visual two-state indicator that is either 707e9fcaa8aSmrgon or off. 708e9fcaa8aSmrg </para> 709e9fcaa8aSmrg </glossdef> 710e9fcaa8aSmrg</glossentry> 711e9fcaa8aSmrg<glossentry> 712e9fcaa8aSmrg <glossterm>Locked Group</glossterm> 713e9fcaa8aSmrg <glossdef> 714e9fcaa8aSmrg <para> 715e9fcaa8aSmrgA locked group is a group index that is combined with the base and latched 716e9fcaa8aSmrggroup to form the effective group. When a group is locked, it supersedes any 717e9fcaa8aSmrgprevious locked group and remains the locked group for all future key events, 718e9fcaa8aSmrguntil a new group is locked. The locked group can be changed by keyboard 719e9fcaa8aSmrgactivity or via Xkb extension library functions. 720e9fcaa8aSmrg </para> 721e9fcaa8aSmrg </glossdef> 722e9fcaa8aSmrg</glossentry> 723e9fcaa8aSmrg<glossentry> 724e9fcaa8aSmrg <glossterm>Locked Modifiers</glossterm> 725e9fcaa8aSmrg <glossdef> 726e9fcaa8aSmrg <para> 727e9fcaa8aSmrgLocked modifiers are the set of modifiers that are combined with the base 728e9fcaa8aSmrgmodifiers and the latched modifiers to form the effective modifiers. A locked 729e9fcaa8aSmrgmodifier applies to all future key events until it is explicitly unlocked. 730e9fcaa8aSmrg </para> 731e9fcaa8aSmrg </glossdef> 732e9fcaa8aSmrg</glossentry> 733e9fcaa8aSmrg<glossentry> 734e9fcaa8aSmrg <glossterm>Lookup State </glossterm> 735e9fcaa8aSmrg <glossdef> 736e9fcaa8aSmrg <para> 737e9fcaa8aSmrgThe lookup state is composed of the lookup group and the lookup modifiers, and 738e9fcaa8aSmrgit is the state an Xkb-capable or Xkb-aware client should use to map a keycode 739e9fcaa8aSmrgto a keysym. 740e9fcaa8aSmrg </para> 741e9fcaa8aSmrg </glossdef> 742e9fcaa8aSmrg</glossentry> 743e9fcaa8aSmrg<glossentry> 744e9fcaa8aSmrg <glossterm>Modifier</glossterm> 745e9fcaa8aSmrg <glossdef> 746e9fcaa8aSmrg <para> 747e9fcaa8aSmrgA modifier is a logical condition that is either set or unset. The modifiers 748e9fcaa8aSmrgcontrol the Shift Level selected when a key event occurs. Xkb supports the core 7490f8248bfSmrgprotocol eight modifiers 7500f8248bfSmrg(<symbol>Shift</symbol>, 7510f8248bfSmrg<symbol>Lock</symbol>, 7520f8248bfSmrg<symbol>Control</symbol>, 7530f8248bfSmrgand 7540f8248bfSmrg<symbol>Mod1</symbol> 7550f8248bfSmrgthrough 7560f8248bfSmrg<symbol>Mod5</symbol>), 7570f8248bfSmrgcalled the 7580f8248bfSmrg<emphasis>real</emphasis> 7590f8248bfSmrgmodifiers. In addition, Xkb extends modifier flexibility by providing a set of 760e9fcaa8aSmrgsixteen named virtual modifiers, each of which can be bound to any set of the 761e9fcaa8aSmrgeight real modifiers. 762e9fcaa8aSmrg </para> 763e9fcaa8aSmrg </glossdef> 764e9fcaa8aSmrg</glossentry> 765e9fcaa8aSmrg<glossentry> 766e9fcaa8aSmrg <glossterm>Modifier Key</glossterm> 767e9fcaa8aSmrg <glossdef> 768e9fcaa8aSmrg <para> 769e9fcaa8aSmrgA modifier key is a key whose operation has no immediate effect, but that, for 770e9fcaa8aSmrgas long as it is held down, modifies the effect of other keys. A modifier key 771e9fcaa8aSmrgmay be, for example, a shift key or a control key. 772e9fcaa8aSmrg </para> 773e9fcaa8aSmrg </glossdef> 774e9fcaa8aSmrg</glossentry> 775e9fcaa8aSmrg<glossentry> 776e9fcaa8aSmrg <glossterm>Modifier Definition</glossterm> 777e9fcaa8aSmrg <glossdef> 778e9fcaa8aSmrg <para> 7790f8248bfSmrgAn Xkb modifier definition, held in an 7800f8248bfSmrg<structname>XkbModsRec</structname>, 7810f8248bfSmrgconsists of a set of real modifiers, a set of virtual modifiers, and an 782e9fcaa8aSmrgeffective mask. The mask is the union of the real modifiers and the set of real 783e9fcaa8aSmrgmodifiers to which the virtual modifiers map; the mask cannot be explicitly 784e9fcaa8aSmrgchanged. 785e9fcaa8aSmrg </para> 786e9fcaa8aSmrg </glossdef> 787e9fcaa8aSmrg</glossentry> 788e9fcaa8aSmrg<glossentry> 789e9fcaa8aSmrg <glossterm>Nonkeyboard Extension Device </glossterm> 790e9fcaa8aSmrg <glossdef> 791e9fcaa8aSmrg <para> 792e9fcaa8aSmrgAn input extension device that is not a keyboard. Other types of devices 793e9fcaa8aSmrgsupported by the input extension include, but are not limited to: mice, 794e9fcaa8aSmrgtablets, touchscreens, barcode readers, button boxes, trackballs, identifier 795e9fcaa8aSmrgdevices, data gloves, and eye trackers. 796e9fcaa8aSmrg </para> 797e9fcaa8aSmrg </glossdef> 798e9fcaa8aSmrg</glossentry> 799e9fcaa8aSmrg<glossentry> 800e9fcaa8aSmrg <glossterm>Outlines</glossterm> 801e9fcaa8aSmrg <glossdef> 802e9fcaa8aSmrg <para> 803e9fcaa8aSmrgAn outline is a list of one or more points that describes a single closed 804e9fcaa8aSmrgpolygon, used in the geometry specification for a keyboard. 805e9fcaa8aSmrg </para> 806e9fcaa8aSmrg </glossdef> 807e9fcaa8aSmrg</glossentry> 808e9fcaa8aSmrg<glossentry> 809e9fcaa8aSmrg <glossterm>Physical Indicator Mask</glossterm> 810e9fcaa8aSmrg <glossdef> 811e9fcaa8aSmrg <para> 8120f8248bfSmrgThe physical indicator mask is a field in the 8130f8248bfSmrg<structname>XkbIndicatorRec</structname> 8140f8248bfSmrgthat indicates which indicators are bound to physical LEDs on the keyboard; if 8150f8248bfSmrga bit is set in 8160f8248bfSmrg<structfield>phys_indicators</structfield>, 8170f8248bfSmrgthen the associated indicator has a physical LED associated with it. This 818e9fcaa8aSmrgfield is necessary because some indicators may not have corresponding physical 819e9fcaa8aSmrgLEDs on the keyboard. 820e9fcaa8aSmrg </para> 821e9fcaa8aSmrg </glossdef> 822e9fcaa8aSmrg</glossentry> 823e9fcaa8aSmrg<glossentry> 824e9fcaa8aSmrg <glossterm>Physical Symbol Keyboard Name</glossterm> 825e9fcaa8aSmrg <glossdef> 826e9fcaa8aSmrg <para> 8270f8248bfSmrgThe 8280f8248bfSmrg<structfield>symbols</structfield> 8290f8248bfSmrgkeyboard name identifies the symbols logically bound to the keys. The symbols 830e9fcaa8aSmrgname is a human or application-readable description of the intended locale or 8310f8248bfSmrgusage of the keyboard with these symbols. The 8320f8248bfSmrg<structfield>phys_symbols</structfield> 8330f8248bfSmrgkeyboard name, on the other hand, identifies the symbols actually engraved on 834e9fcaa8aSmrgthe keyboard. 835e9fcaa8aSmrg </para> 836e9fcaa8aSmrg </glossdef> 837e9fcaa8aSmrg</glossentry> 838e9fcaa8aSmrg<glossentry> 839e9fcaa8aSmrg <glossterm>Preserved Modifier</glossterm> 840e9fcaa8aSmrg <glossdef> 841e9fcaa8aSmrg <para> 842e9fcaa8aSmrgXkb normally consumes modifiers in determining the appropriate symbol for an 843e9fcaa8aSmrgevent, that is, the modifiers are not considered during any of the later stages 8440f8248bfSmrgof event processing. For those rare occasions when a modifier 8450f8248bfSmrg<emphasis>should</emphasis> 8460f8248bfSmrgbe considered despite having been used to look up a symbol, key types include 8470f8248bfSmrgan optional 8480f8248bfSmrg<structfield>preserve</structfield> 8490f8248bfSmrgfield. If a modifier is present in the 8500f8248bfSmrg<structfield>preserve</structfield> 8510f8248bfSmrglist, it is a preserved modifier. 852e9fcaa8aSmrg </para> 853e9fcaa8aSmrg </glossdef> 854e9fcaa8aSmrg</glossentry> 855e9fcaa8aSmrg<glossentry> 856e9fcaa8aSmrg <glossterm>Radio Group</glossterm> 857e9fcaa8aSmrg <glossdef> 858e9fcaa8aSmrg <para> 859e9fcaa8aSmrgA radio group is a set of keys whose behavior simulates a set of radio buttons. 860e9fcaa8aSmrgOnce a key in a radio group is pressed, it stays logically depressed until 861e9fcaa8aSmrganother key in the group is pressed, at which point the previously depressed 862e9fcaa8aSmrgkey is logically released. Consequently, at most one key in a radio group can 863e9fcaa8aSmrgbe logically depressed at one time. 864e9fcaa8aSmrg </para> 865e9fcaa8aSmrg </glossdef> 866e9fcaa8aSmrg</glossentry> 867e9fcaa8aSmrg<glossentry> 868e9fcaa8aSmrg <glossterm>Real Modifier</glossterm> 869e9fcaa8aSmrg <glossdef> 870e9fcaa8aSmrg <para> 8710f8248bfSmrgXkb supports the eight core protocol modifiers 8720f8248bfSmrg(<symbol>Shift</symbol>, 8730f8248bfSmrg<symbol>Lock</symbol>, 8740f8248bfSmrg<symbol>Control</symbol>, 8750f8248bfSmrgand 8760f8248bfSmrg<symbol>Mod1</symbol> 8770f8248bfSmrgthrough 8780f8248bfSmrg<symbol>Mod5</symbol>); 8790f8248bfSmrgthese are called the 8800f8248bfSmrg<emphasis>real</emphasis> 8810f8248bfSmrgmodifiers, as opposed to the set of sixteen named virtual modifiers that can 882e9fcaa8aSmrgbe bound to any set of the eight real modifiers. 883e9fcaa8aSmrg </para> 884e9fcaa8aSmrg </glossdef> 885e9fcaa8aSmrg</glossentry> 886e9fcaa8aSmrg<glossentry> 887e9fcaa8aSmrg <glossterm>Server Internal Modifiers</glossterm> 888e9fcaa8aSmrg <glossdef> 889e9fcaa8aSmrg <para> 890e9fcaa8aSmrgModifiers that the server uses to determine the appropriate symbol for an 891e9fcaa8aSmrgevent; internal modifiers are normally consumed by the server. 892e9fcaa8aSmrg </para> 893e9fcaa8aSmrg </glossdef> 894e9fcaa8aSmrg</glossentry> 895e9fcaa8aSmrg<glossentry> 896e9fcaa8aSmrg <glossterm>Shift Level</glossterm> 897e9fcaa8aSmrg <glossdef> 898e9fcaa8aSmrg <para> 899e9fcaa8aSmrgOne of several states (normally 2 or 3) governing which graphic character is 900e9fcaa8aSmrgproduced when a key is actuated. 901e9fcaa8aSmrg </para> 902e9fcaa8aSmrg </glossdef> 903e9fcaa8aSmrg</glossentry> 904e9fcaa8aSmrg<glossentry> 905e9fcaa8aSmrg <glossterm>Symbol Keyboard Name</glossterm> 906e9fcaa8aSmrg <glossdef> 907e9fcaa8aSmrg <para> 9080f8248bfSmrgThe 9090f8248bfSmrg<structfield>symbols</structfield> 9100f8248bfSmrgkeyboard name identifies the symbols logically bound to the keys. The symbols 911e9fcaa8aSmrgname is a human or application-readable description of the intended locale or 9120f8248bfSmrgusage of the keyboard with these symbols. The 9130f8248bfSmrg<structfield>phys_symbols</structfield> 9140f8248bfSmrgkeyboard name, on the other hand, identifies the symbols actually engraved on 915e9fcaa8aSmrgthe keyboard. 916e9fcaa8aSmrg </para> 917e9fcaa8aSmrg </glossdef> 918e9fcaa8aSmrg</glossentry> 919e9fcaa8aSmrg<glossentry> 920e9fcaa8aSmrg <glossterm>Symbolic Name</glossterm> 921e9fcaa8aSmrg <glossdef> 922e9fcaa8aSmrg <para> 923e9fcaa8aSmrgXkb supports symbolic names for most components of the keyboard extension. Most 9240f8248bfSmrgof these symbolic names are grouped into the 9250f8248bfSmrg<structfield>names</structfield> 9260f8248bfSmrgcomponent of the keyboard description. 927e9fcaa8aSmrg </para> 928e9fcaa8aSmrg </glossdef> 929e9fcaa8aSmrg</glossentry> 930e9fcaa8aSmrg<glossentry> 931e9fcaa8aSmrg <glossterm>State Field</glossterm> 932e9fcaa8aSmrg <glossdef> 933e9fcaa8aSmrg <para> 934e9fcaa8aSmrgThe portion of a client-side core protocol event that holds the modifier, 935e9fcaa8aSmrggroup, and button state information pertaining to the event. 936e9fcaa8aSmrg </para> 937e9fcaa8aSmrg </glossdef> 938e9fcaa8aSmrg</glossentry> 939e9fcaa8aSmrg<glossentry> 940e9fcaa8aSmrg <glossterm>Types Name</glossterm> 941e9fcaa8aSmrg <glossdef> 942e9fcaa8aSmrg <para> 9430f8248bfSmrgThe 9440f8248bfSmrg<emphasis>types</emphasis> 9450f8248bfSmrgname provides some information about the set of key types that can be 946e9fcaa8aSmrgassociated with the keyboard. In addition, each key type can have a name, and 947e9fcaa8aSmrgeach shift level of a type can have a name. 948e9fcaa8aSmrg </para> 949e9fcaa8aSmrg </glossdef> 950e9fcaa8aSmrg</glossentry> 951e9fcaa8aSmrg<glossentry> 952e9fcaa8aSmrg <glossterm>Valuator</glossterm> 953e9fcaa8aSmrg <glossdef> 954e9fcaa8aSmrg <para> 955e9fcaa8aSmrgA valuator reports a range of values for some entity, like a mouse axis, a 956e9fcaa8aSmrgslider, or a dial. 957e9fcaa8aSmrg </para> 958e9fcaa8aSmrg </glossdef> 959e9fcaa8aSmrg</glossentry> 960e9fcaa8aSmrg<glossentry> 961e9fcaa8aSmrg <glossterm>Virtual Modifier</glossterm> 962e9fcaa8aSmrg <glossdef> 963e9fcaa8aSmrg <para> 964e9fcaa8aSmrgXkb provides a set of sixteen named virtual modifiers that can be bound to any 965e9fcaa8aSmrgset of the eight real modifiers. Each virtual modifier can be bound to any set 9660f8248bfSmrgof the real modifiers 9670f8248bfSmrg(<symbol>Shift</symbol>, 9680f8248bfSmrg<symbol>Lock</symbol>, 9690f8248bfSmrg<symbol>Control</symbol>, 9700f8248bfSmrgand 9710f8248bfSmrg<symbol>Mod1</symbol> 9720f8248bfSmrg– 9730f8248bfSmrg<symbol>Mod5</symbol>). 9740f8248bfSmrg 975e9fcaa8aSmrg </para> 976e9fcaa8aSmrg </glossdef> 977e9fcaa8aSmrg</glossentry> 978e9fcaa8aSmrg<glossentry> 979e9fcaa8aSmrg <glossterm>Virtual Modifier Mapping</glossterm> 980e9fcaa8aSmrg <glossdef> 981e9fcaa8aSmrg <para> 982e9fcaa8aSmrgXkb maintains a virtual modifier mapping, which lists the virtual modifiers 983e9fcaa8aSmrgassociated with each key. 984e9fcaa8aSmrg </para> 985e9fcaa8aSmrg </glossdef> 986e9fcaa8aSmrg</glossentry> 987e9fcaa8aSmrg<glossentry> 988e9fcaa8aSmrg <glossterm>Xkb-aware Client</glossterm> 989e9fcaa8aSmrg <glossdef> 990e9fcaa8aSmrg <para> 991e9fcaa8aSmrgA client application that initializes Xkb extension and is consequently bound 992e9fcaa8aSmrgto an Xlib that includes the Xkb extension. 993e9fcaa8aSmrg </para> 994e9fcaa8aSmrg </glossdef> 995e9fcaa8aSmrg</glossentry> 996e9fcaa8aSmrg<glossentry> 997e9fcaa8aSmrg <glossterm>Xkb-capable Client</glossterm> 998e9fcaa8aSmrg <glossdef> 999e9fcaa8aSmrg <para> 1000e9fcaa8aSmrgA client application that makes no Xkb extension Xlib calls but is bound to an 1001e9fcaa8aSmrgXlib that includes the Xkb extension. 1002e9fcaa8aSmrg </para> 1003e9fcaa8aSmrg </glossdef> 1004e9fcaa8aSmrg</glossentry> 1005e9fcaa8aSmrg<glossentry> 1006e9fcaa8aSmrg <glossterm>Xkb-unaware Client</glossterm> 1007e9fcaa8aSmrg <glossdef> 1008e9fcaa8aSmrg <para> 1009e9fcaa8aSmrgA client application that makes no Xkb extension Xlib calls and is bound to an 1010e9fcaa8aSmrgXlib that does not include the Xkb extension. 1011e9fcaa8aSmrg </para> 1012e9fcaa8aSmrg </glossdef> 1013e9fcaa8aSmrg</glossentry> 1014e9fcaa8aSmrg 1015e9fcaa8aSmrg</glossary> 1016