[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

libxkbcommon: Changes to 'upstream-unstable'



 COPYING                                |   27 
 Makefile.am                            |   62 
 NEWS                                   |   44 
 PACKAGING                              |   50 
 README.md                              |   92 
 bench/.gitignore                       |    4 
 bench/compose.c                        |   63 
 bench/key-proc.c                       |    2 
 bench/rules.c                          |   60 
 bench/rulescomp.c                      |   53 
 configure.ac                           |   29 
 doc/Doxyfile.in                        |   18 
 doc/compat.md                          |   55 
 doc/doxygen-extra.css                  |    9 
 doc/quick-guide.md                     |   24 
 src/compat.c                           |  189 -
 src/compose/parser.c                   |  759 ++++
 src/compose/parser.h                   |   36 
 src/compose/paths.c                    |  204 +
 src/compose/paths.h                    |   42 
 src/compose/state.c                    |  196 +
 src/compose/table.c                    |  219 +
 src/compose/table.h                    |  100 
 src/darray.h                           |    6 
 src/keymap.c                           |    6 
 src/keymap.h                           |    2 
 src/keysym.c                           |   12 
 src/keysym.h                           |    3 
 src/scanner-utils.h                    |   44 
 src/state.c                            |    2 
 src/xkbcomp/ast-build.c                |    8 
 src/xkbcomp/keycodes.c                 |    9 
 src/xkbcomp/keymap-dump.c              |   32 
 src/xkbcomp/keymap.c                   |    4 
 src/xkbcomp/parser.y                   |   12 
 src/xkbcomp/rules.c                    |  115 
 src/xkbcomp/scanner.c                  |    6 
 src/xkbcomp/symbols.c                  |   74 
 test/.gitignore                        |    2 
 test/common.c                          |   43 
 test/compose.c                         |  525 ++
 test/data/compat/accessx               |   10 
 test/data/compat/basic                 |   11 
 test/data/compat/caps                  |   15 
 test/data/compat/complete              |    2 
 test/data/compat/iso9995               |    9 
 test/data/compat/ledcaps               |   35 
 test/data/compat/lednum                |   33 
 test/data/compat/ledscroll             |   35 
 test/data/compat/level5                |   31 
 test/data/compat/misc                  |   68 
 test/data/compat/mousekeys             |  153 
 test/data/compat/pc                    |   10 
 test/data/compat/xfree86               |    4 
 test/data/compose/en_US.UTF-8/Compose  | 5973 +++++++++++++++++++++++++++++++++
 test/data/keycodes/xfree86             |    4 
 test/data/keymaps/host.xkb             |   17 
 test/data/keymaps/no-aliases.xkb       |  460 --
 test/data/keymaps/stringcomp.data      |   17 
 test/data/rules/base                   |  111 
 test/data/rules/evdev                  |   57 
 test/data/symbols/altwin               |  107 
 test/data/symbols/ca                   |   42 
 test/data/symbols/capslock             |   60 
 test/data/symbols/ch                   |   35 
 test/data/symbols/ctrl                 |   88 
 test/data/symbols/cz                   |  173 
 test/data/symbols/de                   |  125 
 test/data/symbols/empty                |    2 
 test/data/symbols/group                |  323 -
 test/data/symbols/il                   |  136 
 test/data/symbols/in                   |  517 ++
 test/data/symbols/inet                 |  264 -
 test/data/symbols/keypad               |  131 
 test/data/symbols/latin                |   26 
 test/data/symbols/level3               |  115 
 test/data/symbols/level5               |   91 
 test/data/symbols/macintosh_vndr/apple |  141 
 test/data/symbols/macintosh_vndr/us    |  145 
 test/data/symbols/pc                   |   45 
 test/data/symbols/ru                   |  838 ++--
 test/data/symbols/shift                |   29 
 test/data/symbols/srvr_ctrl            |   51 
 test/data/symbols/terminate            |    2 
 test/data/symbols/us                   |  174 
 test/data/sync.sh                      |    2 
 test/data/types/basic                  |   13 
 test/data/types/extra                  |   71 
 test/data/types/iso9995                |    6 
 test/data/types/level5                 |   34 
 test/data/types/mousekeys              |    6 
 test/data/types/numpad                 |    8 
 test/data/types/pc                     |   25 
 test/evdev-scancodes.h                 |  587 +++
 test/filecomp.c                        |    1 
 test/interactive-evdev.c               |   68 
 test/interactive-x11.c                 |    2 
 test/keyseq.c                          |   33 
 test/rules-file.c                      |   48 
 test/rulescomp.c                       |   57 
 test/state.c                           |    2 
 test/test.h                            |    5 
 test/x11comp.c                         |    9 
 xkbcommon-x11.map                      |    9 
 xkbcommon.map                          |   87 
 xkbcommon/xkbcommon-compose.h          |  483 ++
 xkbcommon/xkbcommon-x11.h              |   73 
 xkbcommon/xkbcommon.h                  |  135 
 108 files changed, 12696 insertions(+), 3025 deletions(-)

New commits:
commit c43c3c866eb9d52cd8f61e75cbef1c30d07f3a28
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 18 16:41:59 2014 +0300

    Bump version to 0.5.0
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

diff --git a/configure.ac b/configure.ac
index 169ab7c..cb176ee 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@ dnl Process this file with autoconf to create configure.
 
 # Initialize Autoconf
 AC_PREREQ([2.62])
-AC_INIT([libxkbcommon], [0.4.3],
+AC_INIT([libxkbcommon], [0.5.0],
         [https://bugs.freedesktop.org/enter_bug.cgi?product=libxkbcommon],
         [libxkbcommon], [http://xkbcommon.org])
 AC_CONFIG_SRCDIR([Makefile.am])

commit 60104e7955266f9b8ab43bf6ccd013d6fa8a2de3
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 18 16:35:49 2014 +0300

    Update NEWS
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

diff --git a/NEWS b/NEWS
index 4dab3ae..bec2bd9 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,47 @@
+libxkbcommon 0.5.0 - 2014-10-18
+==================
+
+- Added support for Compose/dead keys in a new module (included in
+  libxkbcommon). See the documentation or the
+  xkbcommon/xkbcommon-compose.h header file for more details.
+
+- Improved and reordered some sections of the documentation.
+
+- The doxygen HTML pages were made nicer to read.
+
+- Most tests now run also on non-linux platforms.
+
+- A warning is emitted by default about RMLVO values which are not used
+  during keymap compilation, which are most often a user misconfiguration.
+  For example, "terminate:ctrl_alt_backspace" instead of
+  "terminate:ctrl_alt_bksp".
+
+- Added symbol versioning for libxkbcommon and libxkbcommon-x11.
+  Note: binaries compiled against this and future versions will not be
+  able to link against the previous versions of the library.
+
+- Removed several compatablity symbols from the binary (the API isn't
+  affected). This affects binaries which
+
+  1. Were compiled against a pre-stable (<0.2.0) version of libxkbcommon, and
+  2. Are linked against the this or later version of libxkbcommon.
+
+  Such a scenario is likely to fail already.
+
+- If Xvfb is not available, the x11comp test is now correctly skipped
+  instead of hanging.
+
+- Benchmarks were moved to a separate bench/ directory.
+
+- Build fixes from OpenBSD.
+
+- Fixed a bug where key type entries such as "map[None] = Level2;" were
+  ignored.
+
+- New API:
+  XKB_COMPOSE_*
+  xkb_compose_*
+
 libxkbcommon 0.4.3 - 2014-08-19
 ==================
 

commit b92f79240972a7eb9311039ee4e2eda2bca8039c
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 18 16:38:13 2014 +0300

    Change initial symbol file versions to V_0.5.0
    
    It will be quite confusing to use V_0.4.3 since this was already
    released without symbol versioning.
    
    Hopefully this doesn't cause any trouble for people who are using -git.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

diff --git a/xkbcommon-x11.map b/xkbcommon-x11.map
index c1a3240..a219288 100644
--- a/xkbcommon-x11.map
+++ b/xkbcommon-x11.map
@@ -1,4 +1,4 @@
-V_0.4.3 {
+V_0.5.0 {
 global:
 	xkb_x11_setup_xkb_extension;
 	xkb_x11_get_core_keyboard_device_id;
diff --git a/xkbcommon.map b/xkbcommon.map
index 3bbb13e..29fd7ac 100644
--- a/xkbcommon.map
+++ b/xkbcommon.map
@@ -1,4 +1,4 @@
-V_0.4.3 {
+V_0.5.0 {
 global:
 	xkb_keysym_get_name;
 	xkb_keysym_from_name;

commit 47bb9fd13794d0420e27da47b1a7ac2787cfc417
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 18 16:37:46 2014 +0300

    compose: fill @since TBD
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

diff --git a/xkbcommon/xkbcommon-compose.h b/xkbcommon/xkbcommon-compose.h
index fd6badb..5755aec 100644
--- a/xkbcommon/xkbcommon-compose.h
+++ b/xkbcommon/xkbcommon-compose.h
@@ -38,7 +38,7 @@ extern "C" {
 /**
  * @defgroup compose Compose and dead-keys support
  * Support for Compose and dead-keys.
- * @since TBD
+ * @since 0.5.0
  *
  * @{
  */

commit aa41d8833475fece07a29bc797100e3d827a8b7e
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 18 16:03:41 2014 +0300

    doc/compat.md: add compose incompatibilities
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

diff --git a/doc/compat.md b/doc/compat.md
index c7c6518..63a45e7 100644
--- a/doc/compat.md
+++ b/doc/compat.md
@@ -44,3 +44,12 @@ Notable additions:
 - multiple keysyms per level
   + this requires incompatible dataset changes, such that X11 would
     not be able to parse these
+
+## Compose support
+
+Relative to the standard implementation in libX11 (described in the
+Compose(5) man-page), some features are not supported:
+
+- the (! MODIFIER) syntax
+- using modifier keysyms in Compose sequences
+- several interactions with Braille keysyms

commit 413954aa44e7fc103f27fdc7cd962ae8532d96be
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 18 15:51:41 2014 +0300

    Add PACKAGING file
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

diff --git a/Makefile.am b/Makefile.am
index dfb3572..8e45ccb 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -14,7 +14,8 @@ EXTRA_DIST = \
 	doc/rules-format.txt \
 	doc/doxygen-extra.css \
 	xkbcommon.map \
-	xkbcommon-x11.map
+	xkbcommon-x11.map \
+	PACKAGING
 
 AM_CPPFLAGS = \
 	-DDFLT_XKB_CONFIG_ROOT='"$(XKBCONFIGROOT)"' \
diff --git a/PACKAGING b/PACKAGING
new file mode 100644
index 0000000..738ccc4
--- /dev/null
+++ b/PACKAGING
@@ -0,0 +1,50 @@
+libxkbcommon consists of two shared libraries, libxkbcommon (the main
+library) and libxkbcommon-x11 (an addon library for XCB clients).
+
+The files for libxkbcommon-x11 are:
+    libxkbcommon-x11.a libxkbcommon.so* xkbcommon/xkbcommon-x11.h
+    xkbcommon-x11.map xkbcommon-x11.pc
+
+libxkbcommon-x11 can be disabled with --disable-x11 (see
+`./configure --help` for other options/variables).
+
+Dependencies for libxkbcommon:
+- C compiler, autoconf, automake, pkg-config, libc, etc.
+
+- (build optional) xorg-util-macros.
+  Output included in tarball.
+
+- (build optional) bison (preferred) or byacc>=20141006.
+  Output included in tarball.
+  byacc must be configured with --enable-btyacc.
+
+- (build optional, runtime) xkeyboard-config.
+  During build, for automatically detecting the value of
+  --with-xkb-config-root instead of guessing (/usr/share/X11/xkb).
+  During runtime, not strictly needed, but most users of the library
+  would need it.
+
+- (runtime) libX11.
+  Contains the dataset for Compose support (/usr/share/X11/locale).
+  Please don't depend on it explicitly.
+
+- (build optional) doxygen.
+  For generating the HTML documentation.
+
+- (build optional) gperf.
+  Output included in git and tarball. To regenerate, use
+  `make update-keywords`.
+
+Dependencies for libxkbcommon-x11:
+- libxkbcommon.
+
+- libxcb>=1.10 with libxcb-xkb.
+
+Dependencies for libxkbcommon-x11 tests:
+- xkbcomp, Xvfb.
+  If they are not available, the relevant tests are skipped.
+
+Unless libxcb is always available as part of the system, it is preferred
+that libxkbcommon and libxkbcommon-x11 be split into separate packages,
+such that the main library does not depend on libxcb. This avoids a
+transitive dependency of Wayland clients on X libraries.

commit 047d06122e88886bd49a4438e75fcbfc990ba1bf
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 18 15:07:37 2014 +0300

    Makefile.am: add symbol files to EXTRA_DIST
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

diff --git a/Makefile.am b/Makefile.am
index cd2dfab..dfb3572 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -12,7 +12,9 @@ EXTRA_DIST = \
 	doc/compat.md \
 	doc/keymap-format-text-v1.txt \
 	doc/rules-format.txt \
-	doc/doxygen-extra.css
+	doc/doxygen-extra.css \
+	xkbcommon.map \
+	xkbcommon-x11.map
 
 AM_CPPFLAGS = \
 	-DDFLT_XKB_CONFIG_ROOT='"$(XKBCONFIGROOT)"' \

commit 6337d789e66f7730fd347a324bdcbf52a57d86d7
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 18 14:52:54 2014 +0300

    README: we also accepts patches through github
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

diff --git a/README.md b/README.md
index 043b485..867b532 100644
--- a/README.md
+++ b/README.md
@@ -42,6 +42,7 @@ xkbcommon is maintained in git at
 
 Patches are always welcome, and may be sent to either
     <xorg-devel@lists.x.org> or <wayland-devel@lists.freedesktop.org>
+or through github.
 
 Bugs are also welcome, and may be reported either at
     Bugzilla https://bugs.freedesktop.org/describecomponents.cgi?product=libxkbcommon

commit 0419f6e78377a91f997f0f67ae0ef49fa1bc09c3
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 18 14:50:49 2014 +0300

    docs: make html output have a fixed width, hide footer
    
    It's hard to read text which stretches indefinitely.
    
    The footer is not adding much.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

diff --git a/Makefile.am b/Makefile.am
index b2bdbe7..cd2dfab 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -11,7 +11,8 @@ EXTRA_DIST = \
 	doc/quick-guide.md \
 	doc/compat.md \
 	doc/keymap-format-text-v1.txt \
-	doc/rules-format.txt
+	doc/rules-format.txt \
+	doc/doxygen-extra.css
 
 AM_CPPFLAGS = \
 	-DDFLT_XKB_CONFIG_ROOT='"$(XKBCONFIGROOT)"' \
diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in
index 8ef97b6..5881ff9 100644
--- a/doc/Doxyfile.in
+++ b/doc/Doxyfile.in
@@ -925,7 +925,7 @@ HTML_STYLESHEET        =
 # robust against future updates. Doxygen will copy the style sheet file to
 # the output directory.
 
-HTML_EXTRA_STYLESHEET  =
+HTML_EXTRA_STYLESHEET  = @abs_top_srcdir@/doc/doxygen-extra.css
 
 # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
 # other source files which should be copied to the HTML output directory. Note
diff --git a/doc/doxygen-extra.css b/doc/doxygen-extra.css
new file mode 100644
index 0000000..632ebad
--- /dev/null
+++ b/doc/doxygen-extra.css
@@ -0,0 +1,9 @@
+div#top, div.header, div.contents {
+        margin-left: auto;
+        margin-right: auto;
+        width: 960px;
+}
+
+.footer {
+        display: none;
+}

commit b05a05edbd4f386de8cb82003ed3408786478e0f
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 18 14:29:37 2014 +0300

    README: add notes about Compose support
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

diff --git a/README.md b/README.md
index 5e68e93..043b485 100644
--- a/README.md
+++ b/README.md
@@ -1,7 +1,9 @@
 # libxkbcommon
 
-libxkbcommon is a keymap compiler and support library which processes a
-reduced subset of keymaps as defined by the XKB specification.
+libxkbcommon is a keyboard keymap compiler and support library which
+processes a reduced subset of keymaps as defined by the XKB (X Keyboard
+Extension) specification.  It also contains a module for handling Compose
+and dead keys.
 
 ## Quick Guide
 
@@ -23,6 +25,9 @@ by all current distributions for their X11 XKB data.  More information on
 xkeyboard-config is available here:
     http://www.freedesktop.org/wiki/Software/XKeyboardConfig
 
+The dataset for Compose is distributed in libX11, as part of the X locale
+data.
+
 ## Relation to X11
 
 See [Compatibility](doc/compat.md) notes.

commit 49dc91cedb3f7a8205c1f346f8b2e891decf9209
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 18 14:12:14 2014 +0300

    doc/quick-guide: some improvements
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

diff --git a/doc/quick-guide.md b/doc/quick-guide.md
index a8634fd..3cf5b3b 100644
--- a/doc/quick-guide.md
+++ b/doc/quick-guide.md
@@ -1,6 +1,6 @@
 # Quick Guide
 
-## Intro
+## Introduction
 
 This document contains a quick walk-through of the often-used parts of
 the library. We will employ a few use-cases to lead the examples:
@@ -42,8 +42,9 @@ let's create one:
 The xkb_context contains the keymap include paths, the log level and
 functions, and other general customizable administrativia.
 
-Next we need to create a keymap, xkb_keymap. There are different ways to
-do this.
+Next we need to create a keymap, xkb_keymap. This is an immutable object
+which contains all of the information about the keys, layouts, etc. There
+are different ways to do this.
 
 If we are an evdev client, we have nothing to go by, so we need to ask
 the user for his/her keymap preferences (for example, an Icelandic
@@ -54,7 +55,14 @@ passing NULL chooses the system's default.
 
 ~~~{.c}
     struct xkb_keymap *keymap;
-    struct xkb_rule_names names = <...>;
+    /* Example RMLVO for Icelandic Dvorak. */
+    struct xkb_rule_names names = {
+        .rules = NULL,
+        .model = "pc105",
+        .layout = "is",
+        .variant = "dvorak",
+        .options = "terminate:ctrl_alt_bksp"
+    };
 
     keymap = xkb_keymap_new_from_names(ctx, &names,
                                        XKB_KEYMAP_COMPILE_NO_FLAGS);
@@ -65,6 +73,7 @@ If we are a Wayland client, the compositor gives us a string complete
 with a keymap. In this case, we can create the keymap object like this:
 
 ~~~{.c}
+    /* From the wl_keyboard::keymap event. */
     const char *keymap_string = <...>;
 
     keymap = xkb_keymap_new_from_string(ctx, keymap_string,
@@ -92,7 +101,8 @@ we will use the core keyboard device:
 ~~~
 
 Now that we have the keymap, we are ready to handle the keyboard devices.
-For each device, we create an xkb_state:
+For each device, we create an xkb_state, which remembers things like which
+keyboard modifiers and LEDs are active:
 
 ~~~{.c}
     struct xkb_state *state;

commit bac0c323b6559e37af04c4d6c8eb118d926ce07c
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 18 13:58:56 2014 +0300

    README: remove elaborate details from the intro
    
    Point to the "quick guide" instead.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

diff --git a/README.md b/README.md
index 2d71d67..5e68e93 100644
--- a/README.md
+++ b/README.md
@@ -1,16 +1,7 @@
 # libxkbcommon
 
-xkbcommon is a keymap compiler and support library which processes a
-reduced subset of keymaps as defined by the XKB specification.  Primarily,
-a keymap is created from a set of Rules/Model/Layout/Variant/Options names,
-processed through an XKB ruleset, and compiled into a struct xkb_keymap,
-which is the base type for all xkbcommon operations.
-
-From an xkb_keymap, an xkb_state object is created which holds the current
-state of all modifiers, groups, LEDs, etc, relating to that keymap.  All
-key events must be fed into the xkb_state object using xkb_state_update_key().
-Once this is done, the xkb_state object will be properly updated, and the
-keysyms to use can be obtained with xkb_state_key_get_syms().
+libxkbcommon is a keymap compiler and support library which processes a
+reduced subset of keymaps as defined by the XKB specification.
 
 ## Quick Guide
 

commit ab9cb11c91d5d9041de7f198f30bca3f7470ac6b
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 18 13:53:25 2014 +0300

    doc/compat.md: we don't support more groups or mods yet
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

diff --git a/doc/compat.md b/doc/compat.md
index 22c6164..c7c6518 100644
--- a/doc/compat.md
+++ b/doc/compat.md
@@ -39,8 +39,8 @@ On the other hand, some features and extensions were added.
 
 Notable additions:
 - 32-bit keycodes
-- extended number of modifiers
-- extended number of groups
+- extended number of modifiers (planned)
+- extended number of groups (planned)
 - multiple keysyms per level
   + this requires incompatible dataset changes, such that X11 would
     not be able to parse these

commit 494a8fbf3fdfff79cb763556db8b018b623d7ff9
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 18 13:50:54 2014 +0300

    README: move compatibility notes to their own page
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

diff --git a/Makefile.am b/Makefile.am
index 9071e90..b2bdbe7 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -9,6 +9,7 @@ EXTRA_DIST = \
 	test/data \
 	README.md \
 	doc/quick-guide.md \
+	doc/compat.md \
 	doc/keymap-format-text-v1.txt \
 	doc/rules-format.txt
 
diff --git a/README.md b/README.md
index c4174ad..2d71d67 100644
--- a/README.md
+++ b/README.md
@@ -34,48 +34,7 @@ xkeyboard-config is available here:
 
 ## Relation to X11
 
-Relative to the XKB 1.1 specification implemented in current X servers,
-xkbcommon has removed support for some parts of the specification which
-introduced unnecessary complications.  Many of these removals were in fact
-not implemented, or half-implemented at best, as well as being totally
-unused in the standard dataset.
-
-Notable removals:
-- geometry support
-  + there were very few geometry definitions available, and while
-    xkbcommon was responsible for parsing this insanely complex format,
-    it never actually did anything with it
-  + hopefully someone will develop a companion library which supports
-    keyboard geometries in a more useful format
-- KcCGST (keycodes/compat/geometry/symbols/types) API
-  + use RMLVO instead; KcCGST is now an implementation detail
-  + including pre-defined keymap files
-- XKM support
-  + may come in an optional X11 support/compatibility library
-- around half of the interpret actions
-  + pointer device, message and redirect actions in particular
-- non-virtual modifiers
-  + core and virtual modifiers have been collapsed into the same
-    namespace, with a 'significant' flag that largely parallels the
-    core/virtual split
-- radio groups
-  + completely unused in current keymaps, never fully implemented
-- overlays
-  + almost completely unused in current keymaps
-- key behaviors
-  + used to implement radio groups and overlays, and to deal with things
-    like keys that physically lock; unused in current keymaps
-- indicator behaviours such as LED-controls-key
-  + the only supported LED behaviour is key-controls-LED; again this
-    was never really used in current keymaps
-
-Notable additions:
-- 32-bit keycodes
-- extended number of modifiers
-- extended number of groups
-- multiple keysyms per level
-  + this requires incompatible dataset changes, such that X11 would
-    not be able to parse these
+See [Compatibility](doc/compat.md) notes.
 
 ## Development
 
diff --git a/doc/Doxyfile.in b/doc/Doxyfile.in
index 910e8a7..8ef97b6 100644
--- a/doc/Doxyfile.in
+++ b/doc/Doxyfile.in
@@ -656,6 +656,7 @@ WARN_LOGFILE           =
 
 INPUT                  = @abs_top_srcdir@/README.md \
                          @abs_top_srcdir@/doc/quick-guide.md \
+                         @abs_top_srcdir@/doc/compat.md \
                          @abs_top_srcdir@/xkbcommon/xkbcommon.h \
                          @abs_top_srcdir@/xkbcommon/xkbcommon-names.h \
                          @abs_top_srcdir@/xkbcommon/xkbcommon-x11.h \
diff --git a/doc/compat.md b/doc/compat.md
new file mode 100644
index 0000000..22c6164
--- /dev/null
+++ b/doc/compat.md
@@ -0,0 +1,46 @@
+# Compatibility
+
+Relative to the XKB 1.1 specification implemented in current X servers,
+xkbcommon has removed support for some parts of the specification which
+introduced unnecessary complications.  Many of these removals were in fact
+not implemented, or half-implemented at best, as well as being totally
+unused in the standard dataset.
+
+Notable removals:
+- geometry support
+  + there were very few geometry definitions available, and while
+    xkbcommon was responsible for parsing this insanely complex format,
+    it never actually did anything with it
+  + hopefully someone will develop a companion library which supports
+    keyboard geometries in a more useful format
+- KcCGST (keycodes/compat/geometry/symbols/types) API
+  + use RMLVO instead; KcCGST is now an implementation detail
+  + including pre-defined keymap files
+- XKM support
+  + may come in an optional X11 support/compatibility library
+- around half of the interpret actions
+  + pointer device, message and redirect actions in particular
+- non-virtual modifiers
+  + core and virtual modifiers have been collapsed into the same
+    namespace, with a 'significant' flag that largely parallels the
+    core/virtual split
+- radio groups
+  + completely unused in current keymaps, never fully implemented
+- overlays
+  + almost completely unused in current keymaps
+- key behaviors
+  + used to implement radio groups and overlays, and to deal with things
+    like keys that physically lock; unused in current keymaps
+- indicator behaviours such as LED-controls-key
+  + the only supported LED behaviour is key-controls-LED; again this
+    was never really used in current keymaps
+
+On the other hand, some features and extensions were added.
+
+Notable additions:
+- 32-bit keycodes
+- extended number of modifiers
+- extended number of groups
+- multiple keysyms per level
+  + this requires incompatible dataset changes, such that X11 would
+    not be able to parse these

commit 2e8ab38351266e3894cb797d4bd6a007f1d66603
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 18 13:44:02 2014 +0300

    README: link to online API docs
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

diff --git a/README.md b/README.md
index 41208d8..c4174ad 100644
--- a/README.md
+++ b/README.md
@@ -18,11 +18,11 @@ See [Quick Guide](doc/quick-guide.md).
 
 ## API
 
-While xkbcommon's API is somewhat derived from the classic XKB API as found
+While libxkbcommon's API is somewhat derived from the classic XKB API as found
 in X11/extensions/XKB.h and friends, it has been substantially reworked to
-expose fewer internal details to clients.  The supported API is available
-in the xkbcommon/xkbcommon-*.h files.  Additional support is provided for
-X11 (XCB) clients, in the xkbcommon-x11 library, xkbcommon/xkbcommon-x11.h.
+expose fewer internal details to clients.
+
+See the [API Documentation](http://xkbcommon.org/doc/current/modules.html).
 
 ## Dataset
 

commit cb46189335d8099364a2e1965e285f019312a6d4
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 18 13:34:15 2014 +0300

    README: move note about xkeyboard-config to its own section
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

diff --git a/README.md b/README.md
index b45a674..41208d8 100644
--- a/README.md
+++ b/README.md
@@ -12,12 +12,6 @@ key events must be fed into the xkb_state object using xkb_state_update_key().
 Once this is done, the xkb_state object will be properly updated, and the
 keysyms to use can be obtained with xkb_state_key_get_syms().
 
-libxkbcommon does not distribute a dataset itself, other than for testing
-purposes.  The most common dataset is xkeyboard-config, as used by all
-current distributions for their X11 XKB data.  More information on
-xkeyboard-config is available here:
-    http://www.freedesktop.org/wiki/Software/XKeyboardConfig
-
 ## Quick Guide
 
 See [Quick Guide](doc/quick-guide.md).
@@ -30,6 +24,14 @@ expose fewer internal details to clients.  The supported API is available
 in the xkbcommon/xkbcommon-*.h files.  Additional support is provided for
 X11 (XCB) clients, in the xkbcommon-x11 library, xkbcommon/xkbcommon-x11.h.
 
+## Dataset
+
+libxkbcommon does not distribute a keymap dataset itself, other than for
+testing purposes.  The most common dataset is xkeyboard-config, which is used
+by all current distributions for their X11 XKB data.  More information on
+xkeyboard-config is available here:
+    http://www.freedesktop.org/wiki/Software/XKeyboardConfig
+
 ## Relation to X11
 
 Relative to the XKB 1.1 specification implemented in current X servers,

commit 8bf1e193fc0a8a62760c641ceb02f5e023980118
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 18 13:31:32 2014 +0300

    README: remove section on API stability
    
    This was useful when we *weren't* stable. But now that we are this
    should be obvious.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

diff --git a/README.md b/README.md
index 2627a32..b45a674 100644
--- a/README.md
+++ b/README.md
@@ -30,14 +30,6 @@ expose fewer internal details to clients.  The supported API is available
 in the xkbcommon/xkbcommon-*.h files.  Additional support is provided for
 X11 (XCB) clients, in the xkbcommon-x11 library, xkbcommon/xkbcommon-x11.h.
 
-The xkbcommon API and ABI are stable. We will attempt to not break ABI during
-a minor release series, so applications written against 0.1.0 should be
-completely compatible with 0.5.3, but not necessarily with 1.0.0.  However, new
-symbols may be introduced in any release.  Thus, anyone packaging xkbcommon
-should make sure any package depending on it depends on a release greater than
-or equal to the version it was built against (or earlier, if it doesn't use
-any newly-introduced symbols), but less than the next major release.
-
 ## Relation to X11
 
 Relative to the XKB 1.1 specification implemented in current X servers,

commit f774f819d6d406bf859d22d447895b0bc256297a
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 18 13:23:53 2014 +0300

    Replace some strncmp's with memcmp
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

diff --git a/src/compose/paths.c b/src/compose/paths.c
index c96d7d2..8deb1dd 100644
--- a/src/compose/paths.c
+++ b/src/compose/paths.c
@@ -115,13 +115,13 @@ resolve_name(const char *filename, enum resolve_name_direction direction,
             s++;
 
         if (direction == LEFT_TO_RIGHT) {
-            if (left_len == name_len && strncmp(left, name, left_len) == 0) {
+            if (left_len == name_len && memcmp(left, name, left_len) == 0) {
                 match = strndup(right, right_len);
                 break;
             }
         }
         else if (direction == RIGHT_TO_LEFT) {
-            if (right_len == name_len && strncmp(right, name, right_len) == 0) {
+            if (right_len == name_len && memcmp(right, name, right_len) == 0) {
                 match = strndup(left, left_len);
                 break;
             }
diff --git a/src/scanner-utils.h b/src/scanner-utils.h
index b60a100..5fdb22a 100644
--- a/src/scanner-utils.h
+++ b/src/scanner-utils.h
@@ -34,13 +34,13 @@ typedef darray(struct sval) darray_sval;
 static inline bool
 svaleq(struct sval s1, struct sval s2)
 {
-    return s1.len == s2.len && strncmp(s1.start, s2.start, s1.len) == 0;
+    return s1.len == s2.len && memcmp(s1.start, s2.start, s1.len) == 0;
 }
 
 static inline bool
 svaleq_prefix(struct sval s1, struct sval s2)
 {
-    return s1.len <= s2.len && strncmp(s1.start, s2.start, s1.len) == 0;
+    return s1.len <= s2.len && memcmp(s1.start, s2.start, s1.len) == 0;
 }
 
 struct scanner {

commit a4cc119bf500d0c54ef5cc2b7d27a69a64686692
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 18 12:36:40 2014 +0300

    compose/parser: save len in keysym_from_name cache
    
    This reduces a lot of strcmp's, and allows to use a faster memcmp.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

diff --git a/src/compose/parser.c b/src/compose/parser.c
index ebc1ffd..95f0fdd 100644
--- a/src/compose/parser.c
+++ b/src/compose/parser.c
@@ -75,6 +75,7 @@ OR PERFORMANCE OF THIS SOFTWARE.
 struct keysym_from_name_cache {
     struct {
         char name[64];
+        unsigned len;
         xkb_keysym_t keysym;
     } cache[KEYSYM_FROM_NAME_CACHE_SIZE];
     unsigned next;
@@ -90,11 +91,13 @@ cached_keysym_from_name(struct keysym_from_name_cache *cache,
         return XKB_KEY_NoSymbol;
 
     for (unsigned i = 0; i < KEYSYM_FROM_NAME_CACHE_SIZE; i++)
-        if (streq(cache->cache[i].name, name))
+        if (cache->cache[i].len == len &&
+            memcmp(cache->cache[i].name, name, len) == 0)
             return cache->cache[i].keysym;
 
     keysym = xkb_keysym_from_name(name, XKB_KEYSYM_NO_FLAGS);
     strcpy(cache->cache[cache->next].name, name);
+    cache->cache[cache->next].len = len;
     cache->cache[cache->next].keysym = keysym;
     cache->next = (cache->next + 1) % KEYSYM_FROM_NAME_CACHE_SIZE;
     return keysym;

commit a0d2b0297618b4e422deda5e247580747958405d
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Oct 17 01:14:57 2014 +0300

    test/keyseq: test 'map[None] = Level2;' scenario
    
    See previous commit for an explanation.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

diff --git a/test/keyseq.c b/test/keyseq.c
index 40a08e9..05c7957 100644
--- a/test/keyseq.c
+++ b/test/keyseq.c
@@ -459,6 +459,26 @@ main(void)
                         KEY_Z,         BOTH, XKB_KEY_y,                 FINISH));
 
     xkb_keymap_unref(keymap);
+    keymap = test_compile_rules(ctx, "evdev", "applealu_ansi", "us", "",
+                                "terminate:ctrl_alt_bksp");
+    assert(keymap);
+
+    assert(test_key_seq(keymap,
+                        KEY_5,         BOTH, XKB_KEY_5,                 NEXT,
+                        KEY_KP1,       BOTH, XKB_KEY_KP_1,              NEXT,
+                        KEY_NUMLOCK,   BOTH, XKB_KEY_Clear,             NEXT,
+                        KEY_LEFTSHIFT, DOWN, XKB_KEY_Shift_L,           NEXT,
+                        KEY_KP1,       BOTH, XKB_KEY_KP_1,              NEXT,
+                        KEY_LEFTSHIFT, UP,   XKB_KEY_Shift_L,           NEXT,
+                        KEY_CAPSLOCK,  BOTH, XKB_KEY_Caps_Lock,         NEXT,
+                        KEY_KP1,       BOTH, XKB_KEY_KP_1,              NEXT,
+                        KEY_LEFTSHIFT, DOWN, XKB_KEY_Shift_L,           NEXT,
+                        KEY_KP1,       BOTH, XKB_KEY_KP_1,              NEXT,
+                        KEY_LEFTSHIFT, UP,   XKB_KEY_Shift_L,           NEXT,
+                        KEY_CAPSLOCK,  BOTH, XKB_KEY_Caps_Lock,         NEXT,
+                        KEY_A,         BOTH, XKB_KEY_a,                 FINISH));
+
+    xkb_keymap_unref(keymap);
     xkb_context_unref(ctx);
     return 0;
 }

commit 312182ce7d33a95b5f87549f4cd5908f916e2131
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Oct 16 17:55:46 2014 +0300

    test/data: add files for model=applealu_ansi layout=us
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

diff --git a/test/data/symbols/macintosh_vndr/apple b/test/data/symbols/macintosh_vndr/apple
new file mode 100644
index 0000000..551eabc
--- /dev/null
+++ b/test/data/symbols/macintosh_vndr/apple
@@ -0,0 +1,141 @@
+//
+// Keyboard modification for Apple keyboards


Reply to: