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&ndash;4 (Group1&ndash;Group4),
3950f8248bfSmrgand are often referred to as G1&ndash;G4 and indexed as 0&ndash;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 &lt;= keycode &lt;= 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&ndash;
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