xserver/xkb
Alexander Melnyk a9ee6b7326 xkb: Fix locked/latched indicator desync across multiple keyboards
When a group indicator (or a latched indicator of any kind) is defined,
e.g.:
  indicator "Scroll Lock" { groups = Group2; }
the logical and physical indicator state may desync across multiple
connected keyboards.

This is caused by XkbPushLockedStateToSlaves only pushing locked_mods to
the slave devices. Pushing locked_group (as well as latched groups/mods)
along with locked_mods resolves the issue.

The issue is not observed with API calls because a different code path
is taken (avoiding XkbPushLockedStateToSlaves altogether).

Signed-off-by: Alexander Melnyk <inboxnumberzero@zoho.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2120>
(cherry picked from commit 36a7fdd315)
2026-02-01 17:53:18 -08:00
..
ddxBeep.c Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
ddxCtrls.c Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
ddxKillSrv.c Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
ddxLEDs.c Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
ddxLoad.c treewide: replace xnfstrdup() calls by XNFstrdup() 2026-01-25 10:39:55 -08:00
ddxPrivate.c Introduce a consistent coding style 2012-03-21 13:54:42 -07:00
ddxVT.c Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
maprules.c xkb: drop defining XKBSRV_NEED_FILE_FUNCS 2026-01-19 12:32:18 -08:00
meson.build Add a Meson build system alongside autotools. 2017-04-26 15:25:27 -07:00
README.compiled Strip trailing whitespace from source files 2026-01-25 10:40:02 -08:00
xkb-procs.h xkb: rename xkb.h to xkb-procs.h 2022-07-08 14:27:04 +00:00
xkb.c xkb: Prevent overflow in XkbSetCompatMap() 2026-01-25 10:40:03 -08:00
xkbAccessX.c xkb: move *_TIMER defines into xkbAccessX.c 2026-01-25 10:39:52 -08:00
xkbActions.c xkb: Fix locked/latched indicator desync across multiple keyboards 2026-02-01 17:53:18 -08:00
XKBAlloc.c xkb: ensure XkbAllocNames sets num_rg to 0 on allocation failure 2026-01-25 10:40:01 -08:00
xkbDflts.h Use ARRAY_SIZE all over the tree 2017-10-30 13:45:20 -04:00
xkbEvents.c xkb: Free the XKB resource when freeing XkbInterest 2026-01-25 10:40:03 -08:00
xkbfmisc.c xkb: drop ununsed XkbNameMatchesPattern() 2026-01-19 12:32:25 -08:00
XKBGAlloc.c xkb: Fix heap overflow caused by optimized away min. 2020-12-04 18:31:06 -05:00
xkbgeom.h Drop trailing whitespaces 2014-11-12 10:25:00 +10:00
xkbInit.c xkb: xkbInit: fix char signess mismatch 2026-01-25 10:39:57 -08:00
xkbLEDs.c dix: Force update LEDs after device state update in EnableDevice 2023-02-21 03:43:05 +00:00
XKBMAlloc.c xkb: Check that needed is > 0 in XkbResizeKeyActions 2026-01-25 10:40:01 -08:00
XKBMisc.c xkb: Fix buffer overflow in XkbChangeTypesOfKey() 2026-01-25 10:40:01 -08:00
xkbout.c xkb: drop defining XKBSRV_NEED_FILE_FUNCS 2026-01-19 12:32:18 -08:00
xkbPrKeyEv.c xwayland: Don't run key behaviors and actions 2026-01-25 10:39:58 -08:00
xkbSwap.c xkb: drop swapping request length fields 2026-01-25 10:39:58 -08:00
xkbtext.c xkb: Add tbGetBufferString helper function 2026-01-25 10:40:01 -08:00
xkbUtils.c xkb: Always use MAP_LENGTH keymap size 2026-01-25 10:39:58 -08:00
XKM_file_format.txt Fix spelling/wording issues 2020-07-05 13:07:33 -07:00
xkmread.c xkb: make XkbInternAtom() static 2026-01-25 10:39:53 -08: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.