1<chapter id='Overview'> 2<title>Overview</title> 3<para> 4This extension provides a number of new capabilities and controls for 5text keyboards. 6</para> 7 8<para> 9The core X protocol specifies the ways that the <emphasis> 10Shift</emphasis> 11, <emphasis> 12Control</emphasis> 13 and <emphasis> 14Lock</emphasis> 15 modifiers and the modifiers bound to the <emphasis> 16Mode_switch</emphasis> 17 or <emphasis> 18Num_Lock</emphasis> 19 keysyms interact to generate keysyms and characters. The core protocol also 20allows users to specify that a key affects one or more modifiers. This behavior 21is simple and fairly flexible, but it has a number of limitations that make it 22difficult or impossible to properly support many common varieties of keyboard 23behavior. The limitations of core protocol support for keyboards include: 24</para> 25 26<itemizedlist> 27<listitem> 28 <para>Use of a single, uniform, four-symbol mapping for all keyboard keys 29makes it difficult to properly support keyboard overlays, PC-style break keys 30or keyboards that comply with ISO9995 or a host of other national and 31international standards. 32 </para> 33</listitem> 34<listitem> 35 <para>Use of a modifier to specify a second keyboard group has side-effects 36that wreak havoc with client grabs and X toolkit translations and limit us to 37two keyboard groups. 38 </para> 39</listitem> 40<listitem> 41 <para>Poorly specified locking key behavior requires X servers to look for a 42few "magic" keysyms to determine which keys should lock when pressed. This 43leads to incompatibilities between X servers with no way for clients to detect 44implementation differences. 45 </para> 46</listitem> 47<listitem> 48 <para>Poorly specified capitalization and control behavior requires 49modifications to X library source code to support new character sets or locales 50and can lead to incompatibilities between system-wide and X library 51capitalization behavior. 52 </para> 53</listitem> 54<listitem> 55 <para>Limited interactions between modifiers specified by the core protocol 56make many common keyboard behaviors difficult or impossible to implement. For 57example, there is no reliable way to indicate whether or not using shift should 58"cancel" the lock modifier. 59 </para> 60</listitem> 61<listitem> 62 <para>The lack of any explicit descriptions for indicators, most modifiers 63and other aspects of the keyboard appearance requires clients that wish to 64clearly describe the keyboard to a user to resort to a mishmash of prior 65knowledge and heuristics. 66 </para> 67</listitem> 68</itemizedlist> 69 70<para> 71This extension makes it possible to clearly and explicitly specify most aspects 72of keyboard behavior on a per-key basis. It adds the notion of a numeric 73keyboard group to the global keyboard state and provides mechanisms to more 74closely track the logical and physical state of the keyboard. For keyboard 75control clients, this extension provides descriptions and symbolic names for 76many aspects of keyboard appearance and behavior. It also includes a number of 77keyboard controls designed to make keyboards more accessible to people with 78movement impairments. 79</para> 80 81 82<para> 83The X Keyboard Extension essentially replaces the core protocol definition of a 84keyboard. The following sections describe the new capabilities of the extension 85and the effect of the extension on core protocol requests, events and errors. 86</para> 87 88<sect1 id='Conventions_and_Assumptions'> 89<title>Conventions and Assumptions</title> 90<para> 91This document uses the syntactic 92conventions, common types, and errors defined in sections two through four of 93the specification of the X Window System Protocol. This document assumes 94familiarity with the fundamental concepts of X, especially those related to the 95way that X handles keyboards. Readers who are not familiar with the meaning or 96use of keycodes, keysyms or modifiers should consult (at least) the first five 97chapters of the protocol specification of the X Window System before 98continuing. 99</para> 100</sect1> 101</chapter> 102