xserver/xkb
Peter Hutterer be3b3cb970 xkb: fix core keyboard map generation. #14373
According to Section 12.4 of the XKB Protocol Spec, if a key only has a single
group but the keyboard has multiple groups defined, the core description of
the key is a duplication of the single group across all symbols. i.e.
G1L1 G1L2 G1L1 G1L2 G1L3 G1L4 G1L3 G1L4

The previous code generated G1L1 G1L2 G1L3 G1L4 G1L3 G1L4, leading to
"invented" groups when the process is reversed.

Note that this creates wrong key types on reconstruction from core to xkb,
i.e. any single-group key with a key type that is not one of the canonical
four (Sec 12.2.3), will get the assigned type on group 1, and a canonical type
for the other gruops.

X.Org Bug 14373 <http://bugs.freedesktop.org/show_bug.cgi?id=14373>
(cherry picked from commit ae986d1c73)
2008-10-08 11:15:13 -04:00
..
ddxBeep.c XKB: Remove a bunch of mad ifdefs 2008-02-17 22:52:07 +02:00
ddxCtrls.c XKB: Remove a bunch of mad ifdefs 2008-02-17 22:52:07 +02:00
ddxDevBtn.c xace: add hooks + new access codes: XKB extension. 2007-09-28 13:34:18 -04:00
ddxFakeBtn.c xace: add hooks + new access codes: XKB extension. 2007-09-28 13:34:18 -04:00
ddxFakeMtn.c devPrivates rework: since API is already broken, switch everything 2007-08-28 09:28:25 -04:00
ddxInit.c Death to RCS tags. 2007-06-29 14:06:52 -04:00
ddxKeyClick.c XKB: Remove a bunch of mad ifdefs 2008-02-17 22:52:07 +02:00
ddxKillSrv.c XKB: Actions: Don't run certain actions on the core keyboard 2007-12-05 19:37:48 +00:00
ddxLEDs.c Death to RCS tags. 2007-06-29 14:06:52 -04:00
ddxList.c XKB: Remove a bunch of mad ifdefs 2008-02-17 22:52:07 +02:00
ddxLoad.c Don't log null device name in XkbDDXLoadKeymapByNames 2008-06-25 18:22:41 -07:00
ddxPrivate.c Static markup and dead code cull over xkb/. 2007-03-20 18:37:02 -04:00
ddxVT.c Static markup and dead code cull over xkb/. 2007-03-20 18:37:02 -04:00
Makefile.am Fix distcheck. 2008-03-05 23:56:49 -05:00
maprules.c XKB: Remove support for pre-built keymaps 2008-02-17 22:52:07 +02:00
README.compiled R6.6 is the Xorg base-line 2003-11-14 15:54:54 +00:00
xkb.c xkb: fix use of uninitialized variable. 2008-10-08 11:15:05 -04:00
xkb.h XKB: Move headers into the server tree 2008-02-17 22:52:07 +02:00
xkbAccessX.c xkb: don't send core events for extension devices on SlowKey timeout. 2008-07-23 17:08:49 +09:30
xkbActions.c XKB: Fix processInputProc wrapping 2008-04-01 15:32:01 +03:00
XKBAlloc.c XKB: Move headers into the server tree 2008-02-17 22:52:07 +02:00
xkbDflts.h Static markup and dead code cull over xkb/. 2007-03-20 18:37:02 -04:00
xkbEvents.c XKB: Remove a bunch of mad ifdefs 2008-02-17 22:52:07 +02:00
xkbfmisc.c XKB: Fix initial map setting on startup 2008-03-03 23:23:22 -05:00
XKBGAlloc.c XKB: Remove usage of client-side types 2008-02-17 22:52:07 +02:00
xkbgeom.h XKB: Remove usage of client-side types 2008-02-17 22:52:07 +02:00
xkbInit.c XKB: Fix initial map setting on startup 2008-03-03 23:23:22 -05:00
xkbLEDs.c xkb: don't update LEDs if they don't exist. (Bug #13961) 2008-01-30 10:39:54 +10:30
XKBMAlloc.c XKB: Remove a bunch of mad ifdefs 2008-02-17 22:52:07 +02:00
XKBMisc.c XKB: Remove a bunch of mad ifdefs 2008-02-17 22:52:07 +02:00
xkbout.c XKB: Ditch XkbFileInfo 2008-02-17 22:52:08 +02:00
xkbPrKeyEv.c XKB: Remove a bunch of mad ifdefs 2008-02-17 22:52:07 +02:00
xkbPrOtherEv.c XkbProcessOtherEvent: Don't depend on now-removed header 2008-02-17 22:52:08 +02:00
xkbSwap.c XKB: Move headers into the server tree 2008-02-17 22:52:07 +02:00
xkbtext.c XKB: Remove usage of client-side types 2008-02-17 22:52:07 +02:00
xkbUtils.c xkb: fix core keyboard map generation. #14373 2008-10-08 11:15:13 -04:00
xkmread.c XKB: Ditch XkbFileInfo 2008-02-17 22:52:08 +02:00

The X server uses this directory to store the compiled version of the
current keymap and/or any scratch keymaps used by clients.  The X server
or some other tool might destroy or replace the files in this directory,
so it is not a safe place to store compiled keymaps for long periods of
time.  The default keymap for any server is usually stored in:
     X<num>-default.xkm
where <num> is the display number of the server in question, which makes
it possible for several servers *on the same host* to share the same 
directory.

Unless the X server is modified, sharing this directory between servers on
different hosts could cause problems.