Author: branden Date: 2004-09-21 15:49:51 -0500 (Tue, 21 Sep 2004) New Revision: 1840
Modified: trunk/debian/CHANGESETS trunk/debian/changelog trunk/debian/local/FAQ.xhtml Log: Add FAQ entry: How does the keyboard work in the X Window System? Modified: trunk/debian/CHANGESETS =================================================================== --- trunk/debian/CHANGESETS 2004-09-21 18:21:04 UTC (rev 1839) +++ trunk/debian/CHANGESETS 2004-09-21 20:49:51 UTC (rev 1840) @@ -53,4 +53,7 @@ it messed up now? (Closes: #259740) 1823, 1832, 1835, 1836, 1838, 1839 +Add FAQ entry: How does the keyboard work in the X Window System? + 1840 + vim:set ai et sts=4 sw=4 tw=80: Modified: trunk/debian/changelog =================================================================== --- trunk/debian/changelog 2004-09-21 18:21:04 UTC (rev 1839) +++ trunk/debian/changelog 2004-09-21 20:49:51 UTC (rev 1840) @@ -39,12 +39,14 @@ * In the Xsession script, attempt to create a file of non-zero length in /tmp; a full filesystem can cause mysterious X session failures. + * Add FAQ entry: How does the keyboard work in the X Window System? + Changes by Fabio M. Di Nitto: * Create debian/tmp/usr/X11R6/lib/X11/doc when NOT_BUILDING_XFREE86_X_SERVER is defined. Fixes FTBFS on s390. - -- Branden Robinson <[EMAIL PROTECTED]> Tue, 21 Sep 2004 13:08:05 -0500 + -- Branden Robinson <[EMAIL PROTECTED]> Tue, 21 Sep 2004 15:49:27 -0500 xfree86 (4.3.0.dfsg.1-7) unstable; urgency=high Modified: trunk/debian/local/FAQ.xhtml =================================================================== --- trunk/debian/local/FAQ.xhtml 2004-09-21 18:21:04 UTC (rev 1839) +++ trunk/debian/local/FAQ.xhtml 2004-09-21 20:49:51 UTC (rev 1840) @@ -59,6 +59,8 @@ <li><a href="#deffocus">What is window focus?</a></li> <li><a href="#defresourc">What are X resources?</a></li> <li><a href="#defappdef">What are app-defaults?</a></li> +<li><a href="#keyboard">How does the keyboard work in the X Window + System?</a></li> </ul> <h2><a href="#specquest">Specific Questions</a></h2> @@ -782,6 +784,131 @@ default settings for a client. They work as if they were part of the client binary itself.</p> +<h3><a id="keyboard">How does the keyboard work in the X Window System?</a></h3> + +<!-- +<p>First of all, please note that this is a highly simplified treatment of the +subject.</p> + +<p>Let's begin with a glossary to which you can refer.</p> +--> + +<p><em>It will take some time to write a comprehensive entry on this subject, +but in the meantime it is hoped that the following glossary is useful.</em></p> + +<dl> + <dt><strong>compose key</strong></dt> + <dd>a key which causes the next two keys pressed to be treated specially + such that they cause a single character to be printed (this is implemented + in software); for example, pressing <kbd>Compose + A + E</kbd> would produce + the ae ligature (æ); valid compose sequences are defined in + locale-specific data files such as <code + class="filespec">/usr/X11R6/lib/X11/locale/en_US.UTF-8/Compose</code></dd> + <dt><strong>dead key</strong></dt> + <dd>a key, typically engraved with an accent, diacritic, or other mark which + produces no character by itself but instead modifies the character generated + by the next key pressed (this is implemented in software); for example, on a + keyboard with dead keys, pressing a key engraved with an acute accent + (´) <strong>glyph</strong> followed by the <code>A</code> key would + produce an "a" with an acute accent (á), whereas pressing the acute + accent ("dead acute") key followed by a space would produce the acute accent + by itself (´); contrast with <strong>spacing key</strong></dd> + <dt><strong>engraving</strong></dt> + <dd>the visible marking(s) on a <strong>keycap</strong>, which indicate the + key's behavior via a <strong>glyph</strong> (such as <code>Q</code> or + <code>\</code>) or term describing a control function (such as + <code>Enter</code>, <code>Shift</code>, or <code>Scroll Lock</code>)</dd> + <dt><strong>keycap</strong></dt> + <dd>the surface of a key; the part of a key which is pressed and bears + <strong>engraving</strong>s</dd> + <dt><strong>keycode</strong></dt> + <dd>a <strong>scan code</strong> after it has undergone translation (if any) + by the operating system and X server</dd> + <dt><strong>keymap</strong></dt> + <dd>a complete description of a keyboard device which is used by the X + server to translate <strong>keycodes</strong> into <strong>keysyms</strong> + and <strong>modifier masks</strong>; when XKB is used, this includes + <strong>compat</strong>, <strong>geometry</strong>, + <strong>keycodes</strong>, <strong>symbols</strong>, and + <strong>types</strong> information</dd> + <dt><strong>keysym</strong></dt> + <dd>a symbolic name for a key, independent of the operating system and + keyboard hardware, which identifies a key to X clients</dd> + <dt><strong>layout</strong></dt> + <dd>an <strong>XKB</strong> configuration parameter that identifies the + territorial specifics of a keyboard model; two given keyboards may have the + same physical key arrangment but different <strong>engraving</strong>s on + the keys, each keyboard customized to a different region or territory</dd> + <dt><strong>model</strong></dt> + <dd>an <strong>XKB</strong> configuration parameter that identifies what + physical model of a keyboard is in use; used to determine what + <strong>keycodes</strong> are supported by the model and what its + <strong>geometry</strong> is</dd> + <dt><strong>modifier</strong></dt> + <dd>a flag (up or down) which can influence how <strong>keycode</strong>s + are translated to <strong>keysym</strong>s, and how X clients interpret key + events</dd> + <dt><strong>modifier mask</strong></dt> + <dd>a list of <strong>modifier</strong> states; these are + bitwise-<code>OR</code>ed together as the "state" value reported with key + events by the <code + class="command">xev</code> command</dd> + <dt><strong>options</strong></dt> + <dd>an <strong>XKB</strong> configuration parameter that permits the user to + customize aspects of keyboard behavior that are not specific to a + <strong>layout</strong>; for example, <code>ctrl:nocaps</code> is a popular + option to make the <code>Caps Lock</code> key produce the + <code>Control_L</code> <strong>keysym</strong>; that is, work like an + additional (left) <code>Control</code> key</dd> + <dt><strong>rules</strong></dt> + <dd>an <strong>XKB</strong> configuration parameter that identifies a data + file (such as <code>xfree86</code>) describing how <strong>model</strong>, + <strong>layout</strong>, <strong>variant</strong>, and + <strong>options</strong> specifications are translated into + <strong>compat</strong>, <strong>geometry</strong>, + <strong>keycodes</strong>, <strong>symbols</strong>, and + <strong>types</strong> information</dd> + <dt><strong>scan code</strong></dt> + <dd>a number which uniquely identifies a key on the keyboard, and which is + transmitted by the hardware to the operating system; scan codes tend to be + specific to the keyboard hardware</dd> + <dt><strong>spacing key</strong></dt> + <dd>a key which causes a character corresponding to the + <strong>glyph</strong> engraved on it to be printed; contrast with + <strong>dead key</strong></dd> + <dt><strong>variant</strong></dt> + <dd>an <strong>XKB</strong> configuration parameter that allows for + differing behavior of certain keys within a given <strong>layout</strong>; + for example, <code>nodeadkeys</code> is a popular variant in many European + <strong>layout</strong>s — it causes <strong>dead key</strong>s to be + treated as <strong>spacing key</strong>s</dd> + <dt><strong>XKB</strong></dt> + <dd>the X KEYBOARD extension, an extension to the X protocol providing a + more sophisticated means of describing keyboard events than that supported + by the core protocol</dd> +<!-- + <dt><strong>compat</strong></dt> + <dt><strong>geometry</strong></dt> + <dt><strong>keycodes</strong></dt> + <dt><strong>symbols</strong></dt> + <dt><strong>types</strong></dt> +--> +</dl> + +<p>When the XFree86 X server is started, it calls the <code +class="command">setxkbmap</code> utility to compile a keymap from the XKB +configuration options (<code>XkbRules</code>, <code>XkbModel</code>, +<code>XkbLayout</code>, <code>XkbVariant</code>, and <code>XkbOptions</code>) +from its configuration file (usually <code +class="filespec">/etc/X11/XF86Config-4</code>). The XFree86 X server can be +told to disable XKB with the option <code>XkbDisable</code>. Furthermore, X +servers in general can be told not to load an XKB keymap with the option +<kbd>-noloadxkb</kbd>, or to load a pre-compiled keymap with the +<kbd>-xkbmap</kbd> option. This last option is useful for machines configured +as X terminals, since they enable the X server to do without the <code +class="command">setxkbmap</code> command, which in turn depends on <code +class="command">xkbcomp</code>, the XKB data files, and the X libraries.</p> + <h2><a id="specquest" class="bigtext">Specific Questions</a></h2> <h3><a id="custxsess">How do I customize my X session?</a></h3> @@ -2680,6 +2807,10 @@ <p><em>Thanks to Denis Barbier for contributing much of this entry.</em></p> +<p><em>Please see the glossary in <a href="#keyboard">"How does the keyboard work +in the X Window System?"</a> above for explanantions of unfamiliar +terms.</em></p> + <p>Many users of the X Window System, particularly outside the United States, find that they need support for multiple <em>groups</em> on their keyboards. One or more of the keys on their keyboards are engraved with more than two