XLibre Xserver
Go to file
Andreas Wettstein 0f537da72d xkb: Fixes to LatchMods/LatchGroup
The main problem this patch addresses is that if a latch is put on
multi-level key with a Latch/Lock/Set, it is possible that after all
keys are released, still base modifiers are set, which typically will
make the keyboard unusable.  To see how it happens (without the patch),
assume that key AltGr sets Mod5 when pressed by itself, and latches Mod3
when pressed together with Shift.  Now press Shift, then AltGr and
release both keys in reverse order.  Mod3 is now latched, and the
LatchMods filter remains active as the second filter.  Now press AltGr;
Mod5 base modifier gets set, and the SetMods filter will become active
as the first filter.  Release AltGr: First, the SetMods filter will set
clearMods to Mod5, then the LatchMods filter will overwrite clearMods
with Mod3.  Result: the Mod5 base modifier will remain set.  This
example becomes practically relevant for the revised German standard
layout (DIN 2137-1:2012-06).

Other changes implement the latch behaviour more accurately according to
the specification.  For example, releasing a modifier latching key can
at the same time clear a locked modifier, promote another modifier that
is latched to locked, and latch a third modifier.  Overall, what the
code does should be straightforward to compare what the XKB protocol
specification demands, see the table in section 6.3.

Finally, releasing a key no longer cancels a latch that has not become
pending yet.  In my opinion, the specification is not clear; it speaks
of "operating" a key, which the patch effectivly interprets as "press"
rather than "press or release".  From my experience, using the latter
interpretation makes latches on higher levels practically unusable.  In
the example given above, one would have to release AltGr always before
Shift to get the Mod3-Latch.  The practical relevance of latches on
higher levels is once more given by the revised German standard layout.

Signed-off-by: Andreas Wettstein <wettstein509@solnet.ch>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
2013-03-06 11:22:38 +10:00
Xext Merge branch 'master' of git+ssh://people.freedesktop.org/~alanc/xserver into next 2013-02-15 11:58:52 +10:00
Xi Xi: limit valuator copy to valuator array size (#59939) 2013-02-08 13:47:23 +10:00
composite Stop leaking overlayWin in PanoramiXCompositeGetOverlayWindow error paths 2013-02-05 18:30:13 -08:00
config config/udev: fix "removing GPU device" format string mistake 2013-01-21 19:41:09 -08:00
damageext Move extension initialisation prototypes into extinit.h 2012-07-09 23:06:41 -07:00
dbe Move extension initialisation prototypes into extinit.h 2012-07-09 23:06:41 -07:00
dix dix: only show the cursor if a window defines one (#58398) 2013-03-06 08:56:23 +10:00
doc doc: Update documentation about Windows platforms support a bit 2012-10-29 12:21:14 +00:00
exa Fix formatting of address operators 2012-12-05 18:09:48 -06:00
fb fb: drop two unneeded shadowing variables 2013-02-15 11:58:24 +10:00
glx Merge remote-tracking branch 'yselkowitz/master' 2012-12-19 12:22:03 -08:00
hw xephyr: fix "set but not used warnings" 2013-03-06 10:19:32 +10:00
include dix: only show the cursor if a window defines one (#58398) 2013-03-06 08:56:23 +10:00
m4 XORG_TLS: Pick the first option that works (ie: prefer __thread) 2013-02-14 09:20:47 -08:00
man Correct description of -displayfd option in man page. 2012-10-11 12:53:57 +01:00
mi mi: Ensure pointer emulating touch events update the sprite 2013-01-09 11:23:06 +10:00
miext miext/damage: Only wrap into the GC ops chain if there's a listener (v3) 2012-09-23 10:47:18 -07:00
os os: document pnprintf as sigsafe snprintf 2013-03-06 09:23:20 +10:00
randr randr: fix "set but unused" warnings 2013-02-15 11:58:14 +10:00
record Move extension initialisation prototypes into extinit.h 2012-07-09 23:06:41 -07:00
render render: Unwrap early on the animated cursor BlockHandler 2013-01-09 11:23:12 +10:00
test os: fix pnprintf OOB buffer read for unterminated length modifiers 2013-02-14 11:01:21 -08:00
xfixes dix: only show the cursor if a window defines one (#58398) 2013-03-06 08:56:23 +10:00
xkb xkb: Fixes to LatchMods/LatchGroup 2013-03-06 11:22:38 +10:00
.gitignore doc: relocate xserver.ent in the package root directory 2011-05-14 11:22:26 -07:00
COPYING Loader: Remove extension initialisation sorting 2012-07-10 00:31:02 -07:00
Makefile.am Add 'install-headers' target in the top-level Makefile 2012-07-09 16:29:04 -07:00
README packaging: provide a default README file #24206 2010-01-27 14:00:17 -08:00
autogen.sh autogen.sh: Honor NOCONFIGURE=1 2012-10-19 13:12:33 +10:00
configure.ac os: use libunwind to generate backtraces 2013-02-26 07:59:53 +10:00
devbook.am devbook.am: maintenance update from docbook.am 2011-09-21 14:07:52 -07:00
docbook.am docbook.am: embed css styles inside the HTML HEAD element 2011-09-21 14:07:49 -07:00
fix-miregion Change region implementation names to eliminate the 'mi' prefix 2010-06-05 17:47:32 -07:00
fix-miregion-private Change region implementation names to eliminate the 'mi' prefix 2010-06-05 17:47:32 -07:00
fix-patch-whitespace Rename region macros to eliminate screen argument 2010-06-05 18:59:00 -07:00
fix-region Rename region macros to eliminate screen argument 2010-06-05 18:59:00 -07:00
manpages.am Xdmx.man: Show actual configured XKB defaults instead of old hardcoded values 2011-06-21 17:54:14 -07:00
xorg-server.m4 macros: clarify documentation 2012-11-05 13:24:57 -06:00
xorg-server.pc.in xfree86: link modules against Xorg symbols on Cygwin 2012-04-05 21:57:07 -05:00
xserver.ent.in doc: relocate xserver.ent in the package root directory 2011-05-14 11:22:26 -07:00

					X Server

The X server accepts requests from client applications to create windows,
which are (normally rectangular) "virtual screens" that the client program
can draw into.

Windows are then composed on the actual screen by the X server
(or by a separate composite manager) as directed by the window manager,
which usually communicates with the user via graphical controls such as buttons
and draggable titlebars and borders.

For a comprehensive overview of X Server and X Window System, consult the
following article:
http://en.wikipedia.org/wiki/X_server

All questions regarding this software should be directed at the
Xorg mailing list:

        http://lists.freedesktop.org/mailman/listinfo/xorg

Please submit bug reports to the Xorg bugzilla:

        https://bugs.freedesktop.org/enter_bug.cgi?product=xorg

The master development code repository can be found at:

        git://anongit.freedesktop.org/git/xorg/xserver

        http://cgit.freedesktop.org/xorg/xserver

For patch submission instructions, see:

	http://www.x.org/wiki/Development/Documentation/SubmittingPatches

For more information on the git code manager, see:

        http://wiki.x.org/wiki/GitPage