README revision 154daed1
1154daed1SmrgThe core protocol interpretation of keyboard modifiers does not include direct
2154daed1Smrgsupport for multiple keyboard groups, so XKB reports the effective keyboard
3154daed1Smrggroup to XKB-aware clients using some of reserved bits in the state field of
4154daed1Smrgsome core protocol events. This modified state field would not be interpreted
5154daed1Smrgcorrectly by XKB-unaware clients, so XKB provides a group compatibility mapping
6154daed1Smrgwhich remaps the keyboard group into a core modifier mask that has similar
7154daed1Smrgeffects, when possible.
8154daed1Smrg
9154daed1SmrgXKB maintains three compatibility state components that are used to make
10154daed1SmrgXKB-unaware clients(*) work as well as possible:
11154daed1Smrg- The compatibility state which corresponds to the effective modifier and
12154daed1Smrg  effective group state.
13154daed1Smrg- The compatibility lookup state which is the core-protocol equivalent of the
14154daed1Smrg  lookup state.
15154daed1Smrg- The compatibility grab state which is the nearest core-protocol equivalent
16154daed1Smrg  of the grab state.
17154daed1Smrg
18154daed1SmrgCompatibility state are essentially the corresponding XKB states, but with
19154daed1Smrgkeyboard group possibly encoded as one or more modifiers. 
20154daed1Smrg
21154daed1SmrgModifiers that correspond to each keyboard group are described in this
22154daed1Smrggroup compatibility map.
23154daed1Smrg
24154daed1Smrg
25154daed1Smrg----
26154daed1Smrg(*) The implementation of XKB invisibly extends the X library to use the
27154daed1Smrgkeyboard extension if it is present. That means, clients that use library or
28154daed1Smrgtoolkit routines to interpret keyboard events automatically use all of XKB
29154daed1Smrgfeatures; clients that directly interpret the state field of core protocol
30154daed1Smrgevents or the keymap direcly may be affected by some of the XKB differences.
31154daed1SmrgThus most clients can take all advantages without modification but it also
32154daed1Smrgmeans that XKB state can be reported to clients that have not explicitly
33154daed1Smrgrequested the keyboard extension.
34