commit 577612258ac62900e91c312cb6ee62db0dc0ed81
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Nov 7 00:41:06 2012 +0200

    Don't use trailing enum comma in public headers
    
    Pretty annoying, but C89 doesn't support that (officially), and it might
    cause warning with -pedantic, etc. (though you need -Wsystem-headers to
    see them usually). Removing them is not a big deal.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit d87035adacbe6ff5a857f33b61828d5c5248d6a9
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Nov 7 18:58:18 2012 +0200

    test/keysym: '\e' is non-standard
    
    test/keysym.c:139:43: warning: non-ISO-standard escape sequence, '\e'
    Didn't warn about it before..
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit eea0eaebfaf088d151af284c15359fd91639ed08
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Nov 6 23:00:55 2012 +0200

    doc: clarify that keysym_to_utf8 returns size including '\0'
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit d9317d5f328a95b6188eecf09d5acfbbe46004b6
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Nov 5 21:50:38 2012 +0200

    keysym-utf: mark keysymtab array as static
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 7891c9170bda67bc710ba9cad1b48263d14d7ec2
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Nov 5 21:34:59 2012 +0200

    keysym-utf: also translate special keysyms like Tab and Return
    
    The keysym2ucs.c file apparently leaves out some keysyms, which libX11
    deals with separately (like in _XkbHandleSpecialSym()).
    The problematic keysyms are the keypad ones (for which we already added
    some support) and keysyms which use 0xff** instead of 0x00** < 0x20.
    This code should fix them properly, as much as I could gather from
    libX11 and http://www.cl.cam.ac.uk/~mgk25/ucs/keysym2ucs.c and other
    sources (which are not aware of locale).
    
    https://bugs.freedesktop.org/show_bug.cgi?id=56780
    
    Reported-by: Gatis Paeglis <gatis.paeglis@digia.com>
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit fb201645b2bae1f4a1f7a6dfa37e14a0de04556e
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Nov 4 16:07:30 2012 +0200

    Add some explanations on consumed modifiers
    
    This should hopefully clarify this somewhat subtle point to the
    uninitiated users.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 998c957a3c7c861093f3f71f34989c258ed3073b
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Oct 30 18:21:56 2012 +0200

    action: don't allow private actions with a known type
    
    Some obscure bug having to do with Private actions; see the comments.
    This was prompted by:
    https://bugs.freedesktop.org/show_bug.cgi?id=56491
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 860fb171a925de7efda70d618cf2fec6a98f0869
Author: Damien Lespiau <damien.lespiau@intel.com>
Date:   Fri Oct 26 00:51:56 2012 +0100

    build: Require xorg macros 1.16
    
    For XORG_TESTSET_CFLAG and XORG_MEMORY_CHECK_FLAGS.
    
    Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
    Cc: Daniel Stone <daniel@fooishbar.org>

commit 2f7385d0e05072930cd91eaeeade4655bfd15acd
Author: Damien Lespiau <damien.lespiau@intel.com>
Date:   Fri Oct 26 00:51:46 2012 +0100

    build: Make autoreconf honour ACLOCAL_FLAGS
    
    When running autoreconf, it's possible to give flags to the underlying
    aclocal by declaring a ACLOCAL_AMFLAGS variable in the top level
    Makefile.am.
    
    Putting ${ACLOCAL_FLAGS} there allows the user to set an environment
    variable up before running autogen.sh and pull in the right directories
    to look for m4 macros, say an up-to-date version of the xorg-util macros.
    
    Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
    Cc: Daniel Stone <daniel@fooishbar.org>

commit 94155878ec98e2583e6ec999a881ad8015231a5c
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Oct 29 20:20:51 2012 +0200

    test/keyseq: add test for setting depressed group
    
    Tests the SetGroup action is working properly.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 7261f404d201b157dc0ce1ae0386fd74f3a128a7
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Oct 29 01:00:27 2012 +0200

    state, context: allow passing NULL to *_unref()
    
    For error handling code, it's nice to be able to pass NULL to these
    function without worrying about segfaults ensuing. free() sets the
    precedent here.
    
    Also document this fact.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a51ee70419cf492a46020123294c7f708c81070d
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Oct 26 16:24:11 2012 +0200

    state: don't use xkb_keymap_num_layouts internally
    
    Clearer and more greppable this way.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit b935d3610f2bd984ba94d21bb43498877816492a
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Oct 26 16:15:27 2012 +0200

    doc: fix wrong comment
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit ee6f3f280976ac2db4176389cbac7e168e023f21
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Oct 26 16:12:28 2012 +0200

    state: don't use xkb_state_serialize_* internally
    
    The code in these cases is clearer when done directly.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 92360016fe09cecccfa0287447a17393e0649ea9
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Oct 26 15:05:04 2012 +0200

    Makefile.am: move test.h to libtest_la_SOURCES
    
    Rather than EXTRA_DIST, where it doesn't belong.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 22b868fd750252425ef528664f8eb14ed1d5bf8a
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Oct 26 15:00:33 2012 +0200

    Makefile.am: split sed script into multiple lines
    
    To make it visible on one screen.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 0a5e9d90e74605f997c98a4724f6c72f9d380982
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Oct 26 14:43:15 2012 +0200

    configure.ac: don't tramp on user's CFLAGS
    
    The configure test shouldn't touch CFLAGS, because they come last on the
    command line and allow to users to override settings if needed.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a851ef1ed94012d9f2b09bce797fe75930345c58
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Oct 26 14:23:07 2012 +0200

    configure.ac: add explicit PKG_PROG_PKG_CONFIG
    
    We still use pkg-config to get the xkb_base variable from
    xkeyboard-config, but we removed all of the other PKG_ macro calls. This
    still works now, because XORG_DEFAULT_OPTIONS runs it somehow. But we
    shouldn't rely on it.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit c1c1b720b0df5e348c812990d5e43d71f2847f06
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Oct 24 23:27:40 2012 +0200

    test: add key processing benchmark
    
    This runs a bunch of random keys against xkb_state_update_key() and
    xkb_state_key_get_one_sym(), in a fairly unintelligent way.
    
    It might be nice to check when modifying this code path, or changing it,
    to see things haven't slowed down considerably. However, given the
    numbers this benchmark gives, it is pretty clear that we are not going
    to be the bottleneck for anything. So this can more-or-less be ignored.
    
    Incidentally, this also turned out to be a poor man's fuzzer, because it
    turned up the fix in the previous commit. Maybe we should consider
    beefing it up with an actual 'break stuff' intention and running it as
    part of 'make check'.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 6f093ad56b88488b95dc8bb543be89b7da9c25ee
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Oct 24 23:09:26 2012 +0200

    state: fix possible index-out-of-bounds in action dispatch table
    
    The current code assumes that action->type always falls in the range of
    the xkb_action_type enum. But keymaps can also have Private actions,
    which are allowed to set their own type number.
    
    So with a default xkeyboard-config keymap, keycode 86 at level 4, which
    triggers such an action, causes us to crash.
    
    Fix it by always checking the bounds.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a35d3223224fe6a24df0a16d599761aea70ac2dc
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Oct 24 17:38:28 2012 +1100

    More README
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 202f5606913c250b6204bb62f8d08a42296fb80d
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Oct 24 17:00:24 2012 +1100

    README updates
    
    Good thing I didn't check this before I made a release.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 5be22ad641e96f76ce08a9fd928553b67d627de4
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Oct 24 00:34:07 2012 +1100

    Bump to 0.2.0
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 3eac759989dc5d6ea0e9bdb82867317169a27cb5
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Oct 22 18:14:39 2012 +0200

    doc: various fixes
    
    Just moving around / fixing syntax / grammar.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 33bba36821a29e0e7a0f3b716be674cf14d87d20
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Oct 23 10:25:26 2012 +0200

    doc: move include_path functions to a separate group
    
    These are 'special intrest' function, like the logging functions, so
    it's nice to have them in their own logical group.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit e24ed49c7247d02653c96d70a819e03fe6895962
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Oct 23 10:05:16 2012 +0200

    test/interactive: use num_layouts_for_key()
    
    This is the more appropriate for a specific key (also considering the
    num_layouts() is a bit of a made-up value).
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit f76859bc87a0d499ec25f04ef95867e97bec74c3
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Oct 23 09:58:11 2012 +0200

    keymap: use plain array for keymap->group_names
    
    Again it is not resized.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 867992cd21baf49a542db1193ac0e01362b05e3f
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Oct 23 17:17:18 2012 +0200

    state: fix typo in state component copying
    
    Gladly no-one should have been fast enough to hit this.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 6bc9480ad1cdb0bbb5a18e948256cbee2036639e
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Oct 24 00:58:51 2012 +1100

    autogen: use --force instead of --symlink
    
    --force copies and installs all the autotools support files, rather than
    making symlinks, which can sometimes break things when upgrading your
    system autotools.  This is what xserver does.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 0c98237f0280e09f8aac5f691fc77dc1d4e95574
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Oct 22 21:46:43 2012 +0200

    Change update_mask arguments to read 'depressed' instead of 'base'
    
    Just to be consistent, as we use 'depressed' everywhere else in the API.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a807494e470320cd1da3a7aaa7d60ebab0227c7a
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Oct 22 21:16:35 2012 +0200

    test/interactive: add option to show state changes
    
    Pass -c to see.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 4b81c9f3e31a5128d4c9f55696f684948e5ad3f1
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Oct 22 21:00:57 2012 +0200

    Report which components of the state have changed
    
    We add a return value to the xkb_state_update_key and
    xkb_state_update_mask, which reports to the caller which of the state
    components have changed as a result.
    
    This restores the XKB functionality of the XkbStateNotify and
    XkbIndicatorsStateNotify events. See:
    http://www.x.org/releases/current/doc/kbproto/xkbproto.html#Events
    It is quite useful in some situations. For example, it allows an
    application to avoid doing some work if nothing of relevance in the
    state has changed. Say, a keyboard layout applet. Also useful for
    debugging.
    
    The deltas themselves are not provided, because I can't see a use case.
    If needed, it should be possible to add some API for that.
    
    In xkbcommon, keymaps are immutable, so all of the other *Notify events
    from XKB are irrelevant.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 550cb24d3c0a27815f7dd48324208baed72cb281
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Oct 22 19:19:43 2012 +0200

    state: add struct state_components
    
    This holds all of the state component fields in the state in one struct.
    We will later want to keep the previous state components after updates,
    so this will allow us to do it without duplicating the fields.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 6a94b122a4dde3e8f59d69f9a388e9a77c343326
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Oct 22 20:49:44 2012 +0200

    Split the mods, layout, leds parts of xkb_state_components
    
    Note first:
    This commits breaks the ABI somewhat. If an application is run against
    this commit without recompiling against the updated header, these break:
        - xkb_state_layout_*_is_active always retuns false.
        - xkb_state_serialize_mods always returns 0.
    So it might break layout switching in some applications. However,
    xkbcommon-compat.h provides the necessary fixes, so recompiling should
    work (though updating the application is even better).
    
    Split the enum to its individual components, which enables us to refer
    to them individually. We will use that later for reporting which
    components of the state have changed after update.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 3a5f87b8e9856a69c8978f8baf0954e08679c974
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Oct 22 17:53:44 2012 +0200

    doc: add note about X11 vs. extended keycodes
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 0779d9dcad14667d30ff097bd5293fb020e306da
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Oct 21 17:13:25 2012 +0200

    Silence a couple of warnings
    
    These appear to come and go randomly.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit bb82759c90ec99aba595315c3cf36517bbc5f9c2
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Oct 18 23:08:10 2012 +0200

    Move _text() functions from keymap-dump to text.c
    
    And make them use context_get_buffer() instead of using a static char
    array.
    
    This was the last non-thread-safe piece we had, as far as I can tell.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit e6946ae2c59a878e838fe777b50dad695b63e6bb
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Oct 18 22:55:17 2012 +0200

    Remove a couple more uses of static char buffers
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 714e95e1445ab0d37b3970bebdd9af09d7eaf923
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Oct 18 22:51:10 2012 +0200

    Contextualize GetBuffer()
    
    Instead storing the buffer in a non-thread-safe static array, we move it
    to the context.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit eb748ab643ea1f35952e398fb1194d8a8fd41ec7
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Oct 18 21:04:27 2012 +0200

    Clean up xkb_sym_interpret a bit
    
    First we split the LEVEL_ONE_ONLY bit off of the 'match' field, which
    allows us to turn enum xkb_match_operation to a simple enum and remove
    the need for MATCH_OP_MASK.
    
    Next we rename 'act' to 'action', because we've settled on that
    everywhere else.
    
    Finally, SIMatchText is changed to not handle illegal values - it
    shouldn't get any. This removes one usage of the GetBuffer hack.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 5d9a5cb003a654bde26897fbafb5036029993c8e
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Oct 17 19:52:47 2012 +0200

    Commit and distribute ks_tables.h
    
    The ks_tables.h file is generated by makekeys.py from
    xkbcommon-keysyms.h, which in turn is generated initially by 'make
    update-keysyms'. The xkbcommon-keysyms.h file is commited to git and
    distributed in the tarball. Since ks_tables.h should only ever change
    when xkbcommon-keysyms.h changes, it is more sensible to update them
    together and treat them the same, instead of generating ks_tables.h
    every time for every builder with 'make', as we do now.
    
    This means we don't need python as a build dependency (only the one
    running update-keysyms, i.e. no one, needs this), and we can be
    sure exactly the same file is used by everyone. We also don't need to
    run makekeys.py on every build.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 179855116d15b9da939f8fa397cd6e4399d96b39
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Oct 16 21:09:33 2012 +0200

    utils: add and use ARRAY_SIZE macro
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 7b3bd11f92f0bed76f25eab8c79c0eca21e037bc
Author: David Herrmann <dh.herrmann@googlemail.com>
Date:   Tue Oct 16 16:05:34 2012 +0200

    Add xkb_keysym_from_name() flags argument for case-insensitive search
    
    This adds a flags argument to xkb_keysym_from_name() so we can perform a
    case-insensitive search. This should really be supported as many keysyms
    have really weird capitalization-rules.
    
    However, as this may produce conflicts, users must be warned to only use
    this for fallback paths or error-recovery. This is also the reason why the
    internal XKB parsers still use the case-sensitive search.
    
    This also adds some test-cases so the expected results are really
    produced. The binary-size does _not_ change with this patch. However,
    case-sensitive search may be slightly slower with this patch. But this is
    barely measurable.
    
    [ran: use bool instead of int for icase, add a recommendation to the
    doc, and test a couple "thorny" cases.]
    
    Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>

commit 5fff637e07d75b24f778210e7838ee9667810806
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Oct 16 16:05:33 2012 +0200

    makekeys: replace helper with python script and binary search
    
    This removes the complicated and undocumented hash-table creation-helper
    and replaces it with an autogenerated sorted array. The search uses simple
    bsearch() now.
    
    We also tried using gperf but it turned out to generate way to big
    hashtables and when reducing the size it isn't really faster than
    bsearch() anymore.
    
    There are no users complaining about the speed of keysym lookups and we
    have no benchmarks that tell that we are horribly slow. Hence, we can
    safely use the simpler approach and drop all that old code.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>

commit 3477d9e4480f4f2607d371345cc1c09bb8a35c78
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Oct 5 16:23:03 2012 +0200

    Finish first round of API documentation
    
    There are a few @todo's, but nothing serious.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit f43b33c02fe6081bc1a04087974c52c96f6fee35
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 13 13:13:55 2012 +0200

    state: make mod_index_is_consumed() return -1 on invalid input
    
    Like all the other functions.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 523e46f41aca7bdb05e07e44e2023c3c4ffce16b
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Oct 12 10:15:43 2012 +0200

    Change log env vars to XKB_LOG_LEVEL/VERBOSITY
    
    A bit more consistent and descriptive.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit bde066b9202b7e5f94266b88a7d25493d3f1216e
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Oct 11 18:13:56 2012 +0200

    doc: use JAVADOC_AUTOBRIEF
    
    Don't have to type @brief all the time.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 89523789cadf407464135068a8437897820e4299
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Oct 11 21:50:21 2012 +0200

    ast: simplify AppendStmt
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit bbf388ec1f632f648b0e1323fe90c251c0425bf7
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Oct 11 16:54:17 2012 +0200

    Make xkb_keymap_num_leds return the index range instead of active count
    
    Currently xkb_keymap_num_leds() returns a count of valid (settable)
    leds. Because the indexes might be non-consecutive, and some leds
    might not be settable, it is incorrect to use this function for
    iterating over the leds in the keymap. But this is the main use case of
    this function, so instead of the current behavior we adapt the function
    to the use case by making it return the needed range of iteration.
    The caller needs to handle invalid intermittent indexes, though.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit b6ddd105686aaa7accb63d5fe9c228cc4d7b1db0
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Oct 11 14:05:49 2012 +0200

    keymap: rename keymap->sym_interpret -> sym_interprets
    
    This can be a bit confusing.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit e43f53a6986a1870bd75a58a82bde2fc957ed3f5
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Oct 11 14:03:03 2012 +0200

    compat: add documentation for interpret's
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 90b1984cbac93a17dc3837503515c23e55a109ea
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Oct 11 12:07:43 2012 +0200

    compat: don't forget to copy XKB_MATCH_NONE interpret's
    
    Commit a8d462e3669b1790dfad75836d5ec59e390392ef accidentally removed the
    OR with XKB_MATCH_NONE. It is in fact unused though.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a86fa17aebf40041a75b0548b81b36fdd6eeb770
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Oct 10 21:01:15 2012 +0200

    build: change to AM_MAINTAINER_MODE([enable])
    
    Disabled maintainer mode is annoying, we have no reason to do it. The
    old behavior can still be had with --disable-maintainer-mode.
    See:
    http://lists.x.org/archives/xorg-devel/2012-September/033757.html
    http://www.gnu.org/savannah-checkouts/gnu/automake/manual/html_node/maintainer_002dmode.html
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 2c188833c6a5f6932ac80d1161ee0e0671c72e7e
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Oct 10 20:53:26 2012 +0200

    build: honor $NOCONFIGURE in autogen.sh
    
    Using NOCONFIGURE=1 ./autogen.sh can prevent it from running ./configure
    on its own, which is sometimes useful.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a05fbc17c58bc53f9c4bb1326d02a8e43204b87b
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Oct 10 19:14:35 2012 +0200

    stringcomp: test compilation of a dump of a keymap created from rules
    
    This would have caught the regression fixed in 2ac319c.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 9197eb0fb38ae7e1c70e085b67305c2171f50aac
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Oct 10 19:08:01 2012 +0200

    Remove the XKB_NUM_INDICATORS limit
    
    Use a darray instead of a static array of size 32.
    We still enforce XKB_MAX_LEDS because of the size of xkb_led_mask_t.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit f3732d8349556e8615cb704fa9643712e954fee6
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Oct 10 17:51:06 2012 +0200

    keymap: don't use darray for keymap->keys
    
    It's never resized.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit bdea377c9319dd8e5a385dd45d9fbd2b28ceaf36
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Oct 10 17:30:15 2012 +0200

    Rename XKB_NUM_GROUPS to XKB_MAX_GROUPS
    
    This is a more appropriate name now.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 1dbb2c4a9af50c60c842547d66564f53352f4483
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Oct 10 12:11:43 2012 +0200

    keycodes: refactor AddIndicatorName
    
    Make it shorter and fix the XXX.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 2f4db8a95b9326e4bd5dbc0facb28fbb6d4e718a
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Oct 10 09:47:31 2012 +0200

    keymap, state: don't assume led index < xkb_keymap_num_leds
    
    xkb_keymap_num_leds() returns the number of leds that have any
    possibility of being set. Even if a led is defined but can not be set in
    any way, it is not counted.
    
    In a few places currently we assume that led indexes are smaller than
    this number, which is wrong both for the above reason and for the fact
    that the xkb format actually allows explicitly setting the indicator
    index, which means that the indexes might be non-consecutive.
    
    We don't really have good API to iterate on leds, now, because
    xkb_keymap_num_leds is pretty useless. To work around that we use
    sizeof(xkb_led_mask_t) * 8.
    
    This makes the "Group 2" led work (try switching to a layout other than
    the first in test/interactive).
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 9179fed76bd46eb1edcb3edd0c9c515f5a7e2b31
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Oct 9 20:48:35 2012 +0200

    keysym: fix xkb_keysym_is_upper/lower() to work properly
    
    Our current code (taken from the xserver) doesn't handle unicode keysyms
    at all, and there seem to be some other changes compared to libX11,
    which is what xkbcomp uses. So we just copy the code that does that from
    libX11.
    It would be much better to not have to hardcode unicode tables like
    that, but it's probably better than dealing with glibc locale stuff for
    now. It also doesn't affect our binary size much.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 2ac319c54ab2072709916cced2e0eb8c8d37f859
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Oct 8 22:11:18 2012 +0200

    compat: fix bad interpret predicate mods "all" calculation
    
    Commit 9984d1d03cd78eb636c75cc2bbd2d240dc1dd72f changed the type of
    interpret->mods to xkb_mod_mask_t, but this bit of code assumes that the
    type is uint8_t.
    This code is not usually run (for example by our tests), but when it
    does keymap-dump would print out all of the modifiers (including the
    virtual ones) which causes recompilation of the output to fail
    miserably.
    
    https://bugs.freedesktop.org/show_bug.cgi?id=55769
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 9984d1d03cd78eb636c75cc2bbd2d240dc1dd72f
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 6 21:37:43 2012 +0200

    keymap: use xkb_mod_mask_t for interpret->mods and modmap
    
    These are both real modifier masks, but we keep this information only in
    the program logic now so when we change it we don't have to worry about
    the type.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit fcceeeafa8d648759412497286217206d4dbe586
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 6 21:26:01 2012 +0200

    symbols: refactor AddModMapEntry
    
    It really asks for it.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 6d74e66e3f92344ed817b88f21ac7a47863ed26b
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 6 17:53:53 2012 +0200

    Replace 0xff with MOD_REAL_MASK_ALL
    
    To make it easier to see where it's used. The name is just to match
    MOD_REAL.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a1124b5991b58601af551f43b0cf2583d343c37f
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 6 17:42:21 2012 +0200

    expr: unify the real and virtual modifier functions
    
    This again pushes the mod type annotation to the original call site, to
    make it easier to grep to see where the real/virtual distinction
    matters.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 39232e6dae3f7fcaae49ed05cb0e48117a46616e
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 6 17:21:09 2012 +0200

    Remove now-unneeded mod type annotations
    
    Most of the mod type annotations can now be changed to MOD_BOTH, because
    if you pass a mask which can only contain real mods in the first place to
    e.g. ModMaskText, then MOD_REAL and MOD_BOTH will give the same result.
    
    In the cases where MOD_BOTH is only ever the argument, we just remove
    it. What's left is where it really "matters".
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit e6e3bda3934345bce203558df57ade467e62a337
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 6 17:00:26 2012 +0200

    expr: share code for modifier functions
    
    We can make more use of the functions in text.c now and remove some
    cruft.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 9ebd2f67f45ef3d650bb96030eac26b1b32ae699
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 6 14:34:17 2012 +0200

    text: explicitly take mod_type in mod functions
    
    This essentially "tags" each invocation of the functions with the
    modifier type of the argument, which allows for easy grepping for them
    (with the aim being, to remove anything but MOD_BOTH).
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 6d580127d89c1f258b533fc7333357c62e7a3b19
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Oct 6 14:15:06 2012 +0200

    text: share code for modifiers
    
    Add static common functions which take enum mod_type, and change the
    existing ones to use them.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 424de613af4c0a8121213bbee8c4fdd8364612e5
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Oct 5 22:46:21 2012 +0200

    Keep real and virtual mods in the same table in the keymap
    
    We change the keymap->vmods array into keymap->mods, and change it's
    member type from struct xkb_vmod to struct xkb_mod. This table now
    includes the real modifiers in the first 8 places. To distinguish
    between them, we add an enum mod_type to struct xkb_mod.
    
    Besides being a more reasonable approach, this enables us to share
    some code later, remove XKB_NUM_CORE_MODS (though the 0xff mask still
    appears in a few places), and prepares us to flat out remove the
    distinction in the future. This commit just does the conversion.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 1005b320f14339236ff53a07b13d6dcbad52bf19
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Oct 5 22:07:04 2012 +0200

    Don't use shifted virtual modifier masks
    
    Modifier masks can be confusing in some places. For example,
    key->vmodmap only contains virtual modifiers, where the first is in
    position 0, the second in 1 etc., while normally in a xkb_mod_mask_t the
    virtual modifiers start from the 8th (XKB_NUM_CORE_MODS) position. This
    happens in some other places as well.
    
    Change all of the masks to be in the usual real+virtual format, and when
    we need to access e.g. keymap->vmods we just adjust by
    XKB_NUM_CORE_MODS. (This also goes for indexes, e.g.
    interpret->virtual_modifier).
    
    This makes this stuff easier to reason about.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 6974e1f9acc42a946203a48c3a57d8bbb19e3316
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Oct 5 21:40:49 2012 +0200

    expr: don't expose LookupModIndex
    
    The Lookup* functions should remain a private implementation detail of
    the expr.c file.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit aed3140e8da47d888abbc491ce7c3df7f814b039
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Oct 5 21:06:34 2012 +0200

    Remove VModInfo for now
    
    VModInfo currently is only used to track which virtual modifiers were
    declared in the file which owns the VModInfo. This, in turn, is only
    used in ResolveVirtualModifier, which in turn is only used to resolve
    the virtualModifier field in an interpret statement (compat.c). In other
    words, it is used to ensure that interprets can only use a vmod which
    was declared in the same map.
    
    We remove this now, because it doesn't do much and distracts from other
    changes; we will later re-add it properly. Specificly, we will make it
    so that virtual modifiers are not the exception in that they modify the
    keymap directly, instead of keeping the changes in some *Info struct and
    commiting them to the keymap at the end of the compilation. (This is bad
    because if a vmod is added to the keymap, and then the compilation of
    this specific file fails, the change sticks around nonetheless).
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 9a2ce2a5ad8cf9fd63462cc554b7a91da721df40
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Oct 5 20:17:54 2012 +0200

    vmod: don't allow to add a vmod with the name of a real mod
    
    Otherwise strange thing might ensue.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit b65980ccffc0902a65ab78b661098945c50cb42e
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Oct 5 15:10:41 2012 +0200

    state: don't needlessly fetch the xkb_key
    
    It's a leftover.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 1f4009d4e9fff7976d6e19288f049952ff4513c0
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Oct 4 19:44:47 2012 +0200

    vmod: remove merge argument from HandleVModDef
    
    It's unused and unneeded.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a75989b96e1cac742d0b17bca0d81f5e452d3716
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Oct 4 12:39:22 2012 +0200

    Omit struct '_Name' from non-recursive struct typedefs
    
    Just a pet peeve.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 1401b0fb5ed193dd67b5f156957b04cdde69b005
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Oct 4 12:27:06 2012 +0200

    expr: don't allow "none" in LookupModIndex
    
    LookupModMask handles this before calling LookupModIndex, and the only
    other user in symbols.c doesn't handle this return value at all.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 239a5be10e7bd248e64d4da62c192c01bd93bd60
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Oct 4 11:48:56 2012 +0200

    keysym-utf: make keysym->unicode table a bit smaller
    
    Saves a few kbytes, and unlikely to change.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit dd29b14e1138172d4ff961e65235d86654072099
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Oct 3 12:57:53 2012 +0200

    Remove the XKB_NUM_VIRTUAL_MODIFIERS limit
    
    Turn the virtual modifiers arrays in the keymap to a single darray,
    which doesn't use this limit. The number of virtual modifiers is still
    limited by the size of xkb_mod_mask_t, so we make sure not to go over
    that.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 8016c6f4f15474a04e97df444f09bf90f1219070
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Oct 3 20:21:05 2012 +0200

    state: simplify xkb_state_mod_index_is_active
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit e5b6055b34c1aa872f0843663ccc19c27c1d1bfa
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Oct 3 20:16:09 2012 +0200

    state: don't ignore type argument in xkb_state_mod_*_are_active
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 1a6b1e07881976b8972742fc9e404dc0830a79b7
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Oct 3 19:41:22 2012 +0200

    state: fix bad EFFECTIVE check in *_is_active()
    
    This is a regression introduced in ed78fbcb30888cbfc6cd00.
    XKB_STATE_EFFECTIVE is just a OR of the other states, so using & here is
    completely wrong. So test/state shows for example:
        dumping state for LCtrl down:
                group English (US) (0): effective depressed latched locked
                mod Control (2): depressed latched locked
        dumping state for LCtrl + RAlt down:
                group English (US) (0): effective depressed latched locked
                mod Control (2): depressed latched locked
                mod Mod1 (3): depressed latched locked
        dumping state for RAlt down:
                group English (US) (0): effective depressed latched locked
                mod Mod1 (3): depressed latched locked
        dumping state for Caps Lock:
                group English (US) (0): effective depressed latched locked
                mod Lock (1): depressed latched locked
                led Caps Lock (0): active
        dumping state for Alt-Shift-+
                group English (US) (0): effective depressed latched locked
                mod Shift (0): depressed latched locked
                mod Mod1 (3): depressed latched locked
    which is bogus.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit fe1faa143e6a5d1dd423a33f7bc0aaf792b8fc40
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Oct 3 20:08:13 2012 +0200

    Use our types instead of int/uint32_t in a few places
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 1c880887666f84e08ea1752bb8a5ab2a7bf1d8a0
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 30 11:55:11 2012 +0200

    Don't scan and parse useless maps
    
    One physical xkb file may (and usually does) contain multiple maps. For
    example, the us symbols file contains a map for every variant.
    Currently, when we need a map from a file (specific or default), we
    parse the entire file into a list of XkbFile's, find the map we want and
    discard the others. This happens for every include statement. This is a lot
    of unnecessary work; this commit is a first step at making it better.
    
    What we do now is make yyparse return one map at a time; if we find what
    we want, we can stop looking and avoid processing the rest of the file.
    
    This moves some logic from include.c to parser.y (i.e. finding the
    correct map, named or default). It also necessarily removes the
    CheckDefaultMap check, which warned about a file which contains multiple
    default maps. We can live without it.
    
    Some stats with test/rulecomp (under valgrind and the benchmark):
    
    Before:
    ==2280==   total heap usage: 288,665 allocs, 288,665 frees, 13,121,349 bytes allocated
    compiled 1000 keymaps in 10.849487353s
    
    After:
    ==1070==   total heap usage: 100,197 allocs, 100,197 frees, 9,329,900 bytes allocated
    compiled 1000 keymaps in 5.258960549s
    
    Pretty good.
    
    Note: we still do some unnecessary work, by parsing and discarding the
    maps before the one we want. However dealing with this is more
    complicated (maybe using bison's push-parser and sniffing the token
    stream). Probably not worth it.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 26e685daaeeaa5fc1ac4166b2c066ed6fb4db930
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 30 14:27:37 2012 +0200

    scanner: don't strdup the file name
    
    We don't modify it and there's no way to modify the original in the
    scanner_extra life time.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit ee4ab30ea2a9fd7c8455b44af68007c2908a8d68
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 28 10:15:27 2012 +0200

    scanner: share code in XkbParse{File,String}
    
    Some refactoring to prepare for changes in the parse() function.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 471ebad62311e6a36936bed7e04aa634d385d661
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 30 14:23:58 2012 +0200

    scanner: remove uselss 'last symbol' error message
    
    It never shows something useful. Besides, you already get the line
    number, which is enough.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 22684cd1dd1fd651803f27f3595e02d16b5df0e8
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 30 10:50:38 2012 +0200

    parser: remove XkbCompMapList rule
    
    This rule allows you to put several xkb_keymaps in one file.
    This doesn't make any sense: only the default/first can ever be used,
    yet the others are fully parsed as well.
    Different keymaps should just be put in different files.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 3b5ada233be2de7e068d27b827b9e1a320791fbe
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 30 10:33:59 2012 +0200

    parser: remove XkbConfig rule
    
    This rule allows you to write file maps as:
        xkb_keycodes
        <BLA> = 5;
        [...]
    instead of the usual format which is:
        xkb_keycodes {
            <BLA> = 5;
            [...]
        };
    
    This is not documented, It is also not used in xkeyboard-config, and I
    have never run into it otherwise. It also only allows one map per file.
    
    It *might* be used in some obscure place, but probably nothing we should
    care about; the simplified grammar is more useful for us now.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 693a1f57d14ed25aafaeb5f45d98a49ad365dc88
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 30 10:42:30 2012 +0200

    test/interactive: allow -k to get any absolute path
    
    Instead of looking for a keymap in test/data.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 26cc2f400a65b09b27a05349d0134201262dc437
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 30 14:17:08 2012 +0200

    Don't use %z printf format
    
    Some libc's don't support it.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit ed1203dfef1e946a834ba08655d467dd8aa15b0f
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 30 12:42:44 2012 +0200

    rules: always initialize idx variable
    
    gcc didn't catch this one.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 92e07726b29d129d2ca793c3614353d35a1a6b40
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Sep 27 20:16:12 2012 +0200

    test: add keycodes files which map directly to evdev codes
    
    This is a proof-of-concept for the long key names. The keycodes in the
    file evdev-xkbcommon are autogenerated from linux/input.h, and uses the
    names given there; all of the previous names are aliased to the new
    names, so they continue to work with the symbols files, etc.
    
    You can try it with 'sudo ./test/interactive -r evdev-xkbcommon -n 0'
    The -n 0 means that we don't offset the evdev scan codes - just feed
    them directly. The -r evdev-xkbcommon just means to use a new rules file
    which makes us use the new keycodes file. (The only problem I can see is
    with the MENU and LSGT names which has some conflicts).
    
    Maybe some day xkeyboard-config could ship something similar, so that
    the 8 offset is unneeded.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 32c19f4b449f3c23297621181882cf7143ec666e
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Sep 27 21:30:29 2012 +0200

    keymap-dump: make it look better with long key names
    
    Not worth messing around with too much, just make it legible.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 984ebf983852a66578e933521927beaa364d39ff
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Sep 27 20:44:16 2012 +0200

    test/interactive: allow to set evdev offset
    
    If we want to test a keymap without the usual 8 offset.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 41a7fed3f8a4034ee6b57601d183ced86cbac32b
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Sep 27 19:21:26 2012 +0200

    Fix type of keycode in parser and ast
    
    For some reason keycodes were listed under mapFlags in the yylval union.
    Fix it and some sanity checks.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 3b389b15bfaa33874ee6a2c308241984c8727faa
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Sep 27 18:49:13 2012 +0200

    Don't limit key names to 4 characters
    
    Currently you can't give a key in xkb_keycodes a name of more than
    XKB_KEY_NAME_LENGTH (= 4) chars. This is a pretty annoying and arbitrary
    limitation; it leads to names such as <RTSH>, <COMP>, <PRSC>, <KPAD>
    etc. which may be hard to decipher, and makes it impossible to give
    more standard names (e.g. from linux/input.h) to keycodes.
    
    The purpose of this, as far as I can tell, was to save memory and to
    allow encoding a key name directly to a 32 bit value (unsigned long it
    was).
    
    We remove this limitation by just storing the names as atoms; this lifts
    the limit, allows for easy comparison like the unsigned long thing, and
    doesn't use more memory than previous solution. It also relieves us from
    doing all of the annoying conversions to/from long.
    
    This has a large diffstat only because KeyNameText, which is used a lot,
    now needs to take the context in order to resolve the atom.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 53cfe8c36211fe3d1fb7576d2c9498f7f67ea6af
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Sep 27 09:19:12 2012 +0200

    xkbcomp/keymap: use default interpret in ApplyInterpsToKey
    
    This makes the code easier to follow and does more explicitly what the
    xkblib spec says:
         If no matching symbol interpretation is found, the server uses a
         default interpretation where:
            sym =	0
            flags =	XkbSI_AutoRepeat
            match =	XkbSI_AnyOfOrNone
            mods =	0
            virtual_mod =	XkbNoModifier
            act =	SA_NoAction
    
    If a level doesn't have any keysyms, we don't apply anything to it.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 11df063265655f2c165c80bb1e6e30f443dffd68
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Sep 27 21:11:11 2012 +0200

    state: add missing const in get_one_sym
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 5aaf65b74e4c165707d6bb967ce9627a1a808568
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Sep 27 23:27:49 2012 +1000

    Add xkb_state_key_get_one_sym
    
    The trivial wrapper around xkb_state_key_get_syms that every user to
    date has implemented.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 29a8b1ceaca1f4c3d175cb23d2fbc57a5e00ed2f
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Sep 26 10:28:52 2012 +1000

    Fix size_t vs. %d warning
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit cfa6d25cb5c321e52227cc114d054bbd7a22179a
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Sep 25 11:49:23 2012 +0200

    symbols: get rid of autoType
    
    The autoType variable is supposed to tell us whether the type was
    explicitly specified by the user or was detected automatically according
    to the keysyms. It then allows us to know whether to prints the type
    when we dump the keymap to a string or not.
    
    Right now it is not always set when we find an automatic type, according
    to some apparently legacy rules. We change it to simply this: type
    computed automatically? -> don't print.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 76478418bc869e1d607f5021961c02840a5190d4
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Sep 25 11:35:59 2012 +0200

    symbols: separate type-finding logic from CopySymbolsDef
    
    It's easier to follow this in isolation. Besides, previously the error
    reporting wasn't done very well.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 5d2659267aba6bddc8fd44306262720965007846
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Sep 24 14:57:30 2012 +0200

    keymap: remove some more unneeded macros
    
    It clearer to just access the needed data directly.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit c955f8e2f9a915e3b7bced6f9b0c2b864f31e8ef
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Sep 24 14:41:09 2012 +0200

    keymap: store a pointer to the type in xkb_group instead of index
    
    Gets rid of some more unneeded indirection, including the XkbKeyType
    macro.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 01b00d75400fefc6f63e249b89b94d3a47368c96
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Sep 24 12:11:31 2012 +0200

    keymap, symbols: improve xkb_key memory layout
    
    Add struct xkb_group and xkb_level for use in xkb_key, to mirror how
    it's done in KeyInfo, GroupInfo, LevelInfo in symbols.c. This
    corresponds more nicely to the logical data layout (i.e. a key has
    groups which have levels), and also removes a lot of copying and ugly
    code due to the index indirections and separate arrays which were used
    before.
    
    This uses more memory in some places (e.g. we alloc an action for every
    level even if the key doesn't have any) but less in other places (e.g.
    we no longer have to pad each group to ->width levels). The numbers say
    we use less overall.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit e44cd2e93b608617bb8b9bfc3aaa1b5e738e9c6a
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Sep 24 10:55:20 2012 +0200

    symbols: move keysyms into LevelInfo
    
    Instead of maintaining a syms array in the GroupInfo + sym_index's in
    the levels. This simplifies the code somewhat.
    In order not to alloc for every level instead of every group, we only do
    it if the level has more than one keysym (with a union). Since for now
    this is a special case, it actually works out better memory-wise.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit eaf9515229289b1ad1f7d8f202b2a66d735ef36a
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Sep 24 10:16:09 2012 +0200

    symbols: fix index-out-of-bounds in FindAutomaticType
    
    If we enter this branch, we have 3 <= width <= 4, so if the width is 3
    than syms[3] is out of bounds.
    
    Happily inherited from xkbcomp.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 504853de3b6821c916a50e8dbe11c7c9aca0ffab
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Sep 24 09:14:35 2012 +0200

    symbols: remove unneeded optimization
    
    The levels will be resized to the number of levels of the type anyway,
    so removing useless levels from the end here is unneeded.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit e0573c766ddb2cd422a2e4a23c96948bbbf50dcd
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Sep 24 00:50:19 2012 +0200

    keymap: use our type for keymap->enabled_ctrls
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a8b6b08afb792719f5b5a5309fbfc5960705ebe5
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Sep 24 14:36:46 2012 +1000

    Add missing declaration for _xkbcommon_parse (aka yyparse)
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 1d47cbfc4af6e18bbd0f73e0f47bed23398219b7
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 23 22:32:53 2012 +0200

    keymap.h: add note on why XKB_NUM_GROUPS is still there
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit d941bc0c03580804169de3d07e6b6e4224b3d254
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 23 22:12:43 2012 +0200

    keymap, symbols: use darray for num_groups
    
    Instead of using a static array of size XKB_NUM_GROUPS, because we want
    to get rid of this limit.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 79bbf6f758ecf74e9eae86b12832adfe6fcc0a48
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 23 21:15:34 2012 +0200

    symbols: avoid possible access-out-of-bound due to explicit_group
    
    The code that handles group name statements currently does this:
        info->group_names[grp - 1 + info->explicit_group] = name;
    Other than the fact that this addition makes no sense, it actually can
    reach out of the bounds of the array (which is of size XKB_NUM_GROUPS)
    in the (non-realistic) case where (grp - 1) is not 0 (i.e. the statement
    is not name[Group1] = "foo").
    
    We also change explicit_group to be XKB_LAYOUT_INVALID if not set
    otherwise, instead of initializing it to 0; this is clearer and if
    someone happens to write 'us:1' for some reason, it will discard the
    other groups in the file as it should.
    
    This entire explicit_group thing was clearly bolted on as an
    afterthought.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 6d97d0ce5e2d96f97038a153599cee8a46b7042f
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 23 20:38:25 2012 +0200

    symbols: rename SymbolsInfo groupNames to group_names
    
    Just to match the matching field in the keymap.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 7a90f9e2256ff502342f52ad65b7bf007fd5e047
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 23 20:36:01 2012 +0200

    keymap: don't use XKB_NUM_GROUPS for key->kt_index
    
    One unneeded XKB_NUM_GROUPS less.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 9a18b87251d1111987e98926a9aba9e72afc0259
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 23 17:52:51 2012 +0200

    Add format argument to xkb_keymap_get_as_string
    
    This function really needs a format argument, for symmetry with the
    keymap creation functions. If we add new formats, we will almost
    certainly want to add support for serializing it into a string. It would
    also allow to convert from one format to another, etc.
    
    The in the common case, the user would just want to use the format she
    used to create the keymap; for that we add a special
    XKB_KEYMAP_USE_ORIGINAL_FORMAT value, which will do that (it is defined
    to -1 outside of the enum because I have a feeling we might want to use
    0 for something else). To support this we need to keep the format inside
    the keymap. While we're at it we also initialize keymap flags properly.
    
    This changes the API, but the old xkb_map_get_as_string name works as
    expected so this is the best time to do this.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 5d31b9e3e706df2256295d5c92b74935d1e9fbcd
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 23 16:57:16 2012 +0200

    Add return value the xkb_keysym_get_name
    
    This is useful to see whether the function was successful and whether
    truncation occurred.
    It just changes void -> int so shouldn't break API or ABI.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 25b8384404e849a1dafb8fcea720905f8ee6fcb9
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 23 16:56:48 2012 +0200

    Improve API doxygen documentation
    
    To make it look better and a bit more structured and informative.
    Not all of the functions are converted to doxygen format, so this is not
    finished.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 108fa1c7931a317c40c2e6c994857f9464e3762d
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Sep 22 15:02:54 2012 +0300

    Add support for building doxygen API documentation
    
    Simple HTML docs generated from the doxygen comments.
    After running 'make' or 'make doc', try firefox doc/html/index.html to
    see it (if you have doxygen). It's also installed with 'make install'.
    You can use --enable-docs or --disable-docs, or specifically
    --with-doxygen or --without-doxygen (autodetected, default yes).
    
    The docs are currently not distributed in the tarball, because I
    couldn't make it work properly in all cases :/
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 0dd40125c555ccfc6b018eda8107fa1aa101c43e
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Sep 22 10:58:00 2012 +0300

    API: add _context prefix to log-related functions
    
    This is to follow the general scheme set by all of the other API
    functions.
    Since no one is using these functions yet, we don't (actually better
    not) add the old names to xkbcommon-compat.h.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit be3cbc993eaba8f2239e237ba43df6b4de236041
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Sep 22 10:21:22 2012 +0300

    keymap: remove XkbKeyGetKeycode
    
    Because we keep the keycode inside the xkb_key now.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 428c6f313fe1184d95248b57257a34f339bb0b6d
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Sep 22 02:05:48 2012 +0300

    symbols: convert KeyInfo->groups to darray
    
    Before it was a static array of size XKB_NUM_GROUPS.
    
    The previous cleanups made this transition a bit easier. This is a
    first step for removing the XKB_NUM_GROUPS hardcoded limit; but for now
    we still check that the groups are < XKB_NUM_GROUPS (e.g. in
    ResolveGroup and GetGroupIndex) until the keymap, etc. is worked out as
    well.
    
    This also makes us alloc quite a bit less (this is just rulescomp):
    Before:
    ==51999==   total heap usage: 291,474 allocs, 291,474 frees, 21,458,334 bytes allocated
    After:
    ==31394==   total heap usage: 293,595 allocs, 293,595 frees, 18,150,110 bytes allocated
    This is because most rmlvo's don't use the full 4 layouts that KeyInfo
    had always alloced statically before.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit f671ce07ff58c7685a6bec9ba0faf3227907681d
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Sep 22 02:36:05 2012 +0300

    symbols: fix memleak from default KeyInfo
    
    If the default KeyInfo gets any keysyms or actions, it needs to be
    free'd.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a12b5f6224cfc728f11afe2d30906fa06b771b28
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Sep 22 01:30:01 2012 +0300

    symbols: disallow changing global defaults from within a key statement
    
    Pretty much like e5fdbcbb9943e9fe, again it isn't used.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit b70abcaf36da84823c1a623b0c2866ec855b1bc8
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 21 21:39:15 2012 +0300

    symbols: fold PrepareKeyDef into CopySymbolsDef
    
    The function is big enough already but it's nicer to read sequentially.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 419a497554a7afe6ee3309e2e481d99465a134f7
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 21 21:16:20 2012 +0300

    state: missing XKB_EXPORT on xkb_state_key_get_level
    
    And some error handling.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 70a82afa737b36e40de8d55c488a5079fe22bcf1
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 21 20:09:17 2012 +0300

    configure.ac: use XORG_TESTSET_CFLAG for -fvisibility=hidden
    
    Probably shouldn't use CFLAGS for that but o well.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 18a433223e1e5b280645fff94875ed651515312e
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 21 19:57:37 2012 +0300

    configure.ac: add XORG_MEMORY_CHECK_FLAGS
    
    Adds some memory checking (e.g. MALLOC_PERTURB_) to tests.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 414007ca671ba3307995c36222bf6b0cb47b41fa
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 21 19:48:33 2012 +0300

    configure.ac: remove XORG_CHECK_MALLOC_ZERO
    
    We don't use its result.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 31c7427209d95943a255d0963607bc6d53c787da
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 21 18:39:01 2012 +0300

    configure.ac: fix bug report url
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 67b03cea0b1eca4aec4b80060d71603a055bef4c
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 21 16:30:01 2012 +0300

    state: correctly wrap state->locked_group and ->group
    
    These values weren't wrapped before, which caused group_index_is_active
    to stop working after a few group switches.
    
    Also, the current group-wrapping function didn't take into consideration
    actions such as LockGroup=-1, which need to wrap around, etc.
    xkb_layout_index_t is unsigned, but it was used to hold possibly
    negative values (e.g. locked_group is 0 and gets a -1 action).
    
    This group wrapping function should now act like the XkbAdjustGroup
    function from xserver, and at least ./test/interactive doesn't bring up
    any problems with group switching any more.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 7d1db12dbb34ee6da34aba9dafdceb6f09d2e8b6
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 21 15:39:32 2012 +0300

    state: separate group wrapping/clamping to a function
    
    We'll need this function for wrapping our global effective group as
    well.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit ed78fbcb30888cbfc6cd00fb0d56e412ed8bda6c
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 21 12:45:58 2012 +0300

    state: special case effective group in layout_is_active
    
    Currently, xkb_state_layout_{index,name}_is_active may report multiple
    groups as effective, because at looks at base,latched,locked separately.
    But there can only be one effective group, which is computed from the
    other three. So if XKB_STATE_EFFECTIVE is requested, just compare to the
    effective group we have computed.
    
    We also modify mod_{index,name}_is_active similarly, just for symmetry
    (there the effective mask is just an OR of the other three so the
    current test is correct).
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a8b932a032e1c264c7f89b7eadcb2325b09c117f
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 21 12:23:56 2012 +0300

    symbols: remove useless identical groups optimization
    
    What this code does is, in case someone compile a keymap like -layout
    'us,us,us' then only one group would be created. If there is anything
    which differentiates between any of the groups (e.g. a variant, another
    layout), then this is not done.
    This is pretty obscure, only saves a few kbytes in the final keymap, and
    if the user asked for it, why not let her?
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 95b2344849784c3bf357583f657e31e7d0d950fe
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 21 11:54:35 2012 +0300

    symbols: avoid reverse iteration in PrepareKeyDef
    
    No need for that.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit c17417320939d8b252c423a203e5fe45af3b69c4
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 21 11:14:39 2012 +0300

    Don't choke on RMLVO layout string with holes
    
    This old rules parser gives the same kccgst here, so in the interest of
    staying compatible we shouldn't fix it there. Similarly we shouldn't
    touch ParseIncludeMap, so this is the best place to handle this.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit bbaa11c6e30107932b7fdff24badfaac4d8effa0
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 21 14:58:31 2012 +0300

    Rename map.{c,h} to keymap.{c,h}
    
    Seeing as we don't like "map" anymore.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 7dca986e3f11dea64d7859c1f7c2d87bdd70d6be
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 21 14:55:46 2012 +0300

    state, map: check XkbKey != NULL where missing
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit debd62b59b99e421f953c4b9433ce6d0633d9b34
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 21 13:30:42 2012 +0300

    Move xkb_state functions from map.c to state.c
    
    Seems more appropriate.
    Only change is to turn some xkb_state_get_map functions to direct
    state->keymap.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit d206ecd9e3e6e52a84d97192d815fb42ee9e7d05
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 21 14:00:00 2012 +0300

    Rename private xkb_map_new to xkb_keymap_new
    
    To be consistent with the API rename.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit fcd202909bd558074885c8a35400e180646e115b
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 21 14:44:17 2012 +0300

    Don't use xkbcommon-compat names in internal code
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit bf19408078824f96d2c265ad15e4ff12505166cc
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Sep 19 16:19:57 2012 +1000

    Promote keymap enumeration API to public
    
    Rename the functions to get keysyms by key/layout/level to fit with the
    recent public API renames, and expose them.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 33a66515d6bd28b4c2f31ecfc1c51f8b45b034e8
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Sep 12 19:55:06 2012 +0100

    API change: Rename xkb_map_* and group -> layout
    
    Move xkb_map_* functions to xkb_keymap_*, xkb_key_* functions under
    either xkb_keymap or xkb_state, and rename groups to layout in all
    user-visible API.
    
    Backwards-compatible hooks are provided, such that old source will
    build, but silently mangled to the new names, and old binaries will
    also continue to work.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 005dee2bb6d0c7c6927eda1a1173ccd9b68b8754
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Sep 20 23:28:27 2012 +1000

    Add _xkbcommon_ prefix to parser and lexer symbols
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 80e156814d1dde2cff7a37b1c5c1c2e0e527d455
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Sep 12 19:52:30 2012 +0100

    Add xkbcommon-compat.h and compat.c
    
    So we can start renaming stuff while retaining backwards source and
    binary compatibility.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 2c96828f753444ab5b24b95a84d383dbc573d7ff
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Sep 19 16:44:15 2012 +0300

    test: add print-compiled-keymap tool
    
    This just prints the compiled keymap string for to the given command
    line arguments. This often useful when developing.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 6b66afc4e7682da72206c23d724c16326220230c
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Sep 19 15:56:07 2012 +0300

    state: handle ACTION_LOCK_NO_{UN,}LOCK for mods
    
    xkblib spec says:
        XkbSA_LockNoLock    If set, and the action type is XkbSA_LockMods,
                            the server only unlocks the action modifiers.
        XkbSA_LockNoUnlock  If set, and the action is XkbSA_LockMods,
                            the server only locks the action modifiers.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 9c2a5c6c61edfedc873cfe7a159f8d01377a13a0
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Sep 19 15:23:35 2012 +0300

    xkbcomp/keymap: correct ACTION_MODS_LOOKUP_MODS handling
    
    The xkblib spec says:
        If XkbSA_UseModMapMods is not set in the flags field, the mask,
        real_mods, vmods1, and vmods2 fields are used to determine the
        action modifiers. Otherwise they are ignored and the modifiers
        bound to the key (client map->modmap[keycode]) are used instead.
    
    So we should just assign the modmap without considering what's there.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 9aee332e9fd470580611d789d8265f983b199fde
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Sep 18 17:31:55 2012 +0300

    Fix a couple of mistakes from previous commits
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit de4098a02486beb2408f6b8d3c94316de0dbbffc
Author: Rob Bradford <rob@linux.intel.com>
Date:   Fri Sep 14 17:50:31 2012 +0100

    keysym-utf8: Optimise the keysym to utf8 lookup
    
    This change adds range checks based on the lowest keysym and highest keysym in
    the table. This allows a quick check to be applied to identify if the keysym
    is inside the table.
    
    To really give value to this optimisation the table is split to have a
    separate table for the keypad keysyms.
    
    The test suite passes with this change.
    
    Signed-off-by: Rob Bradford <rob@linux.intel.com>

commit ac872bdfc286e9464a04b77c724829dd206e11a7
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Sep 17 14:24:38 2012 +0300

    symbols: fix buffer overflow with illegal explicit group
    
    Trying ''./test/interactive -l us:5' causes us to crash.
    
    The <layout>:<N> syntax says to put this layout at the N'th level.
    However the code (inherited from xkbcomp) doesn't check that the group
    is valid, and then happily indexes keyi->groups with it, which has a
    static size of XKB_NUM_GROUPS (the SetExplicitGroup function assumes the
    index is valid). So any value a user might put there > 4 makes nice
    things happen.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit dbd7a95359652032466cadad8d8749c9ed1bfbfa
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 16 15:57:36 2012 +0300

    keyseq: add test for repeat-shift-repeat-unshift-repeat
    
    e.g. hhhhhHHHHHHHhhhhhh with shift down and up in the middle.
    Unfortunately trying a quick test with test/interactive is not possible
    because the evdev soft-repeat stops the repeat when another key is
    pressed. So you need real soft-repeat for that.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit b21107056e0540489669bb35fcb3abe1b5b46ecd
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 16 14:45:32 2012 +0300

    Organize src/ and test/ headers
    
    - Add context.h and move context-related functions from xkb-priv.h to
      it.
    - Move xkb_context definition back to context.c.
    - Add keysym.h and move keysym upper/lower/keypad from xkb-priv.h to it.
    - Rename xkb-priv.h to map.h since it only contains keymap-related
      definitions and declarations now.
    - Remove unnecessary includes and some and some other small cleanups.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit e670d084a6b4431de2ef3b5395c1473ba4b73725
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 16 13:33:09 2012 +0300

    include: improve file-not-found error reporting
    
    Only report it once, and not only for rules.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 09a4f2ca89a0ee1e30782fc86312c9806cd86386
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Sep 15 13:39:14 2012 +0300

    keycodes: add KeyNameInfo
    
    Instead of keeping the two files and names arrays.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit b979a5e95eab641835447a90f845e0c124559fe7
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Sep 15 02:24:17 2012 +0300

    keycodes: rename computedMin/Max to min/max_key_code
    
    min/max_key_code is more descriptive and matches the names of these
    field in xkb_keymap.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 4b69d6f71db973ae402d68fdd80c7b92663b352e
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Sep 15 02:09:34 2012 +0300

    keycodes: ignore explicit minimum/maximum statements
    
    These statements are pretty pointless for us; we don't restrict keycodes
    like X does, and if someone writes e.g. maximum = 255 but only has 100
    keys, we currently happily alloc all those empty keys. xkbcomp already
    handles the case when these statements aren't given, and uses a computed
    min/max instead. We should just always use that.
    (Of course since keycodes/evdev currently uses almost all of the
    keycodes in the range it declares, including 255, this doesn't save any
    memory for the common user right now).
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit c53122cb96d529168eff3934eeb6333636d019f6
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 14 21:53:27 2012 +0300

    symbols: remove useless grow_alloc of keys array
    
    This just does a big, mostly too big, allocation to save about a dozen
    malloc calls. Remove it.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 9a27ac725399ca0746dd640b2d97a7b18cac97e9
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 14 16:10:47 2012 +0300

    state: use filter->priv instead of modifying the action
    
    in xkb_filter_group_set_new.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 8098daa08f2621b90fb295c4bd8b95a7cbbf54d2
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 14 16:01:11 2012 +0300

    state: move filter initialization to the dispatcher
    
    This removes all of the boilerplate from the *_new functions, and leaves
    them just as simple functions which perform the effect of the action on state.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 2c19c9388beafe836beb5223e5d7429f7a2381ab
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 14 15:33:54 2012 +0300

    state: call xkb_filter_new from the dispatcher
    
    Pass the new filter as a parameter instead of getting a new one in each
    action function, and introducing a failure condition there.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 04f1b3be07ff838f419c1397eff0716d33d9a695
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 14 15:29:12 2012 +0300

    state: dispatch actions from a table
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 18a0ead58758208fd0ba7448c660bd53e07a01e7
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 14 15:17:20 2012 +0300

    Rename ACTION_TYPE_LAST to _ACTION_TYPE_NUM_ENTRIES
    
    It's not really "last" per-se, and we use this other format in some
    other enums.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 16425ffad9ccdee73c6f7c1d147821760629b15d
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 14 11:26:36 2012 +0300

    state: don't keep the xkb_state in the filters
    
    Just pass it as a parameter: to make state.c a bit less stateful.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit c2570d51d1061146c6165b757af5125bb96b59d8
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 14 11:17:30 2012 +0300

    state, map: constify references to xkb_key
    
    Makes it clear that we treat the keys as immutible values in these
    files.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 841f32230af7024dc6a8e254a9dc3304301022c9
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 14 11:02:12 2012 +0300

    state, map: use keycodes only for the API functions
    
    The policy is now consistent: every API functions which recieves a
    keycode should resolve it to an xkb_key first thing, and all the
    internal functions use that instead of the keycode.
    To facilitate it a bit, we move the KeycodeInRange check to XkbKey
    itself, which returns NULL if the keycode is illegal.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 4d3d2ef004222c4255ae94ed9d58693ccc9dc396
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 14 01:09:37 2012 +0300

    rules: fix mmap failure handling
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 96c21e1577fa6462efc4d98a6f72a16ba521f6a3
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Sep 14 00:21:54 2012 +0300

    Clean up Init/Clear functions
    
    - The Clear* functions should just free the memory associated with the
      object. If the object is used again, it is Init'd again.
    - s/Free/Clear if the actual pointer is not free'd.
    - Zeroise object in Init and only initialize non-zero fields.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 7b5a1dd556f2f4d21f7a3265e614cae3a91e36bb
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Sep 13 21:06:36 2012 +0300

    symbols: refactor CoypSymbolsDef
    
    To make it easier to follow.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 4c16b39f31134f41cc19538dd8a020ef7eeee063
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Sep 13 21:06:10 2012 +0300

    symbols: FindAutomaticType only needs the context
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 8862fd80823c9c418b5adb5c7c183446094368d9
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Sep 13 11:49:02 2012 +0300

    keyseq: test that de(neo) is working properly
    
    This layout stretches us pretty well, so it's good for testing nothing
    breaks. There are a couple of things that need looking into, though
    (particularly the level5 issue).
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit dd6124ca0782745189d9bece3b0eae27d5e2bcba
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Sep 13 20:59:27 2012 +0300

    symbols: store actions from symbols in the right offset
    
    This regression was introduced in 93ce9c7d4f7. This meant that actions
    specified inside key {} statments were always going to the first group.
    But actions are almost never specified in xkb_symbols so this wasn't
    noticed.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 898d6fd416b9b9e10e555f5e599300d4c06e42ea
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Sep 13 01:33:49 2012 +0300

    symbols: remove CopyKeyInfo
    
    The code is better without it.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 3abfe83e113e8abe28b044026cbd1fb34e9a4818
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Sep 12 23:51:19 2012 +0300

    symbols: fix real/alias key merge ordering bug
    
    Background:
    
    The CopySymbolsDef has a comment on a couple of lines which supposedly
    fixed a bug:
    
        /*
         * kt_index[i] may have been set by a previous run (if we have two
         * layouts specified). Let's not overwrite it with the ONE_LEVEL
         * default group if we dont even have keys for this group anyway.
         *
         * FIXME: There should be a better fix for this.
         */
        if (!darray_empty(groupi->levels))
            key->kt_index[i] = types[i];
    
    But neither the comment nor the fix make any sense, because the kt_index
    is indexed per group, i.e. each group gets its own type.
    The original xkbcomp commit which added this (36fecff58) points to this
    bug: https://bugzilla.redhat.com/show_bug.cgi?id=436626
    which complains about -layout "ru,us" -variant "phonetic," not working
    properly. And indeed when we try:
        sudo ./test/interactive -l ru,us -v
    the first group doesn't get any syms for the main keys.
    
    The problem (Clearly the fix above is useless):
    
    The ru(phonetic) map is specified using aliases, e.g. LatQ, LatW instead
    of AD01, AD02, etc. When combined with another layout which uses the
    real names (AD01, AD02), the symbols code should recognize they are the
    same key and merge them into one KeyInfo. The current code does that,
    but it doesn't catch the case where the alias was processes *before* the
    real one; so we get two KeyInfo's and the later one wins. So e.g. the
    ru(phonetic) symbols are ignored.
    
    The fix:
    
    Before adding a new KeyInfo to the keys array, always replace its name
    by the real name, which avoids the entire issue. Luckily this is done
    pretty late so most error messages should still show the alias name.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 1d6bffc9049525aad4f06d1dc6f6f4896f3ec321
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Sep 12 23:29:49 2012 +0300

    symbols: add CopySymbolsToKeymap
    
    Like in the other sections.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 376e45eb6d2d93599980e52248531a8f2e83470f
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Sep 12 21:32:25 2012 +0300

    symbols: remove mention of keycodes in CopySymbolsDef
    
    Since now we only use the keycode in this function for logging, it's
    better not to mention the keycode at all because the XkbKeyGetKeycode
    macro is implemented using a dirty hack 0_0
    The key name is sufficient to determine uniquely where to look.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 77ab928e92fea6906d1b273ef3b2f2c2b336aff9
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Sep 12 21:24:28 2012 +0300

    symbols: remove unneeded recursion form CopySymbolsDef
    
    This function does some funky stuff, which, as far as I can tell, was
    needed to support the functionality of giving different keycodes the
    same name and thus make them duplicates (MERGE_ALT_FORM). This stuff was
    removed as useless in 0765064b3, but this leftover wasn't noticed.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit ce5dbeff60f5efefc64fe506a1a98c901f7d49ec
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Sep 11 14:47:01 2012 +0300

    symbols: add LevelInfo
    
    Add a LevelInfo to hold a single array of level specific info inside
    a GroupInfo, instead of keeping the acts, symsMapIndex and
    symsMapNumEntries arrays and the numLevels field separate and in sync.
    This simplifies the code, and goes a long way toward making  the
    key-merging code somewhat understandable. Also uses less memory.
    
    Note that the syms array is still in GroupInfo for now, with the levels
    holding offsets into it.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit ca87031861651fc4042b6a12cd5bc6f88447b189
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Sep 11 16:14:16 2012 +0300

    symbols: make xkb_key::syms a plain array
    
    It's never resized.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit ee3ade39247a4f558df7f09f727401b6ec984e55
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Sep 10 22:02:18 2012 +0300

    symbols: shorten symsMapNumEntries to uint from size_t
    
    size_t is too wide for this in 64-bit machines.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 3cfcbbab38421f3de70e9168ef853a5131cee32e
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Sep 11 09:43:08 2012 +0300

    symbols: consolidate group merging in MergeGroups
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit db45d664d37eb39cf0334a833d7afbadc6927a37
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Sep 10 13:34:36 2012 +0300

    symbols: add GroupInfo
    
    GroupInfo keeps all of the info for a specific group in one struct.
    This is the old array-of-structures vs. structure-of-arrays, but in this
    case readability wins. It would also help with lifting the
    XkbNumKbdGroups limit, because we only have to worry about one array
    (instead of 6).
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a9fa37396f3dc581ca7a75f0950d298820993c3e
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Sep 12 16:39:54 2012 +0300

    keymap-dump: don't write spaces between multiple-syms-per-level
    
    This can get a bit unwieldy.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 2a5b0c9dc1ad1488ecc6b139fd70e464eb687da6
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Sep 10 23:18:58 2012 +0300

    symbols: use darray for ModMapEntry instead of list
    
    There's no need for a list here.
    [This also happens to be the last place list.h is used.]
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 886b0ca50299fdbcc0a557cf9b5e3c812e0b4bb9
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Sep 10 23:24:19 2012 +0300

    state: remove unused next field from xkb_filter
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 2de55601d865b9cae1bf74f4c4c75a927b838ad6
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Sep 12 16:58:57 2012 +0100

    Update COPYING
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit b4b40d73ad3a8e5199da8cd8eeac83780fa8b981
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Sep 12 16:54:07 2012 +0100

    Copyright updates
    
    With Dan Nicholson's permission (via email), update his copyright and
    license statements to the standard X.Org boilerplate MIT license, as
    both myself and Ran have been using.
    
    Clean up my copyright declarations (in some cases to correct ownership),
    and add copyright/license statements from myself and/or Ran where
    appropriate.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 14cd8c79cd88e08c3a542c2d3ed596e25635a421
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Sep 11 17:00:38 2012 +0100

    utils: Replace DEC copyright with Ran's
    
    This is not something I do often, but I have good reason here ...
    
    utils.h has been totally rewritten since import, and now contains no
    original DEC content.  Everything in here has been added by Ran, and I
    do not believe that any lingering content from previous iterations is
    substantial enough as to be copyrightable.
    
    Replace DEC's copyright (and license with hostile advertising clause)
    with Ran's boilerplate copyright and license statement.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 095a7f4cf07e78016a5ba56a6f8e2d427ecc245a
Author: David Herrmann <dh.herrmann@googlemail.com>
Date:   Tue Sep 11 16:49:04 2012 +0100

    xkbcommon-keysyms: Add header protection
    
    As there is currently no stable release of xkbcommon, other projects might
    want to include a copy of the keysyms so they can be used even though
    libxkbcommon may not be available on the machine. However, if xkbcommon.h
    is still included, conflicts will occur. Hence, to avoid nasty hacks,
    simply include a header protection in xkbcommon upstream.
    
    [daniels: Added protection to Makefile.am's update-keysyms, as well as
              XKB_KEY_NoSymbol, and a comment noting that it shouldn't be
              updated directly.]
    
    Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit e9405fa20d0a88319f607d44cf7151423239ed21
Author: Helio Chissini de Castro <helio.chissini.de.castro@collabora.co.uk>
Date:   Tue Sep 11 15:11:35 2012 +0100

    Android.mk: Remove unnecessary for loop
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 82de180ede927f132440d0bb64d97851a69bccc5
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Sep 11 15:09:37 2012 +0100

    Remove unused ExprResolveKeyName
    
    The only user was removed in 314965b1.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 14741800a8a424e8f4da933cf7368e26fc7f0cbd
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Sep 11 14:52:27 2012 +0100

    Constify keysym <-> Unicode lookup table
    
    Before:
      text     data     bss     dec     hex filename
    234422    11288    2304  248014   3c8ce obj-amd64/.libs/libxkbcommon.so.0.0.0
    
    After:
      text     data     bss     dec     hex filename
    240694     5016    2304  248014   3c8ce obj-amd64/.libs/libxkbcommon.so.0.0.0
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 517c7ed75c33f7b7312d298fb50805fa7ca99124
Author: Pekka Paalanen <ppaalanen@gmail.com>
Date:   Mon Aug 20 15:34:07 2012 +0300

    xkbcommon.h build fix for missing stdarg.h
    
    In file included from external/collabora/libxkbcommon/src/xkb-priv.h:87,
                     from external/collabora/libxkbcommon/src/xkbcomp/xkbcomp.h:30,
                     from external/collabora/libxkbcommon/src/xkbcomp/xkbcomp-priv.h:30,
                     from external/collabora/libxkbcommon/src/xkbcomp/action.h:30,
                     from external/collabora/libxkbcommon/src/xkbcomp/action.c:27:
    external/collabora/libxkbcommon/xkbcommon/xkbcommon.h:279: error: expected declaration specifiers or '...' before 'va_list'
    
    Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>

commit 9e6ff7bb2ad2757e6cfef16fbb144f36e3ee7a0c
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Sep 11 14:27:54 2012 +0100

    Update Android.mk
    
    Squashed from commits by Helio Chissini de Castro
    <helio.chissini.de.castro@collabora.co.uk> and Pekka Paalanen
    <ppaalanen@gmail.com>.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 28bd10cee70125e8ceea600b01bbf05746363d23
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Sep 11 14:10:41 2012 +0100

    kbproto unentanglement: drop dependency
    
    \o\ \o/ /o/
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit fa1ea9a5bfb8134aee947477325c17904ed7501c
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Sep 11 14:09:20 2012 +0100

    kbproto unentanglement: XkbGeomPtsPerMM
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit e60e9523c62d7b9463b5aff691fa18f9a8b7a6ca
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Sep 11 12:35:24 2012 +0100

    kbproto unentanglement: XkbExplicit*Mask
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 2eab7efc13c5d089c9761f7a807970cfb7ad3779
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Sep 11 12:32:18 2012 +0100

    kbproto unentanglement: XkbSI_AutoRepeat
    
    That was the only interp flag, so just turn it into a straight boolean.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit a8d462e3669b1790dfad75836d5ec59e390392ef
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Sep 11 12:28:29 2012 +0100

    kbproto unentanglement: XkbSI match flags
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit ed9fd5beb001c30c7292e9a31d7ebccd4e91a973
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Sep 11 12:20:21 2012 +0100

    kbproto unentanglement: control actions
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 6573aca0b26b50009f00ccf7673406ee1aa3943c
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Sep 10 21:05:04 2012 +0100

    kbproto unentanglement: XkbMaxShiftLevel
    
    ... by removing its only use.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 32bf4053766250d280191ec57e79c863bfb1dca7
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Sep 10 20:44:52 2012 +0100

    kbproto unentanglement: Xkb{Wrap,Clamp,Redirect}IntoRange
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 461f8a7697695e2455a7da929a5966f7a98dcedc
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Sep 10 20:40:05 2012 +0100

    actions: Remove PointerDefault affect field
    
    This was always set to affect the default button, so no need for it.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 70c775f69d2a5ac529468a7d296523ecc171f547
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Sep 10 20:38:46 2012 +0100

    kbproto unentanglement: action flags
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit b6e0457195694b541e975c74597d4b2b24203c6d
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Sep 10 20:16:05 2012 +0100

    kbproto unentanglement: XkbLC_*
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 830fe67132e9b3ca30fb36e84301b329fea9c653
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Sep 10 20:07:54 2012 +0100

    kbproto unentanglement: XkbIM_*
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 0b2506db12b6d12cec0c516d7eb9698aaa5960fa
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Sep 10 19:23:16 2012 +0100

    kbproto unentanglement: action types
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 314965b1f093fc8cd551e3e64fe1ed699205f2e3
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Aug 21 14:40:51 2012 +0100

    Remove deprecated actions
    
    We didn't do anything with ISO_Lock, ActionMessage, RedirectKey, and the
    device-specifying variants of the pointer actions, so remove those.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit b04d896ab25cca055e5bcc3d2e58d9c9fb6ef3c4
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Aug 21 12:48:20 2012 +0100

    kbproto unentanglement: XkbNumVirtualMods
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 74ec4c1c3fa9d7ff739013728d42ff06d72697c7
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Aug 21 12:47:28 2012 +0100

    kbproto unentanglement: XkbNumIndicators
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 4b8ceae91f749aeb8e99e07444399f14c13c74dc
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Aug 21 12:45:03 2012 +0100

    kbproto untanglement: XkbKbdNumGroups
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit f5dffd2b6e6a6e3875908961bfd8cd6652c49929
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Aug 21 11:21:19 2012 +0100

    kbproto untanglement: XkbKeyNameLength
    
    Define it ourselves as XKB_KEY_NAME_LENGTH and use that, instead of the
    one from XKB.h.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 3b6b214c78c2c4fcecae1023ae92dfd29b160c42
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Aug 28 18:04:25 2012 +0300

    rules: use goto instead of state variable
    
    There's no noticeable speed difference, but I think it's nicer and more
    explicit than the previous code. Some people just don't like goto,
    though..
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 0071227e7f09b53bfb8af5607cadca60b2f64568
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Aug 26 08:54:31 2012 +0300

    rules: rewrite
    
    Rewrite the rules file parser for clarity, performance and memory usage
    reduction. The previous implementation was quite hard to navigate and
    did a lot of unnecessary work and copying.
    This implementation keeps along just the state necessary, and doesn't
    perform any copying of the file's content (although the entire file is
    mmap'ed as before). Hopefully it's also easier to understand, has better
    documentation, and better error checking and reporting. We try to
    reproduce the previous behavior in every case.
    
    Note: the diff is pretty confusing; it's likely better to look at the
    file directly.
    
    Benchmarks:
        On an old 32-bit Intel processor.
        gcc -O2 -pg
        ./test/rulescomp bench
        grof test/rulescomp
    
        Before:
            compiled 1000 keymaps in 14.863564304s
            %   cumulative   self              self     total
            time   seconds   seconds    calls  ms/call  ms/call  name
            49.33      4.43     4.43 30610000     0.00     0.00  yylex
            17.93      6.04     1.61    31000     0.05     0.22  yyparse
            6.57      6.63     0.59     1000     0.59     0.59  load_rules
            3.23      6.92     0.29  3637000     0.00     0.00  AppendStmt
            2.45      7.14     0.22   472000     0.00     0.00  AddKeySymbols
            2.12      7.33     0.19  3591000     0.00     0.00  atom_intern
            2.12      7.52     0.19   518000     0.00     0.00  FindNamedKey
            2.00      7.70     0.18   230000     0.00     0.00  FreeStmt
            1.78      7.86     0.16     1000     0.16     0.17  UpdateModifiersFromCompat
            1.34      7.98     0.12   732000     0.00     0.00  AddKeyName
            1.34      8.10     0.12                             __x86.get_pc_thunk.bx
    
        After:
            compiled 1000 keymaps in 13.874666269s
            %   cumulative   self              self     total
            time   seconds   seconds    calls  ms/call  ms/call  name
            49.82      4.26     4.26 30610000     0.00     0.00  yylex
            22.22      6.16     1.90    31000     0.06     0.22  yyparse
            2.92      6.41     0.25  3591000     0.00     0.00  atom_intern
            2.57      6.63     0.22     1000     0.22     0.25  xkb_components_from_rules
            2.11      6.81     0.18  3637000     0.00     0.00  AppendStmt
            2.11      6.99     0.18   230000     0.00     0.00  FreeStmt
            1.99      7.16     0.17   518000     0.00     0.00  FindNamedKey
            1.99      7.33     0.17     1000     0.17     0.17  UpdateModifiersFromCompat
            1.99      7.50     0.17                             __x86.get_pc_thunk.bx
            1.52      7.63     0.13   150000     0.00     0.00  AddInterp
            1.40      7.75     0.12   472000     0.00     0.00  AddKeySymbols
    
        On a newer 64-bit Intel processor.
        gcc -O2
        ./test/rules-file bench
    
        Before:
            processed 20000 times in 15.940546625s
    
        After:
            processed 20000 times in 5.295026345s
    
    Allocations:
        gcc -O2
        valgrind test/rulescomp
    
        Before:
        total heap usage: 257,519 allocs, 257,519 frees, 14,766,529 bytes allocated
    
        After:
        total heap usage: 240,756 allocs, 240,756 frees, 14,007,886 bytes allocated
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 54d1d5ed5a153b1735db7baaa817b9e9b8e988bb
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Sep 4 17:40:09 2012 +0300

    compat: make LEDInfo a wrapper around xkb_indicator_map
    
    instead of duplicating the fields. The same is done in SymInterpInfo
    which wraps xkb_sym_interpret.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 5f613988c80c22b84c270b61942195bfb9a77bf7
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Sep 4 17:20:46 2012 +0300

    Fold keymap->indicator_names into keymap->indicators
    
    This makes sense, since giving a name to an indicator 'activates' the
    indicator_map in that index.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit af2a8b3a3745078aba3534fb554eea125817f827
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 2 21:45:42 2012 +0300

    Unify some string tables from xkbcomp, text and keymap-dump
    
    We move the LookupEntry struct from expr.h to text.h, along with most of
    the lookup tables. This makes them available everywhere.
    Looking up a value in the LookupEntry format is slower than direct index
    mapping, but it allows multiple names per value (with the canonical one
    being first) and "all"- and "none"-type masks. These functions are not
    used anywhere efficiency matters.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 7ae0c6bac4759e9b56c4a5115c321b66012ce9dc
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Aug 31 19:26:51 2012 +0300

    Convert rest of names in xkb_keymap back to atoms
    
    These were kept as atoms, but since the keymap was exposed in the API,
    we converted them to strings; no the keymap is no longer exposed, so we
    can go back to atoms. They make the keymap smaller (at least on 64-bit
    machines) and the comparisons faster.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 1a9968839eb6e1778616c33079fbee647a7ad087
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Aug 31 19:05:49 2012 +0300

    expr: make ResolveString return an atom
    
    Almost all callers do xkb_atom_intern on the currently returned string,
    while ResolveString converts the atom to the string to begin with...
    uselss double work.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 7aa31097bf1386238efdf200a9328580850590af
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Aug 31 18:52:26 2012 +0300

    atom: add xkb_atom_lookup
    
    This will only lookup the string and return the atom if found; it will
    not intern it if not. This is useful when e.g. getting a string from the
    user (which may be arbitrary) and comparing against atoms.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 651e1dab04cc4ecb67b9e7c83d634fd34c0723b6
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Aug 31 18:47:28 2012 +0300

    atom: separate lookup logic from atom_intern
    
    This would allow us to add a non-interning xkb_atom_lookup function.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit f205d0f9b6672f983a6f610cd8d19163980d8dc4
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Aug 31 18:22:03 2012 +0300

    atom: make type and name of the 'a' field clearer
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 1aa6e2b1e20542683ae224a7824e62e0fba623c7
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Aug 28 19:07:07 2012 +0300

    test/rules-file: add benchmark
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 480f919d770d2c847c4fc2dd94ab6cf85f50c09a
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Aug 29 11:54:05 2012 +0300

    test: add rmlvo-to-kccgst tool
    
    For a quick look at what components result from the rules.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 7f04ffc4d331868c66bf8abee5fc27fe61bad079
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Aug 29 12:10:28 2012 +0300

    rules: fix check for appending '|' character when applying
    
    There are two ways to separate multiple files in XKB include statements:
    '+' will cause the later file to override the first in case of conflict,
    while '|' will cause it augment it (this is done by xkbcomp). '!' is
    unrelated here.
    Since '|' is practically never used, this wasn't noticed.
    
    In the modified test, the '|some_compat' previously was just ignored.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 41472822b68bd71b2b1ac5c2cf57f28b727ef744
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Aug 29 15:17:00 2012 +0300

    Use XKB_MOD_INVALID instead of XkbNoModifier
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 300f3fb1e051e4705a3d7787d508c10af98e4bb4
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Aug 29 10:12:56 2012 +0300

    Don't printf NULL strings
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit bce90d5b2cd2fd840f8019d6ad0f30c352756ca6
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Aug 29 10:06:47 2012 +0300

    xkbcomp: add debug messages of the RMLVO and KcCGST
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 8e6fce9b221e1492c264018ac6e64f5aa470ab16
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Aug 29 00:44:58 2012 +0300

    include: document ParseIncludeMap better
    
    The format of the include statment is not explained anywhere, the code
    is confusing and the comments misleading. Try to explain it better.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 2a026f6f72cea00c9bf5caf4105bcce034b3651b
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Aug 28 15:55:35 2012 +0300

    test/data/symbols: keypad can only have one default section
    
    Avoids a warning, from xkeyboard-config:
    
    commit 6676053f2c93596c2aaa9905151a5c76355a1540
    Author: Peter Hutterer <peter.hutterer@who-t.net>
    Date:   Fri Jun 29 09:53:45 2012 +1000
    
        symbols: keypad can only have one default section
    
        Warning:          Multiple default components in keypad
                          Using x11, ignoring pointerkeys
    
        Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 799cc064d37128b84708ebe0ee92c32173facc91
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Aug 28 15:05:01 2012 +0300

    include: properly use the default map if none is found
    
    For some reason this piece of code wasn't copied from xkbcomp, which
    causes all of the warnings like these:
    Warning:       No map in include statement, but "pc" contains several; Using first defined map, "pc105"
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit f3c4032f35eceeeb2285559b9e87889ec36351d1
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Aug 30 20:23:35 2012 +0300

    Set log level for tests through env, not directly
    
    This way the test logs have all the information, but we don't get eye
    bleed every time we run them manually. One can always use
    TESTS_ENVIRONMENT (we correctly use AM_TESTS_ENVIRONMENT now), or set
    the envvars from the shell.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 8d7d9792d1e97abf09d6b93605884590e02f346e
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Aug 28 00:42:59 2012 +0300

    log: replace "priority" by "level" everywhere
    
    Now that we don't use syslog, "level" does sound more commonplace. We
    should change it while there is still nobody using it.
    Also leave some space between the integers of the xkb_log_level enum
    values, if we ever need to shove more in between.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 95d4fb9e4bc815d39a974deaee5373254e134f93
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Sep 3 10:28:58 2012 +0300

    action: fix LookupEntry for "lockdevbtn"
    
    xkbcomp has that bug as well, guess no one uses it.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 7e0c49e0847e97fcb42045852aca0eb5d3fcfaa7
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 2 16:33:02 2012 +0300

    action: remove redundant check
    
    The NoAction handler always errors out with the same message.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 87bfd973331491f7ab54626b61eb3a1ff46f8dcd
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 2 11:29:31 2012 +0300

    action: keep array of default actions, instead of list of changes
    
    The implementation of changing the default properties of actions, e.g. a
    statements such as (from test/data/compat/basic):
        setMods.clearLocks= True;
        latchMods.clearLocks= True;
        latchMods.latchToLock= True;
    works by keeping a list of ActionInfo's, each containing the neccesary
    info from each statement, and then when some action comes up (e.g. in an
    interpret statment) it goes through the list, and applies the relevent
    ActionInfo's to the newly-constructed xkb_action.
    
    Instead of doing this, we add a struct ActionsInfo, which contains an
    array of xkb_actions, one for each type. When a default changing
    statement appears, we change the action in the array; when a new action
    comes up, we just copy from the array. This is simpler to figure out,
    and pretty straightforward.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 4ca85c7b3b46fb8d54d884a13c29cc78967f2313
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 2 16:16:57 2012 +0300

    action: disallow setting an action_field default for all types
    
    Currently where it is possible to write:
        setMods.clearLocks = True;
    It's also possible to write:
        action.clearLocks = True;
    This will set the default value for the clearLocks action field for
    *all* action types, as opposed to just setMods in this case. If
    subsequently an action is used for which this field does not make sense,
    it will error out.
    This doesn't make any sense, because any given field is only possible by at
    most 3 or 4 action types... which you might as well write explicitly and
    avoid the side effect mentioned above.
    Needless to say this is one of xkbcomp's "hidden features" and is not
    used anywhere; remove it.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit ba9f66bda37cbd1ed8826f401bf06b51ae83b050
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 2 10:35:08 2012 +0300

    action: clean up formatting of extern functions
    
    Make it a bit easier to understand what they do.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 1736e7daad18a438ce3c47b56d5d985636296276
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Aug 31 12:12:13 2012 +0300

    types: don't strdup a default name
    
    None of the other files does that.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 149e1b2f0d1b30d3d593b473e2731441aa9c56bc
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Aug 31 12:06:50 2012 +0300

    types: use darray for KeyTypesInfo instead of list
    
    Simpler, uses less memory and more efficient.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 8654d36e7ae3144e16addda53d6aa57c9fdd7f1b
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Aug 27 23:00:07 2012 +0300

    types: remove outdated comments
    
    The code is pretty straightforward now...
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit db639be6dfa9fecfbb867b878a13ae6af149b549
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Sep 3 10:23:44 2012 +0300

    keymap: optimize FindInterpsForKey a bit
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 872e15e52cfba269f5537d4e9f24ce8ef347e225
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Aug 30 00:12:41 2012 +0300

    keymap: refactor ApplyInterpsToKey
    
    There's really not much to explain what the function used to do there...
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 8c1b1b0e9e52be18dbb42aa4765f886ace067f97
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Aug 29 15:02:40 2012 +0300

    Add xkbcomp/keymap.c and move some code there
    
    Add CompileKeymap to do most of what compile_keymap_file does now, and
    move UpdateKeymapFromModifiers along with it from (mostly unrelated)
    compat.c.
    Also rename UpdateKeymapFromModifiers to UpdateDerivedKeymapFields,
    because it does more than update the modifiers.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 591df1156d2c2510c8672150a74982e0009e0f48
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Aug 27 19:20:41 2012 +0300

    Move enum xkb_file_type to xkbcomp/ast.h
    
    This is a more suitable place for this enum, since it's internal to
    xkbcomp.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit efc2d74141fec07b0aa44640fbf667d6b52a8631
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Aug 27 18:58:36 2012 +0300

    xkbcomp: clean up compile_keymap function
    
    We make the xkb_file_type enum sequential instead of masks, and then
    we don't have to repeat the file types several times in the function.
    Makes the code cleaner.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 82491d5fd101393ef77122e449f23e30343f3d9f
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Aug 30 12:14:29 2012 +0300

    map, state: check for KeycodeInRange only in API functions
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 06d7803a6d0f7dbcdb098d8e00122c097d40b80d
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Aug 30 12:13:37 2012 +0300

    state: fix mod_names_are_active
    
    This function was always returning -1.
    Adding a test, we see that test/state.c treat the is_active functions as
    returning booleans, which would treat -1 as success, so we test for > 0
    instead (most users would probably get this wrong as well...).
    Also update the documentation for the are_active functions, and add a
    ATTR_NULL_SENTINEL for gcc __attribute__((sentinel)).
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 9f0c01606346e63861b52bfc7ed8cff964cf9699
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Aug 30 11:21:03 2012 +0300

    state: fix type confusion within xkb_state_update_mask
    
    idx should be xkb_mod_index_t, while mod is the mask.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit ae576e85b710bee2e7a48b3191f60b3ba8ef913e
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Aug 30 17:15:39 2012 +0300

    state: remove unneeded optimization
    
    The code that follows does exactly that.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a45b7d75592933b15b1b3f7a22e2fbd9213ab62d
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Aug 27 11:51:37 2012 +0300

    state: light indicator when either condition is satisfied
    
    For the indicator to be set, it is sufficient for at least one of the
    group, modifier, or control state to match; this is in line with the
    xkblib spec, section 8.2 and ComputeAutoState() in xserver/xkb/xkbLEDs.c
    (though the xserver implementation differs from the spec on some
    points...).
    
    This also adds a tiny optimization to skip the entire check if the mask
    is empty.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit d1b476a387b2515ed296181afecd74cceb87b232
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Aug 27 11:25:23 2012 +0300

    state: fix led_update_all group mask calculation
    
    The one above uses which_mods, this one should use which_groups.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 9ba5ac0ec04bddde4132b9cb9c816fd36fba77ab
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Aug 27 23:05:04 2012 +0300

    keycodes: remove outdated comments
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit bebad402e4c7bc7a9ce3fbda7047f8380e513bd8
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Aug 31 18:15:01 2012 +0300

    keycodes: use darray for aliases instead of list
    
    Uses slightly more memory, but worth it.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 518aff6d7b3b069bc4af5a50307b08ae92489144
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Aug 31 11:40:35 2012 +0300

    keycodes: use array for indicator names instead of list
    
    Using a simple array here to mirror keymap->indicator_names makes much
    more sense, and is simpler.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit be78b8264dae61f056e7dea2804651e09fdf26ee
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Aug 31 11:13:24 2012 +0300

    keycodes: ignore "virtual" in indicators
    
    The distinction between real/virtual indicators is useless for us, we
    can just ignore it.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 4c56d4d9c0f9ce41f8c4295bf9fb8c60907f53f3
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Aug 28 14:45:03 2012 +0300

    symbols: call deinit functions Clear instead of Free
    
    Everywhere else Free is reserved for when the argument is free'd as
    well.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 2eba51c0f603535dc2663f2666437305b287efb3
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Aug 27 09:37:01 2012 +0300

    symbols: remove comparison of unsigned >= 0
    
    clang warning.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 3d305bd0cb6bc9f8959e41c161446ab3b691368a
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Aug 30 13:49:23 2012 +0300

    vmod: remove outdated comments
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit b3aced7e22f8d7e8f7f2b419a93f5f2d631bca1c
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Aug 28 11:14:54 2012 +0300

    vmod: ClearVModInfo doesn't need the keymap
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit ab1566cd6b30ea4bbe200fd5c693e2fb0efebb72
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Aug 28 11:11:40 2012 +0300

    vmod: remove useless keymap initialization
    
    keymap->vmods is not touched until UpdateModifiersFromCompat,
    where it initialized and used.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit f410622b4bcbe79d0c51e98e058a3bffee0b7a66
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Aug 15 22:07:37 2012 +0300

    vmod: remove support for resolving integer to virtual modifier
    
    This is only relevant to the virtualModifier= statement in interpret
    statements in xkb_compat. The current code allows to write e.g.
        virtualModifier = 4
    to get the virtual modifier whose index happens to be 4 (possibly
    declared in other files or sections, i.e. xkb_types). Doing this is
    undeterministic, will break without notice, and not used anywhere.
    Don't allow it.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit d3ddcf70e82b70e2a306d4678946a5fecd8d240b
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Aug 15 21:45:02 2012 +0300

    expr: move op_type/value_type_to_string functions to ast
    
    Generally the enum-to-string function should appear where the enum is
    defined.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit b9c87eb710ba4a86455601ca8c5a516b25e20366
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Aug 14 17:11:16 2012 +0300

    vmod: remove support for direct vmod -> real mod mapping
    
    The current code supports statements such as:
        virtual_modifiers NumLock = Mod2;
    This would set the mapping from the NumLock vmod to the Mod2 real mod
    directly, without going through the virtualModifier field in an
    interpret statement (in xkb_compat) or vmods field in a key statement
    (in xkb_symbols).
    
    This is undocumented, unused and complicates things, so remove it.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit eaa50c450b6b5e669dc7454c73c40d6ff4a82e31
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Aug 15 10:10:44 2012 +0300

    xkbcomp: seperate keymap-copying code from Compile functions
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 6738d30036b0e7cf0bd4a96cefd90486daab0fd7
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 2 19:16:34 2012 +0300

    compat: only compute 'bool report' once
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit e5fdbcbb9943e9fe0952bfe8da1c304d0d5a8c6f
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 2 11:49:43 2012 +0300

    compat: disallow changing global defaults from within an interpret
    
    It's currently possible to write something like this:
        interpret Num_Lock+Any {
            virtualModifier = NumLock;
            action = LockMods(modifiers=NumLock);
            !indicator.allowExplicit;
        };
    The final statement has the same effect as writing it in the global file
    scope, which changes the default indicator (which all subsequent
    indicators start off as). This very strange and also unused; if someone
    does it he probably expects it to affect only the local scope, and he
    might then get unexpected behavior. So don't allow it.
    
    Also, HandleInterpVar is clearly a misnomer (as it can also change
    indicator defaults) so rename it.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit c9466b32dff27ec0fef42e53b4c3feb81ca00da4
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Aug 27 22:06:50 2012 +0300

    compat: use darray instead of list for interps
    
    No need for a list here.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 8c6694fd5833b5b69e5c0f1cc550d24257b0336e
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Sep 2 18:51:26 2012 +0300

    compat: remove "flags" field from xkb_indicator_map
    
    We don't set this field any more.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 6e676cb7d89f0c3a7e133c6b007264cd381d74cc
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Aug 30 18:56:24 2012 +0300

    compat: ignore "allowExplicit" in indicator statements
    
    Using !allowExplicit sets the XkbIM_NoExplicit flag of the indicator,
    which means that an XKB client cannot change the state of the indicator
    using e.g. XkbSetNamedIndicator().
    We do not support changing the state of an indicator; furthermore doing
    it is probably only useful in conjunction with led-drives-keyboard
    behavior, which we also do not support. This is because setting an
    indicator without led-drives-keyboard would make the indicator and the
    modifier/group it's bound to to get out of sync.
    
    We can re-add this if we need this info.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit d573600da0c09479ff382d98f9e0aa08ee88dbc3
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Aug 30 16:39:33 2012 +0300

    compat: ignore "ledDrivesKbd" in indicator statements
    
    We don't support it, as mentioned in the README, so we should stop
    processing it and print a message about it.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 9de067aad4e8b0d928b7674f90fb4ecda737be33
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Aug 27 21:31:18 2012 +0300

    compat: ignore "group" (compatibility) statements
    
    Group compatibility statements are like the following:
        group 3 = AltGr;
    This currently results in:
        keymap->groups[2].mask = <real mod mapped from AltGr vmod>
    And we don't do any thing with this value later. The reason it exists in
    XKB is to support non-XKB clients (i.e. XKB support disabled entirely in
    the server), which do not know the concept of "group", and use some
    modifier to distinguish between the first and second keyboard layouts
    (usually with the AltGr key). We don't care about all of that, so we can
    forget about it.
    
    One artifact of this removal is that xkb_map_num_groups no longer
    works, because it counted through keymap->groups (this wasn't entirely
    correct BTW). Instead we add a new num_groups member to the keymap,
    which just hold the maximum among the xkb_key's num_groups. This also
    means we don't have to compute anything just to get the number of
    groups.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 7f75502f1844831a330b06c9ba0639465ff36bdf
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Aug 27 13:21:03 2012 +0300

    compat: get rid of BindIndicators
    
    Now that 1fba6189e67 removed support for binding indicator maps by index
    instead of name, we can remove some more magic which happens now: if an
    indicator map specifies an indicator name which was not previously
    declared in a 'indicator 5 = "Caps Lock"'-like statement in
    xkb_keycodes, we can just look at the next free index and assign it.
    
    This also allows us to use a darray for the LEDInfo's instead of a list.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 02de2a3e74c1f842052fd889a8f8d54214510660
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Aug 27 12:29:57 2012 +0300

    compat: ignore "index" field in indicator statements
    
    The current code allows to set the "index" field in an indicator
    statment's body. This would bind the indicator to the specified index,
    instead of by name (which was declared previously in xkb_keycodes).
    Doing this is a bad idea, for the same reasons as in 3cd9704, and is
    also happily not used anywhere.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 65c4a7173127aca5d11a85734fe38b030d118c56
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Aug 27 11:38:44 2012 +0300

    compat: remove dead NoAutomatic code
    
    The xkblib spec, table 7.1 (indicators), says:
    XkbIM_NoAutomatic: Xkb does not automatically change the value of the
                       indicator based upon a change in the keyboard state,
                       regardless of the values for the other fields of the
                       indicator map.
    
    xkbcomp (the real one) never actually implemented a way for an indicator
    statement to set this flag, so it's just dead unused code. We definitely
    don't want to implement it ourselves, so remove any mention of it.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 16f2de8bf024da264cbf7b6460ab729dd37f6849
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Aug 14 16:26:30 2012 +0300

    compat: ignore "locking" field in sym interprets
    
    This field is used in conjunction with key behaviors, which we don't
    support since c1ea23da5. This is also unused in xkeyboard-config.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit e9aa84f3111e9a4e17e80fb1998676c43c3ad709
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Aug 14 15:06:11 2012 +0300

    compat: small changes
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 4fec91cbbc2561238223332dad10f7d83dbfbd70
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Aug 14 15:05:56 2012 +0300

    compat: add general overview
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 79a2cc09cc67dd0781efc2c2ffff8661ddc046fb
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Aug 11 11:54:05 2012 +0300

    action: convert action field type to enum
    
    We can also hide the ActionInfo definition inside action.c.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 8f1ee629042a31e24eebc0310060446667562549
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Aug 14 14:42:57 2012 +0300

    types: add "Effects on keymap" to overview
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 7ef359def121b60c99890e04341a56b91d03a07a
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Aug 12 18:16:52 2012 +0300

    rulescomp: remove bad failtests
    
    Since we now handle empty model/layout, the last couple of tests should
    not fail. The reason they do is bacause they try to use a non-existent
    "base" rules file. When the file is brought in these tests do not fail.
    Since we already test for non-existent rules file, we can remove them,
    and refine the other tests a bit.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit cdc228eaf6e55e0dfc524fe62cd1021f2467e3bf
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Aug 13 11:00:43 2012 +0300

    Organize xkbcomp/ header files
    
    Various non-functional changes:
    - Re-add keycodes.h and move some stuff there.
    - Add parser-priv.h for internal bison/flex stuff.
    - Don't include headers from other headers, such that file dependencies
      are immediate in each file.
    - Rename xkbcomp.h -> ast.h, parseutils.{c,h} -> ast-build.{c,h}
    - Rename path.{c,h} -> include.{c,h}
    - Rename keytypes.c -> types.c
    - Make the naming of XkbFile-related functions more consistent.
    - Move xkb_map_{new,ref,unref} to map.c.
    - Remove most extern keyword from function declarations, it's just
      noise (XKB_EXPORT is what's important here).
    - Append XKBCOMP_ to include guards.
    - Shuffle some code around to make all of this work.
    
    Splitting this would be a headache..
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 3634b1565e00f72fcbde655363b85f8f060d91b5
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Aug 14 11:49:19 2012 +0300

    Allocate xkb_component_names on stack
    
    Instead of malloc'ing it as well. Also improve the error handling.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit e5353528288a85192793fba57e0acc2633dd7f00
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Aug 13 13:49:17 2012 +0300

    Move ISEMPTY to utils.h
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit f491285a5f4b5f680a87e9e3076e8499f3ed2a3b
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Aug 9 16:47:53 2012 +0200

    Move 'no symbols defined for ...' message to a warning
    
    Shut up shut up shut up shut up shut up shut up.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit ec2172f31b25282f8c5a3ec6dd33453cc0acd320
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Aug 10 22:48:18 2012 +0300

    Combine a couple of macros
    
    Easier to see what it does without the trivial macros.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 4c34bda15a4f8c8a16fa03d40bcf989db23023dd
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Aug 10 22:38:07 2012 +0300

    action: get rid of xkb_any_action
    
    And use union xkb_action instead. We add xkb_private_action, which is
    the same as xkb_any_action, but only used where the intention is clear.
    This should take care of whatever sizing changes the action struct might
    have.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 600caac33ade86607372e9cb326fe14c8c2b25d6
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Aug 10 22:06:12 2012 +0300

    Remove XkbKeyTypeIndex and widen index type
    
    We don't need the macro, and using char for the kt_index is imaginably
    too small.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 87dff888abd107541bf232258793d0bcb162b37d
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Aug 10 18:14:35 2012 +0300

    Store actions inside struct xkb_key
    
    Cuts out a lot of useless redirection and space.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 7bcc5fabbdf156d84afbb75279f5e2e702436192
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Aug 10 13:32:58 2012 +0300

    keycodes: save context in Info, not keymap
    
    We don't need the keymap in this case, just makes things more verbose.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 0cc5ae33b5319a3ce2759ec9ea65c6c05fda4fb3
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Aug 10 13:30:44 2012 +0300

    Remove xkbcomp/misc.c
    
    The KeyName functions are more appropriate in keycodes.c.
    The ProcessIncludeFile can go to path.c along with the other functions
    dealing with includes.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit f7c9d749d302233a30630d13446cae854af67b93
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Aug 10 13:26:36 2012 +0300

    Remove left over keycodes.h
    
    For some reason we still track this file in git even though we don't use
    it any more.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 34e690ceebf9a369aa7671d9ece120c50d3b43a6
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Aug 10 13:08:03 2012 +0300

    Remove AutoKeyNames feature
    
    If this keymap flag is set, whenever a key name appears in one of the
    sections which does not exist (i.e. has not been declared in keycodes),
    it finds the first unused keycode and attaches it that name.
    
    This might have been useful when you could compile the symbols section
    or geometry section without a keycodes section, but we don't support
    this anymore. It's also pretty useless for any real work, because the
    user has no way of knowing the keycode and so it will never be used.
    Finally the only obscure way left to set this flag is by including a
    keycodes file called "computed".
    
    Just remove it.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit ef518a10af83c294238ab1958ba6dbfdb758006b
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Aug 10 10:17:32 2012 +0300

    map: share some code
    
    Make more extensive use of get_entry_for_key_state, and add
    key_get_consumed to use in the other consume functions.
    
    There's also a slight change in the consumed mods calculations, where
    we use entry->mods.mask instead of type->mods.mask. The original was
    copied from what libX11 does but what we do now is more logically
    correct. The result is exactly the same though because:
    type->mods.mask ⊇ entry->mods.mask ⊇ entry->preserve.mask
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 75853ed66b87ceeac7067818cb8559ecb40bb9b0
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Aug 10 10:11:49 2012 +0300

    Use XKB_{GROUP,LEVEL}_INVALID instead of -1 for errors
    
    The group/level types are unsigned, so it's odd to return -1 for them.
    Instead use their invalid values (which happen to be == -1).
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 6d61e39d2051eabe0199ed503bfbc5087c416136
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Aug 10 10:08:20 2012 +0300

    state: use global static const for fake action
    
    Requires constifying some arguments.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 07b18bde1796725220605e919eaf02b620db2bd8
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Aug 9 02:33:51 2012 +0300

    Modernize struct xkb_mods
    
    Currently xkb_mods has the following members:
    - uint8_t real_mods - 8 X11 core mods
    - xkb_mod_mask_t vmods - 16 virtual mods, zero-based index
    - xkb_mod_mask_t mask - the computed effective *real* modifier mask,
      basically a cache for the first two which is:
      real_mods | real mods computed from vmods
    
    Our API acts on masks which combine the real_mods and vmods into a
    single value, which is:
    8 first bits real mods | 16 next bits virtual mods
    (XkbNumModifiers = 8, XkbNumVirtualMods = 16). This is also the format
    which ResolveVModMask uses (which is where all the modifier masks really
    "come from", e.g. "Shift+Lock+Level5" -> xkb_mod_mask_t).
    
    What the code does now after getting the mask from ResolveVModMask, is
    to break it into real part and virtual part and store them seperately,
    and then join them back together when the effective mask is calculated.
    
    This is all pretty useless work. We change xkb_mods to the following:
    - xkb_mod_mask_t mods - usually what ResolveVModMask returns
    - xkb_mod_mask_t mask - the computed mask cache
    And try to consistently use the word "mods" for the original,
    non-effective mods and mask for the effective mods (which can only
    contain real mods for now, because things break otherwise).
    
    The separation is also made clearer. The effective masks are computed by
    UpdateModifiersFromCompat after all the sections have been compiled;
    before this the mask field is never touched; after this (i.e. map.c and
    state.c) the original mods field is never touched. This single execption
    to this rule is keymap-dump.c: it needs to print out only the original
    modifiers, not computed ones. This is also the reason why we actually
    keep two fields instead keeping one and modifying it in place.
    
    The next logical step is probably to turn the real mods into vmods
    themselves, and get rid of the distinction entirely (in a compatible
    way).
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 45cd92b4d3ddb14027123c9b6f85ed471c02b4f9
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Aug 9 02:33:51 2012 +0300

    Fix xkb_keymap::vmods type
    
    It maps a vmod to a mask, of course.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 41478b4309a4c69f7b641901849e0379dc23649b
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Aug 9 01:30:22 2012 +0300

    types: don't compute effective masks here as well
    
    After compiling all of the sections, UpdateModifiersFromCompat does all
    of the vmod -> real mods translations, including types/kt_entries.
    
    keytypes.c also has code that does that, but it's unneeded:
    - Later sections don't look at their effective masks, so doing it later
      is fine.
    - When this code is executed, the vmods -> real mods mapping is empty
      (that is set up later), so VModsToReal has no effect here.
    So we can just remove it.
    
    However UpdateModifiersFromCompat didn't update the preserve mask, so do
    that.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit fafc1132d25c0ecf8c406c549d9c2dc894031b1d
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Aug 8 19:53:55 2012 +0300

    types: get rid of PreserveInfo
    
    We don't need the indirection. We store the preserve mask directly in
    the entry, and create a new one if it doesn't exists (which is exactly
    what the current code does in a roundabout way).
    
    Incidentally this fixes a bug where the effective modifier mask of the
    entries' preserve[] wasn't calculated, so the virtual modifiers had no
    effect there.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 0f1ca360f118dc48984b8e876894801809381238
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Aug 8 20:47:51 2012 +0300

    keymap-dump: use VModMaskText
    
    The difference between the two are irrelevant here.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 5a51ce8b3689b13c726a585f3013529ac287dd73
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Aug 9 01:55:30 2012 +0300

    Fix warning
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 2f1f1bca5b28807293920e613de6c9ff705853bf
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Aug 8 14:26:23 2012 +0200

    Add xkb_map_mod_mask_remove_consumed
    
    A fairly simple helper which, given an xkb_mod_mask_t, removes all
    modifiers which are consumed during processing of a particular key.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 5e276adb9209749f1b5152853c640ec444df7051
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Aug 8 14:01:46 2012 +0200

    Add xkb_log_level enum rather than using syslog
    
    Instead of relying on people including syslog.h, add our own
    XKB_LOG_LEVEL_* defines.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit ba8458a9fd580d80d127ed1768f8f1d4a51ef251
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Aug 8 13:56:28 2012 +0200

    Increase log verbosity in tests
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit d5f725f69a77ebeb3e721a6891af11a1b9285887
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Aug 3 05:13:46 2012 +0200

    Rules: mmap() rules file instead of using getc()
    
    Good for a small performance win on my system.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 3199ea73839ff31b5d1903b7537f794a9ee60457
Author: Pekka Paalanen <ppaalanen@gmail.com>
Date:   Mon May 14 14:33:29 2012 +0300

    android: add build files
    
    squashed: android: set xkb config path
    
    Conflicts:
    	Makefile.am

commit 93f6517cd07a8107317aabd0e5ef76699b44df45
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Aug 3 04:07:33 2012 +0200

    stringcomp: Make test more punishing
    
    Recreate the old test/dump scenario, where we test the following map:
      - rules: evdev
      - model: pc104
      - layout #1: us
      - layout #2: ru
      - layout #3: ca(multix)
      - layout #4: de(neo)
    
    This is ever so slightly altered from the xkbcomp output; running the
    following:
    setxkbmap -rules evdev -model pc105 -layout us,ru,ca,de -variant
    ,,multix,neo -print | xkbcomp -xkb - -
    
    will give you a map with RCTL added to the modifier_map for both Control
    and Mod3.  Running the output through xkbcomp -xkb - - again, will give
    you RCTL only added to Mod3.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit e756e9b532442c704ebf54806cca811cf93c5ddb
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Aug 3 04:02:31 2012 +0200

    test/dump: Remove superfluous test
    
    No longer necessary now we have stringcomp doing a full round-trip test
    for us.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit fb4d3aefc366dfdd866b45a867cf5c717d957b6f
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Aug 3 04:01:21 2012 +0200

    test/stringcomp: Perform full round-trip test
    
    We now pass! \o/
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 6701fb5fe530d4ebe89c87d5d72ca47966bdb41c
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Aug 3 03:54:44 2012 +0200

    stringcomp: Remove unnecessary Level1 mappings
    
    As a map will implicitly go to level one unless explicitly mentioned
    otherwise, remove all explicit =Level1 mappings, except for those with
    preserve entries.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 5968c5e6a87eb6c4a618443357487439fb244ac3
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Aug 8 13:55:04 2012 +0200

    Always have at least one level in types
    
    The ONE_LEVEL definition from xkeyboard-config doesn't specify any
    actual levels, but there's an implicit (anything unmatched) -> Level1
    rule.  Given this, each type actually has at least one level, whether or
    not it specifies anything.
    
    Fixes stringcomp.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 28733c54f9445ca5f0fe8d15456e90078816b0c2
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Aug 3 05:34:58 2012 +0200

    IncludeStmt: Remove useless 'path' member
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 4bb8b6b1cf028b8414a8657aa7e6165af83d6d9a
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Aug 3 05:19:50 2012 +0200

    Remove unused vmodmask calculation
    
    This was basically an open-coded VModsToReal, which we were using in the
    line immediately below.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 6021a9762b9f375924a0e0e56bbd1dd739a2b37d
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Aug 3 03:45:14 2012 +0200

    test: Minimise includes
    
    Mostly from functions which used to use file functions directly, but now
    use test.h wrappers.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 39da9274a7abca8539391925c797234ce6a6d590
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Aug 3 03:38:46 2012 +0200

    stringcomp: Update input file for output changes
    
    Bring the input file into line with recent changes to the dump output,
    so we're as close as we can get to a round trip.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit ce2e4899b56b78d502b6166b51905ab5cf82fe8a
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Aug 3 03:34:53 2012 +0200

    test: Add extremely rudimentary include path test
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 8fe2a484c0662c1864d081de9beee73b5cfcd8a1
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Aug 3 03:32:30 2012 +0200

    Rename xkey test to keysym
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 42b2c93433f0d7ff5608fa080f6dcfd4c2bf5b50
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Aug 3 03:22:48 2012 +0200

    Print failed include paths on failure to find rules
    
    Thus giving a hint as to which directory we're trying to find.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 226cb22c800584cea61cdeac3347bf9755b63013
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Aug 3 03:12:52 2012 +0200

    Move xkb_context struct to xkb-priv.h
    
    So we can print more intelligent debugging messages without needing
    helper functions for the failed_includes array.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 3e8370b028ae5e0d4389c6488cf009c9d2df53e6
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Aug 3 03:11:19 2012 +0200

    context: Maintain list of failed include paths
    
    Keep around a list of paths we tried to add but couldn't.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 53e2db6ba98bcd085c84bab716acba316e383a60
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Aug 3 03:05:02 2012 +0200

    More useful error message on failing RMLVO -> KcCGST
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 41d97df9515770e753db6cd819727cec44c59d1b
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Aug 3 03:00:20 2012 +0200

    Move more of xkb_map_new_from_rmlvo into compilation
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 5cf4f510444759fb7b158f341411f19c8fbd8ebf
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Aug 3 02:57:02 2012 +0200

    Staticise xkb_map_new_from_kccgst
    
    We didn't expose this to the outside world, and its only trivial user
    was xkb_map_new_from_rules.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 1eda9e44b1f1a883016fe4dc0129155ecd1e389a
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Aug 3 02:51:40 2012 +0200

    test: Use test_compile_*() in interactive
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 04253fb2eb4500d331971a2a345af1f48ca42493
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Aug 3 02:51:10 2012 +0200

    Add support for default rules/model/layout
    
    Right now it just comes from build-time, but eventually this should be
    sourced from configuration files at runtime too.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 055b30349310060ac1ae7b0320445bf85bcfae5d
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Aug 3 02:37:09 2012 +0200

    tests: Fix uninitialised-use-of-'ret' warning
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 3f0169424f81cb514460c1103c1bc9485568dfd0
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Aug 3 02:36:40 2012 +0200

    test: Use test_get_context() in interactive
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 26c01d3bb4ed0bf31d915bae84bf06661c2f341f
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Aug 8 13:30:05 2012 +0200

    Warning fixes
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 1a930bf256d87a0edde66a0b00271e3faf664d45
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Aug 7 00:20:40 2012 +0300

    Add API to query whether a modifier is consumed
    
    Currently the user has no way of knowing which of the active modifiers
    have been used in the translation of a keycode to its keysyms. The use
    case is described in the GTK docs: say there's a menu accelerator
    activated by "<Alt>+". Some layouts have "+" shifted, and some have it
    on the first level. So in keymaps where "+" is shifted, the Shift
    modifier is consumed and must be ignored when the user is testing
    for "<Alt>+". Otherwise, we may get "<Alt><Shift>+" and the accelerator
    should not actually fire.
    
    For this we also use the preserve[] information in the key types, which
    can forces us to report modifiers as unconsumed even if they were used
    in the translation. Until now we didn't do anything with this
    information.
    
    The API tries to match its surronding. It's not very efficient but this
    can be fixed.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 262bf97f9bfeed535d94034cf5ded9dac962ffaa
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Aug 7 13:23:44 2012 +0300

    types: remove default type
    
    The default type is copied over for each new key type to build on.
    Further, it can be modified from within the xkb_types section itself,
    with statements such as "type.modifiers = Lock" which affect all
    subsequent type definitions.
    
    The default type is (well, by default) just the simplest one level type
    possible, with name "default". When no types are defined at all, it is
    copied over to the keymap as the single type.
    
    xkeyboard-config never changes the default type. There is also no sane
    use case for doing so; changing any thing there doesn't make sense. So
    instead of doing all the hard work of maintaining and copying this type,
    which is practically never used, just remove it and initialize new types
    appropriately.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit d327d3e27be2f5d4119fe491a4d23f8bb2f5759b
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Aug 7 11:40:07 2012 +0300

    types: store atoms instead of strings for level and type names
    
    We don't use these strings much, so storing them in the manner they
    were compiled saves some copying and space.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit b2fba7305c33e04abce550245f1ae7fcdcad3a2a
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Aug 7 08:52:23 2012 +0300

    types: use regular array for map entries
    
    This array is only initialized once.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 8ccfee82ec7fbc36b8009bc1686783e920d7b879
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Aug 7 08:38:20 2012 +0300

    types: use regular array for types
    
    The current code doesn't resize it any more.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a681c6240d325d54bd705fa2e91425486f2f557b
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Aug 7 08:17:26 2012 +0300

    types: remove DeleteLevel1MapEntries
    
    If there is no map entry for some modifier combination, the default is
    to use level 1. The removed code is an optimization to save some space
    by removing these entries. But it doesn't actually save any space, and
    did not in fact remove all level 1 entries (it walks the array while
    modifying it so there's an off-by-one error).
    
    We can instead keep them in the types but just not print them in
    keymap-dump.c, to get about the same behavior.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 233d85c427cbb9ecc53e9bc9784ceb0bd10fb87b
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Aug 6 21:31:17 2012 +0300

    types: move preserve directly into xkb_kt_map_entry
    
    Currently each xkb_key_type has a preserve array, which is only allocated
    if a preserve[] statement is specified in the type. In this case each map
    entry has an element in the array.
    
    The space savings are negligible; put this field where it logically
    belongs.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 6b75dd2dcbf469bccdfb3d4bda1b01493b787a68
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Aug 5 19:38:31 2012 +0300

    Fix virtual modifiers mask extraction
    
    The calculations were performed incorrectly in several places,
    specifically shifting by 16 instead of 8 (= XkbNumModifiers) and masking
    with 0xff instead of 0xffff.
    
    More stuff that probably never worked as intended. This also makes these
    more grep-able when we remove the vmods/real_mods separation.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 796dccabe88d07c7bee8cbcf04d441a0909fa82a
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Aug 5 14:05:03 2012 +0300

    types: small changes
    
    Just make things easier to follow, no functional changes.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 4c00278c827ec0b9e3350a5562f90267f56cfd26
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Aug 2 01:09:41 2012 +0300

    Remove xproto build dependency
    
    Very little left to do for this.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit b0b11c4e2ed288aea80b598b6dfbd10390405cf4
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Aug 2 00:29:07 2012 +0300

    types: don't use canonical/required types
    
    Xkb required every keymap to have at least the four following canonical
    types: ONE_LEVEL, TWO_LEVEL, ALPHABETIC, KEYPAD. This is specified in
    e.g. the kbproto spec and XkbKeyTypesForCoreSymbols(3) man page.
    
    If these types are not specified in the keymap, the code specifically
    checks for them and adds them to the 4 first places in the types array,
    such that they exist in every keymap. These are also the types (along
    with some non-required 4-level ones) that are automatically assigned to
    keys which do not explicitly declare a type (see FindAutomaticType in
    symbols.c, this commit doesn't touch these heuristics, whcih are also not
    very nice but necessary).
    
    The xkeyboard-config does not rely on the builtin xkbcomp definitions of
    these types and does specify them explicitly, in types/basic and
    types/numpad, which are virtually always included.
    
    This commit removes the special behavior:
    - The code is ugly and makes keytypes.c harder to read.
    - The code practically never gets run - everyone who uses
      xkeyboard-config or a keymap based upon it (i.e. everyone) doesn't need
      it. So it doesn't get tested.
    - It mixes policy with implementation for not very good reasons, it
      seems mostly for default compatibility with X11 core.
    - And of course we don't need to remain compatible with Xkb ABI neither.
    
    Instead, if we read a keymap with no types specified at all, we simply
    assign all keys a default one-level type (like ONE_LEVEL), and issue
    plenty of warnings to make it clear (with verbosity >= 3). Note that
    this default can actually be changed from within the keymap, by writing
    something like
        type.modifier = Shift
        type.whatever_field = value
    in the top level of the xkb_types section. (This functionality is
    completely unused as well today, BTW, but makes some sense).
    
    This change means that if someone writes a keymap from scratch and
    doesn't add say ALPHABETIC, then something like <AE11> = { [ q Q ]; }; will
    ignore the second level. But as stated above this should never happen.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit be82f08221d98dca5b8b499efa8381ee2c67d7c5
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Aug 5 13:46:56 2012 +0300

    types: add a general overview
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit c1ea23da5c48f25faddcc7d52da9a1f5dcf28fee
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Aug 4 10:47:56 2012 +0300

    symbols: remove support for key behaviors
    
    The possible key behaviors are:
    KB_RadioGroup, KB_Overlay1, KB_Overlay2: already removed support for
    these.
    KB_Lock (with or without KB_Permanent): used to ignore key presses or
    releases to simulate and deal with some legacy keyboard behaviors
    (like keys that physically lock). Not used at all.
    
    We already ignore them while processing key events in state.c, so make
    it official.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 7c89f34e63790e58f4aae8ef9579ec0c3d47d801
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Jul 29 11:39:44 2012 +0300

    keycodes: small changes
    
    to make it a bit nicer.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit b2c4331ac365bb7d92cecdb4d6e1f947d8d37d00
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jul 28 22:15:59 2012 +0300

    Handle key names consistently
    
    We treat the key names as fixed length, non NUL terminated strings of
    length XkbKeyNameLength, and use the appropriate *Text functions to
    print them. We also use strncpy everywhere instead of memcpy to copy
    the names, because it does some NUL padding and we might as well.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit c548c815296465f3ce41d8171e9f9cc50607213f
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jul 28 12:10:44 2012 +0300

    keycodes: add a general overview
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 15541766b09dff7c26508f91d3ca88d254840af5
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Aug 5 14:10:45 2012 +0300

    expr: make ResolveLevel return zero-based level
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 59d947c9c1df624c47ccfd1c6f13eb1f408ea16a
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Aug 5 19:24:44 2012 +0300

    Add and use xkb_level_index_t
    
    Several types are used over the code for shift levels; better to use
    just one.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit b804aec292f8fdc6928a62b441bda469b68e2502
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Aug 3 00:20:07 2012 +0300

    action: drop global actionInitialized
    
    The action.c needs to use two constant Expr values, constTrue and
    constFalse. To do this is keeps to static globals Expr's of type boolean
    and the values "true" and "false" which need to be interned (and thus
    context specific). The interning means they can't be made static const,
    so there's a global flag and initializer function.
    
    Instead of using this unsafe global state, we can simply use an integer
    boolean expression (1 and 0) instead of a string one ("true" and
    "false") and make them const.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 6f08a2cfa0e45b58858c116baeb31ad37e78fc9d
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Aug 3 00:33:40 2012 +0300

    expr: constify function arguments
    
    We need this for later.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit f2ecd6650aff7d8b628845c1284c7e671c01ea67
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Aug 6 20:04:22 2012 +0300

    log: allow to resore default log function
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 18048cb7bf49468a9211e107c000ef255db2f94f
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Aug 2 17:59:57 2012 +0300

    darray: fix formatting
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 9617b092e2412e85be6549b99472863ea43e8267
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Aug 5 12:03:51 2012 +0300

    filecomp: fix path and error message
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 1d570a6d46a52f575bec7c639149723e247480e4
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Aug 2 09:54:38 2012 +0300

    interactive: add support to run from keymap file
    
    This is useful for quickly testing a random keymap file. Use -k <PATH>.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit cfd978b89dba8233434cf561378a71173de7e43c
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Aug 2 00:40:22 2012 +0300

    keyseq: use our own keysyms
    
    Instead of <X11/keysym.h>
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit cead852713aee71c573f8970511fb3eb2c28b3a2
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Aug 1 22:12:13 2012 +0300

    Replace more defines with enums
    
    Mostly the ones used to track the fields of types/keys/leds which were
    already defined.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 3bea189bd5bf4fd23a6b3b1a6f4e8b0c51426586
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Aug 1 18:46:01 2012 +0300

    Make top level Handle*File functions nicer
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 82ee45b374c9c2ec396b51f37f2d841f443a761a
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jul 28 23:21:46 2012 +0300

    Use xkb_led_index_t throughout
    
    And use XKB_LED_INVALID instead of _LED_Unbound, which served the same
    purpose here.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 09dac54b97807dd2667435fdd7243b3a8380f512
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Aug 1 21:31:36 2012 +0300

    vmod: remove unused fields
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 6eb5929d48f2e9387ba6030872bad2c5bf5064b2
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jul 28 23:31:08 2012 +0300

    README: s/xkb_desc/xkb_keymap
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 7c7e43415128229c97b2f9efa756c485774caa3b
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Aug 1 11:25:34 2012 +0300

    Use only one set of core mod name-to-index functions
    
    These were repeated 5 times.
    
    Note that this changes the ABI slightly: XKB_MOD_NAME_CAPS is changed
    from "Caps Lock" to "Lock", which is the ordinary legacy mod name for
    it. Since its hidden behind a #define, it's best to stay compatible with
    the old names (as I think was intended, given that "Mod1", etc. are the
    same).
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit c6dee4640a6eff283bc868fbc4aca33aa48ddb42
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Aug 1 11:12:18 2012 +0300

    map: fix incorrect return value
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit ae968f855a70613920737a7523a3fd369c60802e
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Aug 1 11:01:21 2012 +0300

    map: fix virtual mod index calculation
    
    The current code made us miss vmod index 0. Also look at the code in
    vmod.c:LookupVModMask.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 80ab9f12b40e50a70263852f5526ceb62e50ad7b
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Aug 2 23:40:31 2012 +0300

    keymap-dump: use ActionTypeText
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit d53fcf53f80770f13890a009974bb5bd3a743d41
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Aug 2 21:36:30 2012 +0300

    keymap-dump: use SITextMatch
    
    text.c has the exact same function.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 20bef734d83755401261da87d19588362c9f777f
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Aug 2 20:55:12 2012 +0300

    keymap-dump: clean up write_buf function
    
    It would have been nice to use open_memstream here if it was portable
    enough (maybe someday it will?).
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 4c21275301c453757196d9aa74c00861c0d0d54f
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Apr 8 02:20:39 2012 +0300

    Add an interactive evdev test
    
    The program reads key events from evdev input devices, puts them through
    the library and prints some information about them. It's nice for
    experimenting, quick testing and trying to break it with random stuff
    (already found some!).
    
    It is called "interactive" for lack of a better name. It's a bit
    hackish, but can easily be extended, made more portable etc, in the
    future.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    
    Conflicts:
    	Makefile.am
    	test/.gitignore

commit 41d9afc5560e8770f19d009eb76854b0345e580b
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Jul 27 15:31:03 2012 +0300

    Remove ExprResult
    
    Convert the IdentLookup typedef away from ExprResult, which drags along
    everything else. This should also make all of the conversions explicit.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 6917901f8103d6ab766e76280404e64a2b9cf70a
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Jul 27 14:15:39 2012 +0300

    expr: remove support for evaluating string as integer
    
    As the comment nicely puts it, this is a bit weird. When you try to
    evaluate an expression of type string into an integer, what it does is:
        "" -> 0
        "c" -> (ascii value, i.e. like a char literal)
        more than one char -> error
    The first one is obviously not very useful; why not just write 0?
    The second one might be useful (though I don't see where in a keymap
    it would be), but I don't think anyone would consider trying "X" for
    that anyway.
    
    A look through xkeyboard-config shows "" only used once as a string, and
    "X" also only used as strings (and mostly in geometry which we don't
    evaluate anyway). And I seriously doubt it's used (purposely) anywhere
    else. So remove it.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit dd0f3c6dc234b1b8b4a3943cbba212de7dadbd76
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Jul 25 10:53:36 2012 +0200

    Don't create contexts with no include paths
    
    Clean up the return code handling from
    xkb_context_add_include_paths_default, and thus fail context creation if
    we can't add any of the default include paths, but were asked to.  If
    this happens, dump the DFLT_XKB_CONFIG_ROOT out in the log message, so
    at least we know what we aren't looking at.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit ca7927ae60ad70ebd5bef5cc3644ddcbeaa6dd06
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Jul 25 10:55:06 2012 +0200

    context test: Use test_get_context()
    
    So we don't die if we haven't got a valid global include path.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit bd927abf3df164c29d080d9c5ed51301fd1a940b
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Jul 24 19:39:59 2012 +0300

    expr: drop ExprResult from ResolveEnum
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 38614c886c6d11d09762bd2ece6d7924ae3afbbc
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Jul 24 17:21:29 2012 +0300

    expr: drop ExprResult from ResolveMask
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 2e4933cda7c141c9efc8c62e7d72f591f2998836
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Jul 24 10:39:15 2012 +0300

    expr: drop ExprResult from ResolveInteger
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit d56822898891f36023fbfe829809b6d2ba7b0556
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Jul 24 01:22:26 2012 +0300

    expr: drop ExprResult from ResolveButton
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 6ec135700d53804f9c71346daaaa3bc47485b064
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Jul 24 00:51:19 2012 +0300

    expr: drop ExprResult from ResolveLevel
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 000528dd594881cb411c619d29c5a534889d6b25
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Jul 24 00:23:34 2012 +0300

    expr: drop ExprResult from ResolveKeyCode
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit e258f9ee073a43de125b064a0a99c19b7a45b251
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Jul 24 00:10:07 2012 +0300

    expr: drop ExprResult from ResolveGroup
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 70262292104de444bfd82b2ebdb5043ef28bb85b
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Jul 23 23:56:28 2012 +0300

    expr: drop ExprResult from ResolveKeysym
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 0d262fa1051cad9d1cf55939753799ab431676f2
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Jul 23 19:52:17 2012 +0300

    expr: drop ExprResult from ResolveBoolean
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 27f9492969a4f9e2b31ecc1053233dfe0726dfcf
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Jul 23 15:46:50 2012 +0300

    expr: drop ExprResult from ResolveString
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 025ca5790532adfb187bc2508659b2fabb2c05a3
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Jul 23 12:20:05 2012 +0300

    expr: drop ExprResult from ResolveLhs
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 761b675cc3eaf34bb5b75a3f459e328b330bb551
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Jul 23 11:56:13 2012 +0300

    expr: drop ExprResult from ResolveKeyName
    
    Explicit is better than implicit, and this union makes it hard to follow
    what's what, particularly the confusion with ival/uval.
    The other Resolve functions will follow.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 01c81fa61ecc2bd4f3753bb98d4153e97b1ac897
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Jul 25 21:37:20 2012 +0300

    parser: untabify
    
    Run vim's :%retab and some resulting indention fixes.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 724f62c8e3d1e7dd7ffa8e735e91c1d17488e36a
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Jul 25 17:29:08 2012 +0300

    Convert defines to enums in xkbcomp.h
    
    For statement / expression types.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 35fb8b94cb56d7d0640b1d47359d67841053bfe5
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Jul 27 01:47:32 2012 +0300

    Fix incorrect comparison
    
    ExprFieldRef goes into the ExprDef op field, not the type field.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 89723b7cb7198d76990110bd3c4efae0dba97765
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Jul 24 19:54:14 2012 +0300

    utils: add/replace string equality macros
    
    It's more tidy and less error prone, since we use strcasecmp == 0 a lot.
    We replace strcmp == 0 by streq, strcasecmp == 0 by istreq,
    uStrCasePrefix by istreq_prefix and uDupString by strdup_safe.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 4f843c817b213e4b69ee5f3df071ebe3c917088e
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Jul 24 13:24:59 2012 +0300

    Drop Xkbc prefix of text functions
    
    Not really needed and inconsistent.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 6cb982000092fb0d30603016be5f8b82579da6bd
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Jul 24 13:15:40 2012 +0300

    Use xkb_mod_mask_t and xkb_mask_index_t throughout
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 74be17627e43811437147c84d43d75bcac822a7b
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Jul 23 21:30:28 2012 +0300

    Remove alloc.{c,h}
    
    These functions are more appropriate elsewhere now.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 13eb9c357d6472b30b24e51efa93ee5c53d45d51
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Jul 23 17:41:55 2012 +0300

    scanner: don't strdup key names
    
    The key name is always XkbKeyNameLength (= 4) bytes, so we can maintain
    it directly in YYSTYPE union and copy when needed, instead of treating
    it like a full blown string and then copy. This means the scanner
    checks the length itself.
    
    rulescomp under valgrind, before:
    ==1038==   total heap usage: 168,403 allocs, 168,403 frees, 9,732,648 bytes allocated
    after:
    ==9377==   total heap usage: 155,643 allocs, 155,643 frees, 9,672,788 bytes allocated
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 112cccb18ad1bc877b3c4a87fa536ea085c761b5
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Jul 23 16:03:34 2012 +0300

    Some atom related optimizations
    
    We often get a strdup'd string, just to pass it over the atom_intern and
    then immediately free it. But atom_intern then strdup's it again (if
    it's not interned already); so instead we can have the interning "steal"
    the memory instead of allocing a new one and freeing the old one. This
    is done by a new xkb_atom_steal function.
    
    It also turns out, that every time we strdup an atom, we don't actually
    modify it afterwards. Since we are guaranteed that the atom table will
    live as long as the context, we can just use xkb_atom_text instead. This
    removes a some more dynamic allocations.
    
    For this change we had to remove the ability to append two strings, e.g.
        "foo" + "bar" -> "foobar"
    which is only possible with string literals. This is unused and quite
    useless for our purposes.
    
    xkb_atom_strdup is left unused, as it may still be useful.
    
    Running rulescomp in valgrind, Before:
    ==7907== total heap usage: 173,698 allocs, 173,698 frees, 9,775,973 bytes allocated
    After:
    ==6348== total heap usage: 168,403 allocs, 168,403 frees, 9,732,648 bytes allocated
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit c6279b8baeae7dd9ff486bc0fb60ff0bef0587af
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Jul 23 21:21:03 2012 +0300

    expr: don't divide by zero
    
    Calculator parser 101.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 7662397fd41a1581f71836e7c7361100d3fb0d56
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Jul 23 21:18:18 2012 +0300

    types: fix canonical types copying
    
    Without the re-initialization, the copying fails. This wasn't noticed
    because this code practically never gets executed with ordinary keymaps.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 3c58072172f18b86ecfef8e04be0f5da23e40679
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Jul 23 16:22:20 2012 +0300

    keycodes: fix valgrind warnings
    
    ==7071== Conditional jump or move depends on uninitialised value(s)
    ==7071==    at 0x40B6CB: AddIndicatorName (keycodes.c:148)
    ==7071==    by 0x40C34F: MergeIncludedKeycodes (keycodes.c:420)
    ==7071==    by 0x40C613: HandleIncludeKeycodes (keycodes.c:480)
    ==7071==    by 0x40D022: HandleKeycodesFile (keycodes.c:733)
    ==7071==    by 0x40D79F: CompileKeycodes (keycodes.c:881)
    ==7071==    by 0x401E22: compile_keymap (xkbcomp.c:157)
    ==7071==    by 0x402091: xkb_map_new_from_kccgst (xkbcomp.c:229)
    ==7071==    by 0x40216A: xkb_map_new_from_names (xkbcomp.c:254)
    ==7071==    by 0x4046F5: test_compile_rules (common.c:164)
    ==7071==    by 0x4015C1: test_rmlvo (rulescomp.c:44)
    ==7071==    by 0x40180D: main (rulescomp.c:98)
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit d4eee861605138fc2f1138046defbd269b3cef9c
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Jul 23 11:25:32 2012 +0300

    parse: remove unused #define
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 2e245a9a417ac008aa055ac0e85cb86fdf11faa8
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Jul 23 11:42:22 2012 +0300

    expr: Remove ExprResolveFloat
    
    Remnant from geometry.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 9bd55b55f8044ab105097af3b59db81f01db6c1a
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Jul 23 23:10:07 2012 +0100

    makekeys: Add top_srcdir to include path
    
    Fixes distcheck with no /usr/include/xkbcommon.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 3dc1252d2d419481b6642ee1c674aa9249fc6d5c
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Jul 22 19:38:14 2012 +0300

    Add test for logging functionality
    
    Just to make sure everything works properly.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 2c30fa7a6079e24fc9a7d05039bfae260cfc79a1
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jul 21 16:10:17 2012 +0300

    Remove old logging leftovers
    
    Everything has been converted.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 70e3e7e5c331084389fb9a20fa44ec828752d390
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jul 21 15:39:18 2012 +0300

    xkbcomp: use new log functions
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit f48ee2d2afe698419adcd96346f42c556e94ecf5
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jul 21 15:44:48 2012 +0300

    parse: use new log functions
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 8e3958032cc359296cb4106ff887c3943b0619d6
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jul 21 15:37:33 2012 +0300

    path: use new log functions
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 885f6c8cb6b68171bd522804b7117e218de24515
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jul 21 15:35:17 2012 +0300

    misc: use new log functions
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 544a83e6d7d555406dbb33a5bbe3d266078bc7f2
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jul 21 15:27:09 2012 +0300

    vmod: use new log functions
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 3bb3e9c3a9d76149fb8908fa40ea13d96951fc3c
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jul 21 15:19:27 2012 +0300

    rules: use new log functions
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit d659f2b46bec055b06c2323de3710a666695d03e
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jul 21 15:12:31 2012 +0300

    expr: use new log functions
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit e037f518624cdd4c694b2b696ae314382b03ac0b
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jul 21 14:53:49 2012 +0300

    action: use new log functions
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 87444fb96914c4f30ee99aa90f62144222a110c5
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jul 21 02:08:14 2012 +0300

    types: use new log functions
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 36df40c3cdf377123358c3fcecd7cbc048142131
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jul 21 02:03:25 2012 +0300

    types: add keymap to KeyTypesInfo
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 8e62b368a78f6068602c1f2d8e9f196cfb208949
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jul 21 01:35:46 2012 +0300

    compat: use new log functions
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 270ff8ad8361a9af9282160b9e3b153c08f16e00
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jul 21 01:31:10 2012 +0300

    compat: add keymap to CompatInfo
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 7dc51ea84a5324c54d271fd51d42ad2940acaa76
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jul 21 00:58:25 2012 +0300

    symbols: use new log functions
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 7ef648134debf36997282e4ec44acaff86865933
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jul 21 00:50:18 2012 +0300

    symbols: add keymap to SymbolsInfo
    
    and use it. Also make sure info is the first argument to the functions
    in this file.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 0ae1199a5a500b33d3c7e2455e7e3aa2f7dcf858
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Jul 20 19:38:36 2012 +0300

    keycodes: use new log functions
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 37579ce9a5c5977d87fc91fc0c8b742116fd759a
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Jul 20 18:27:37 2012 +0300

    keycodes: add keymap to KeyNamesInfo
    
    and let the info always be the first argument to the various functions,
    just for consistency (and it acting as the contex for this file).
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 70f35cfbc0e41ce5ddf1d5a9b7b0a7731e68d5bf
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Jul 20 13:10:13 2012 +0300

    Add logging API
    
    Add new public API to provide the library users with some options to
    control and customize the logging output from the library. It is based
    upon the skeleton from the libabc demo libray:
    https://git.kernel.org/?p=linux/kernel/git/kay/libabc.git
    which is public domain and works pretty well.
    
    This requires passing in the context object in every logging call, and
    thus the conversion is done file by file. We also remove the global
    warningLevel variable in favor of a verbosity level in the context,
    which can be set by the user and is silent by default.
    
    One issue is the ACTION calls, which, while nice, do not play very well
    with line- and priority-based logging, and would require some
    line continuation handling or keeping state or some other compromise. So
    instead remove these and just inline them with their respective
    warning/error. So instead of:
        ERROR("Memory allocation failed\n")
        ACTION("Removing all files on hardisk\n")
    its something like that:
        log_err("Memory allocation failed; Removing all files on harddisk\n")
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 71c2f2e0e2dce7e3ada36ee7399421eb18a2e302
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Jul 20 17:20:35 2012 +0300

    utils: replace FATAL by malloc_or_die
    
    "Out of memory" is enough in this case. If we want to be OOM-safe this
    makes it clear where to begin.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 58f8d2c151d95bb920d346dcae3e6c429789f257
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Jul 20 17:09:49 2012 +0300

    utils: remove Xfuncproto.h and use our own macros
    
    Add XKB_EXPORT to replace _X_EXPORT, and copy the definitions of
    _X_ATTRIBUTE_FOO as ATTR_FOO.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 8b0e9f929c66a0ceaed599cd1730d0782c486353
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Jul 20 13:07:30 2012 +0300

    utils: remove uTypedAlloc/Calloc
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 5e164ff1f9b3539ddf1d3adea8225c1549d343db
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Jul 23 00:41:27 2012 +0300

    build: drop the include/ directory
    
    The include/ dir is somewhat redundant and makes it just a bit harder to
    handle the -I directives from out side of automake; without it the
    default $(top_buildir) just works.
    Here's also some further justifications I found:
    http://smcv.pseudorandom.co.uk/2008/09/pc-uninstalled/
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 2fc0ad5001bc378a2728f24bdbc84e8e0f30f675
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Jul 20 12:48:13 2012 +0300

    Fix bison 2.6 and clang warnings
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit db98696d0b36469a6030902ad41bb658f349f49f
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Jul 17 17:08:14 2012 +0300

    Remove CommonInfo
    
    Not used by anything anymore.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 250c925ce404787a9eddbf7a752a1a08f9caaa5d
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Jul 17 17:05:28 2012 +0300

    types: use list instead of CommonInfo for KeyTypeInfo
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 85826c3c136a9162f4d45cf04b27d12a98d0a641
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Jul 18 17:53:27 2012 +0300

    Simplify HandleInclude functions
    
    Instead of special casing the first include, process it inside the loop
    as well. It works perfectly fine.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 861e6a17512285061a8c9ba2c1b03f86fe2875ab
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Jul 18 16:30:55 2012 +0300

    Remove haveSelf include feature
    
    When including a file from another file, its possible to do something
    like this:
        include "+some(other)+files"
    with the "+" or "|" in the beginning. What will happen then is that
    instead of processing the include files separately and then merging into
    the existing info, we instead start with the existing info and merge
    into it as we go, as if it was written explicitly before the first "+".
    
    It's not particulary clear what this may be useful for. Since it's not
    used by xkeyboard-config, not documented anywhere (and google doesn't
    bring up anything), completely untested and kind of ugly, remove this
    "feature". It most likely never been used.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 730c2bc34f28e3a2f42f1f6201b98368b3d70196
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Jul 17 15:50:24 2012 +0300

    types: use list instead of CommonInfo in PreserveInfo
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 85abd36bf4efd130913544d8a66add4ec993e57a
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Jul 17 15:39:27 2012 +0300

    types: move global static tok_ atoms into KeyTypesInfo
    
    The atoms are context-dependent.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 119c952b82141ed35beba3c8ec3b9519f6a6693d
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Jul 17 00:53:07 2012 +0300

    compat: use list instead of CommonInfo in LEDInfo
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 50b25a1210a9a2926a2c22017f63a68483de0299
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Jul 17 11:03:43 2012 +0300

    Use xkb_group_index_t for group variables throughout
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 8237e9c77ad4fe50957a8732d54eef7a6554c0dd
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Jul 17 11:56:00 2012 +0300

    Remove _X_EXPORT from xkb_key_get_group/level
    
    We should add them to xkbcommon.h if they need to.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit e21fc886ca1e57e7cba135f44778a986526503b8
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Jul 17 00:43:59 2012 +0300

    compat: use list instead of CommonInfo in SymInterpInfo
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit ba4320f7b31a94ef13963977d96ca9c5f2b43c00
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Jul 16 22:45:16 2012 +0300

    Move indicators.c code into compat.c
    
    It is only used there. Allows some refactoring.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit dfa0929c6d0199b93907b4927f3dd82d9bc30df7
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Jul 16 22:15:43 2012 +0300

    Convert macros to inline functions
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 3fbf4ce315bb9b24220307412605dfd65d4764e1
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Jul 16 21:28:25 2012 +0300

    keycodes: use list instead of CommonInfo in IndicatorNameInfo
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 4bf987e5f766b52112f1b37f45d951c511be8481
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Jul 16 21:25:00 2012 +0300

    keycodes: use list instead of CommonInfo in AliasInfo
    
    Always pass around the KeyNamesInfo which contains the list head.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit cc8b06826b74feb31f02d6862d875255d3ba605c
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Jul 16 17:53:46 2012 +0300

    Move alias.c functions into keycodes.c
    
    They are only used in this file.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit cf4f170bddf3348342194ef5171991be40ec5c8c
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Jul 16 11:24:48 2012 +0300

    symbols: don't use CommonInfo in KeyInfo
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit ebb4d59c5897d48d22b8c4ef9472677f9424e559
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Jul 16 11:09:03 2012 +0300

    symbols: use list for ModMapEntry's
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit b6e2a56dc0672fb4d1008828aab0dba00ecee630
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Jul 16 11:06:33 2012 +0300

    Add common linked list implementation
    
    Taken from xserver/include/list.h. The changes made are:
    * Drop the xorg_ prefix and some typedef from the end.
    * Rename _for_each_entry macros to just _foreach (like darray).
    * Rename list_is_empty to list_empty (like darray).
    * Add a list_replace function which we use later.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 0a6f9ccde26ab8d003b4294aab972ae695843a98
Author: Ran Benita <ran234@gmail.com>
Date:   Mon Jul 16 10:15:53 2012 +0300

    symbols: remove alias info
    
    It's never used - all of the aliases are added in the keycodes section.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit d0097f4e60b8356fe0355dee5c2b6552cce196e7
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Jul 15 15:55:34 2012 +0300

    Pass around xkb_key's instead of keycodes
    
    This way we don't need to look up the key every time. We now only deal
    with keycodes in the public API and in keycodes.c.
    
    Also adds an xkb_foreach_key macro, which is used a lot.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 35a93b8e6496a6cd5623cc2c332dc4f5ea2a4f11
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Jul 15 14:35:57 2012 +0300

    map: verifiy that the keycode is legal
    
    In case someone passes in a bad keycode.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 091a0542ac0bbd8b49c669e7380fa61a1b3ca61c
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Jul 15 14:24:54 2012 +0300

    Remove redundant keymap->keys resizes
    
    The size (i.e. max_keycode) is determined in the keycodes section, which
    gets compiled first.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit ad8875c52655c55a23735cc1e6b003ada2c74f6c
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Jul 15 14:02:36 2012 +0300

    Remove GroupsWidth macro
    
    Use key->width directly instead.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit c705a82d60f72852baa9386644c4259eb45cb15b
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Jul 17 11:51:32 2012 +0300

    Remove unused 'groupInfo' in KeyTypeInfo
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 4ccb0ef5cc6c378722641ffe159cf1e1372f6f09
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Jul 15 13:51:34 2012 +0300

    Get rid of group_info
    
    This is 8 bits which hold how many groups the key has, what to do the
    key group is out of bound and the group to redirect to if want to. This
    may save a few bytes, but is really annoying. So instead, just lay out
    the fields separately. We can optimize later in a sane way, with pahole,
    bitfields, etc. if we want.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 4066fcc9b5e395aa53a8d9a9a73466ba29c80c7a
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Jul 15 13:15:33 2012 +0300

    Get rid of struct xkb_sym_map
    
    Past its usefulness; put the stuff directly in xkb_key.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 7d9f031341672f0df4fcc12a3066400326a5395f
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Jul 15 13:00:04 2012 +0300

    Get rid of struct xkb_key_name
    
    Just embed it directly.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit e8a6a5f09afa725b4ebc72eddb6e38740f3e5fda
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Jul 15 10:38:05 2012 +0300

    Add common xkb_key struct
    
    Instead of having a million arrays from the keycode to various
    key-specific info in the keymap, add a single struct xkb_key to hold all
    of the data for the key in one object. This way we can pass it around,
    do some refactoring and make the code simpler. It's also nice to see
    everything in one place.
    
    The keys array is still indexed by keycode, which is suboptimal because
    there may be a lot of holes (i.e. unused keycodes between min_key_code
    and max_key_code). By the end of this series it would be abstracted
    enough to replace it by a hash table or similar if there's ever a need.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit e668d00956e81c9638ee0b7542cee17bec8a23e1
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Jul 15 12:48:11 2012 +0300

    Replace KeyInfo 'key' variable name by 'keyi'
    
    We want to reserve the name 'key' for something else.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 81d029f5632d0a2b510d0a29bbda5e91d7958c5d
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Jul 15 11:52:54 2012 +0300

    Replace xkb_keycode_t 'key' variable name by 'kc'
    
    We want to reserve the name 'key' for something else.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a52fb7e21c349dc109be42cc573adf5fd95d7096
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Jul 15 11:37:54 2012 +0300

    Convert indecipherable macros to inline functions
    
    This was fun.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit c064b95c7cf6aa1323a32c0c0efe74931ab9b5b7
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Jul 15 01:59:01 2012 +0300

    symbols: split initialization code from CompileSymbols
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit caca60f3918af555b1236b7a0b0188ff410419c4
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Jul 15 01:45:34 2012 +0300

    Move per_key_repeats and enabled_ctrls to keymap
    
    All of the per-key data and global flags are now visible directly in the
    keymap.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 1313af8fb50899e344356b2126d1e4fffa5c8659
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Jul 15 01:31:34 2012 +0300

    Get rid of xkb_key_names
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 50fef8eb8a5994a1fa61531cc8217ce071ac617f
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Jul 15 00:46:31 2012 +0300

    Get rid of xkb_indicator
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit ed082617689515af170f8a590e0074786b6a7b86
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Jul 15 00:39:15 2012 +0300

    Get rid of xkb_compat_map
    
    Same as xkb_{client,server}_map which were already removed.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 3de9d87498f7041372ff0e49fd45f1d852a02f25
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Jul 15 00:26:28 2012 +0300

    Get rid of xkb_server_map
    
    Same as xkb_client_map which was removed before.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 219243fe1bf20c00e8c0372bf2b422ed07d122f6
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Jul 15 00:06:11 2012 +0300

    Get rid of xkb_client_map
    
    We don't make this distinction anymore, and the separate allocations
    just make it harder to reason about. Since we require that all of
    symbols, types, compat etc. be present, we should just put stuff
    directly in the keymap struct.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 9308a460395679aa3cb403211146e4ff9b920992
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Jul 17 10:20:15 2012 +0100

    Run source tree through uncrustify
    
    .uncrustify.cfg committed for future reference also, but had to manually
    fix up a few things: it really likes justifying struct initialisers.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit c6c937abc2e7e9aa9dc952dea392329b88ab1011
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Jul 15 17:35:35 2012 +0300

    Fix typo in out of range group calculation
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 7d400657f5dec9097b8c5b4a93d526743b359f82
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jul 14 19:53:13 2012 +0300

    Remove unused control num_groups
    
    We have xkb_map_num_groups for that.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 6c3e0811d4b563902fc094ca9ed231a25445a848
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jul 14 15:14:44 2012 +0300

    Convert missed enum merge_mode variables
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 43bf4136c976c251e973c28d07b63ea542ef3879
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jul 14 15:19:12 2012 +0300

    Fix fileID mess
    
    A few problems here:
    * In e.g. keycodes.c the fileID field of the Info struct was never
      initialized to the id of the appropriate file, so it was always 0.
      There's some code which uses it, mostly for warnings.
    * Some of the fileID fields were unsigned char, which overflows several
      times, seeing as the ID in some of our tests can get > 1000 (because
      we reuse the context).
    * Some sign mismatches.
    * fileID vs file_id.
    
    Hopefully this fixes everything. I doubt this stuff had ever worked as
    intended, in xkbcomp or otherwise.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 70683f7debc1ce0e75f11a22acc2828b80be8f26
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jul 14 12:37:25 2012 +0300

    path: fix error message
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit d705c5d97cf6969f87f40e73aeb2525fc61a4219
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jul 14 01:12:50 2012 +0300

    Make compile_keymap a little nicer
    
    Just using the fact that we must have all of the components, without
    optional ones.
    Also fixes a memleak on the way, by making the functions which allocate
    the XkbFiles to free them, which is easier to get right.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit fe4f990902c7cd8f395b9f3be14dc6e8cad7cae9
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jul 14 00:27:19 2012 +0300

    Move CompileKeymap into xkbcomp.c
    
    It's nicer to see the code where its used. Removes keymap.c.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 57374c3237d5976231a57fdcd9270ddcae313efb
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Jul 13 18:55:10 2012 +0300

    Rename KSIsLower/Upper and move to keysym.c
    
    Seems like a more natural place, and allows to remove the src/misc.c
    file.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 0765064b35be2e1a0390bb9ecc4f8bad2879dbfd
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Jul 13 18:34:11 2012 +0300

    Remove MERGE_ALT_FORM merge mode
    
    The mode comes from the "alternate" keyword, which is unused in
    xkeyboard-config and mostly undocumented. Its purpose is to allow to
    assign the same key name to multiple key codes, which is not allowed
    otherwise (and doesn't make much sense). The xkblib specification
    implies that this was part of the overlay functionality, which we also
    no longer support.
    
    If we do encounter this keyword, we just treat it as MERGE_DEFAULT. The
    keycodes.c code will detect a collision and will ignore all but the
    first key code (and the error count is not incremented).
    
    Some peripheral code is also removed as a result.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit dd85790c73064715436b96fec5af7704e229a3d9
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Jul 13 17:51:26 2012 +0300

    Move InitCanonicalKeyTypes to keytypes.c
    
    It's only got one call site and it's in keytypes.c, so move it there and
    make it static.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 0aaa84d8f15d269ca4ee5f6f81de34f7644bcf60
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Jul 13 17:37:31 2012 +0300

    Remove xkb_kt_map_entry::active
    
    Takes the advice of acdad6058d52dc8a3e724dc95448300850d474f2 and removes
    this field, since its not used anymore now.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 3e65531f1323278913fb84173e9881db0b28673c
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Jul 13 17:31:30 2012 +0300

    Move ComputeEffectiveMap code and avoid some duplication
    
    The ComputeEffectiveMap function is only called from keytypes.c, with
    the last argument NULL, so we can move it there and remove some code.
    The function XkbcVirtualModsToRealMods, of which the above is the only
    user, is already implemented more simply in compat.c, so make this one
    non-static and use it. This leaves src/xkb.c empty, so remove it.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a3378338bde48bbe52ffba64bcd32131aa730357
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Jul 13 17:10:48 2012 +0300

    remove unused function xkb_canonicalise_components
    
    commit 46441b1184dfa8553409d493ae6336aabb900d79 removed this from the
    public API, and we don't need it internally. So send it to the archives.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit b7c0737a949dc3592e671c0605f2322c13f74709
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Jul 13 14:40:14 2012 +0300

    compat: fix XkbSI_AllOf matching condition
    
    To quote the spec:
    
    XkbSI_AllOf
        All of the bits that are on in mods must be set, but others may be
        set as well.
    
    Here "mods" refers to interp->mods. This matches xserver/libX11.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 6e7d1678ba05981724d2771f38d1a476e74f6239
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Jul 13 00:40:25 2012 +0100

    FindAutomaticType: Add FIXME
    
    It doesn't play well with multiple keysyms per level right now.  But
    that's OK, because no-one really uses them.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 3640e14d9e8aabf08043a4776880901d17127b64
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Jul 13 00:39:34 2012 +0100

    Add multiple-keysyms-per-level to test data
    
    Make sure this keeps on working.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit a19abd26359aa090cf4abf71122e2ab61c89065c
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Jul 13 00:32:41 2012 +0100

    rulescomp: Fix benchmark runs
    
    We'd accidentally inverted silent vs. non-silent compilation, which
    would skew the benchmark pretty badly, but also forgot to change base to
    evdev for the rules here.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit a77e9a92e9a7b8af74e88ae14d7416b020f84b3b
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Jul 13 00:12:57 2012 +0100

    tests: Update dump.data for recent fixes
    
    Makes the test pass again.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit f0599675920020a9f84cd962ee05d7d491164df4
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Jul 11 16:16:20 2012 +0300

    dump: add back kccgst names
    
    Readd the component names to the keymap->names struct. This is used when
    printing the component, e.g.
    
    xkb_keymap {
    	xkb_keycodes "evdev+aliases(qwerty)" {
    
    instead of
    
    xkb_keymap {
    	xkb_keycodes {
    
    This makes diffing against xkbcomp $DISPLAY a bit easier and is kind of
    useful anyway.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 2ec0a22d55d35ffa120cb913655c639ee738fd8d
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Jul 13 00:10:23 2012 +0100

    Add Cyrillic and Greek to case-checking
    
    Evidently good to have on its own, but also fixes a regression from
    xkbcomp where we'd identify implicitly-typed Cyrillic keys as TWO_LEVEL
    rather than ALPHABETIC.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit fe5bfdf9d8ea27989c4acf3271cff6f9d5eb081e
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Jul 11 16:35:43 2012 +0300

    dump: a few more tweaks to match xkbcomp output
    
    Only uppercase / lowercase stuff.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 9e5052259a0f5d3655cff1c6aa36cc303c866e47
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Jul 12 19:28:52 2012 +0300

    symbols: fix bug in modifier_map handling
    
    The code used to match a keysym to a keycode (see added comment)
    differed in behavior from xkbcomp, always taking the first key it found.
    This caused some incorrect interpretation of the xkeyboard-config data,
    for example the one corrected in dump.data (see the diff): since the
    de-neo layout sets the both_capslock option, the Left Shift key (LFSH)
    has the Caps_Lock keysym in group 4 level 2; now since
        keycode(Left Shift) = 50 < keycode(Caps Lock) = 64
    the Left Shift one was picked, instead of the Caps Lock one which is
    group 1 level 1. The correct behavior is to pick according to group,
    level, keycode.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit fedcf3705bbcf51b86edff59d7c063815ff91605
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Jul 12 17:54:09 2012 +0300

    dump: use KeyNameText instead of copying
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 62deaeb570c8712e085ac9b379b5d7564c6f5673
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Jul 12 14:42:31 2012 +0100

    Import dataset into test/data/
    
    Use a self-contained dataset instead of relying on a globally-installed
    set.  Data taken from xkeyboard-config 2.5.1.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 3e86ebca0684d90899f34c2add6b1474c464613f
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Jul 12 14:15:08 2012 +0100

    Add a library of common test functions
    
    Including creating a context (will come in useful soon), opening and
    reading files, and compiling keymaps.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 059c1842ef35aa6e2eb33230a228edb12ecd8852
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Jul 12 12:02:19 2012 +0100

    Move test data files to test/data/keymaps
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit b10f924b0c19b9d6c557eadf43ddb330a415c91d
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Jul 3 21:22:09 2012 +0100

    Make BindIndicators static
    
    Since BindIndicators was only ever called immediately after
    CopyIndicatorMapDefs, move it up in the file and turn it into a static
    function, which avoids the need to ever pass the unbound LEDs around.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit d38d16e113af3d8ee85fb199a589fcb38d972eed
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Jul 3 21:17:11 2012 +0100

    Change BindIndicators return to void
    
    Since it could only ever return true, which avoids a totally unnecessary
    cleanup path.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 9116e02d6f911ff67c7db4a5878e5278217f3975
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Jul 3 21:15:28 2012 +0100

    Remove 'unboundRtrn' argument from BindIndicators
    
    It was only ever passed as NULL from its single callsite, so just remove
    it and be done with it.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit cfed7960ad7a4f159cee856859d0b72db8394e5d
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Jul 3 21:13:11 2012 +0100

    Remove 'force' argument from BindIndicators
    
    It was always true in the one callsite, so just remove the other
    branches.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 1f492901314baae0172c19414fac6829089f97a4
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Jul 11 18:00:31 2012 +0300

    Enlarge keysym name buffers and mention in comment
    
    The longest keysym is 27 chars long.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 010242593e63a6b6d763de1b446097cccf876ad8
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Jul 11 16:23:35 2012 +0300

    test/dump: output commentary to stderr
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit e4d4de8c9e76bd7fa593d3dc9ba385d9da8b8d84
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Jul 11 21:37:59 2012 +0300

    symbols: fix bug in symbol merging
    
    When we merge two KeyInfo's (belonging to the same keycode), we may take
    a shortcut from copying if we see that the merged keys will be exactly
    like those in one of the two KeyInfo's. In the case where we take the
    symbols from the KeyInfo we are *not* merging into, we need to copy
    the three arrays:
        syms[group], symsMapNumEntries[group], symsMapIndex[group]
    The code currently only copies the first one, so if there's a merge
    conflict some levels may seem to disappear (i.e. have a NoSymbol
    keysym).
    
    This fixes the failing test added in c8d6bba.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 09d1445b4ad0ca5e13d13c2262c5bf1d583b16fe
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Jul 11 14:12:12 2012 +0300

    keyseq: add a failing group-switching test
    
    For some reason, with the grp:alt_shift_toggle option, the following
    sequence switches a group:
    < Left Shift down, Left Alt down >
    While the reverse doesn't:
    < Left Alt down, Left Shift down >
    And it should.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 19f814f95e30675606dc5ac7c72e1f9434b3020c
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Jul 11 14:08:28 2012 +0300

    rules: fix parsing of multiple options
    
    This was broken by commit 18d331b86b4942ba54fe087ca07e47c9383d768b
    (where only the first option out of a comma-separated string was
    matched). Do it correctly this time and add a test.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 8ff984871ba00434277b3c1a55ea240ef1157509
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Jul 1 00:45:20 2012 +0300

    keymap: remove redundant check
    
    This is handled above in the LEGAL_FILE_TYPES check.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit e201c165364fdb6c74d7848ea361762a64ea75f2
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jun 30 00:07:09 2012 +0300

    state: fix base mod set/clear behavior
    
    This commit fixes the incorrect current behavior, where at the end of the
    following key sequence
    Left Shift down, Right Shift down, Left Shift up
    the Shift modifier is cleared.
    
    Clearly the code is not as nice as before, but it seems like some count
    of the depressed modifiers must be kept.
    
    The code is lifted mostly as is from xkbActions.c. [ There they also
    assign to setMods and clearMods each time and not OR it. I assume its
    correct, although I wouldn't have guessed... ]
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 13f030baf2dc1201068abd0b5f91792c3f5906bc
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Jun 29 22:25:27 2012 +0300

    Tiny reformatting
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 37f4384947939784d1eb4b29bb201974b14f95bb
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jun 30 00:49:41 2012 +0300

    rules: remove support for keymap rule
    
    This commit removes the ability to specify a keymap *in a rules file*,
    e.g. in /usr/share/X11/xkb/rules/evdev or somesuch. This is unused in
    xkeyboard-data, and the current code has never even supported it,
    because xkb_map_new_from_kccgst (which is no longer exposed in the API)
    checks to see that one of the usual components (e.g. symbols, types, ..)
    has been filled, while the rules parser, on the other hand,  doesn't
    allow to specify a keymap and other stuff at the same time.
    
    ( The idea was to remove xkb_map_new_from_kccgst entirely, but it's used
      by a test so it can stay. )
    
    tl;dr: dead code. Of course passing a keymap file to
    xkb_map_new_from_file still works.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 337c3007acf83eb818d6737fbb1c8e87758f7d86
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Jun 30 00:37:12 2012 +0300

    Remove _X_EXPORT from xkb_map_new_from_kccgst
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit ddb0ff9d024f3334353fc4c5166925886f6da4f7
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Jun 29 19:26:01 2012 +0300

    xkbcomp: remove useless function XkbChooseMap
    
    compile_keymap can only be passes a single keymap file now, from all
    code paths leading to it. So this function doesn't do anything.
    
    The remaining check is performed inside CompileKeymap, so we can remove
    it as well; compile_keymap doesn't do much now.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 7111eb8e8a2a7b7d81ea1656e6f1572590da99aa
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Jun 29 17:45:47 2012 +0300

    compat: move some unclear code where it belongs
    
    It seems like at some point it was needed to break the abstraction and
    perform this piece of code in the context above CompileCompatMap. The
    extra argument and the typedef look strange now, and doesn't seem to be
    needed any more, so move them back.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 213dcf686f349d668f16d1ec7810045b4b8de191
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Jun 29 17:31:10 2012 +0300

    Use enum for merge mode
    
    The merge mode shows up in a lot of functions, so it's useful to give it
    a distinct type.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 48b4d30aa39a0d41490b8099576909fda73d3a75
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Jun 29 17:05:33 2012 +0300

    Use enum for file types
    
    enums are nice for some type safety and readability. This one also
    removes the distinction between file type mask / file type index and
    some naming consistency.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 8f257397af28b1107c2a93da55ee74f7b7e8bd1f
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Jun 29 16:04:55 2012 +0300

    keymap: simplify legal/required logic a bit
    
    Now that we've consolidated on the keymap file type, this code only
    serves to confuse.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit f637d35a8655eaf13bbd15367df705d90a3d674d
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Jun 27 00:22:31 2012 +0300

    Use void* instead of old style char* in CommonInfo functions
    
    Removes some annoying casts.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 2cb6c35b8788add691ef619a6111c6e67b252089
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Jun 22 16:08:05 2012 +0100

    Don't set explicit repeat masks when derived
    
    If we've only derived that a key should repeat, rather than had it
    explicitly specified, don't set the explicit member.  Fixes the dump
    test.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit acdad6058d52dc8a3e724dc95448300850d474f2
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Jun 22 16:03:17 2012 +0100

    Don't ignore inactive type entries
    
    An entry for a type will only get marked as active if a virtual modifier
    can be directly mapped to it, and not if an action indirectly leads to
    it (e.g. LevelThree).  We don't really need this test since entries which
    can never be triggered ... won't be triggered.
    
    The entire map->active thing should probably just go away.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 6d606d1068197453db40d78dc44e7bbe816f0623
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Jun 22 15:29:47 2012 +0100

    state: Add more comprehensive repeating test
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 8e2c66e9ea2f0c1302b943fe63212614b1a46e60
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Jun 22 15:27:05 2012 +0100

    Add xkb_key_repeats
    
    Does what it says on the box.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit fe89d031548b815e57aaef462354e6c400287de5
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Jun 22 15:26:07 2012 +0100

    Work out a default repeat for all keys
    
    Our early exit in ApplyInterpsToKey meant we weren't hitting the code
    that's supposed to set a sensible default autorepeat value for most
    keys.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 0015604ade738f139fc551c9132bd726634315f6
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Apr 10 21:20:27 2012 +0300

    Add a test for the results of key sequences
    
    This test verifies the core purpose of this library, which is to
    translate the user's keypresses into keysyms according to the keymap and
    the XKB specification.
    
    The tests emulate a series of key presses, and checks that the resulting
    keysyms are what we expect.
    
    Several of the tests currently fail, and plenty more should be added and
    maybe split up.
    
    It also currently uses an RMLVO keymap, which comes from the
    xkeyboard-config data set, and whose behaviour may change in the future.
    So it should probably be changed to use several files of our own, but
    it's OK for now.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit cd5a827402f1a8d989964bbaf88b47cbe70ee106
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Jun 6 10:44:22 2012 +0300

    utils: remove unused recalloc and related macros
    
    Their use is superseded by darray everywhere now.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 955ed8c4693b00845b24396aa21ba16c290bc87b
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Jun 6 10:38:45 2012 +0300

    state: use darray for filters
    
    For the darray we need to specify the explicit struct xkb_filter type
    instead of void*, so we move the definition of struct xkb_state into
    state.c thus making it opaque even from the rest of the files. It has
    enough getters to get going and is otherwise good style.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a1f8440d700c7a0b10494d0183fb92b66bda54e3
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Jun 6 10:01:43 2012 +0300

    symbols: use darray in struct xkb_sym_map
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 54bdfd05a4f30397a4cb4ee1608f2c8d82416b00
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Jun 6 01:22:52 2012 +0300

    symbols: use darray for KeyInfo acts
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit ce9c18a76e28d2fd0b43b9286dd31ed200c82f62
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Jun 6 00:57:42 2012 +0300

    symbols: use darray for KeyInfo symsMapNumEntries
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 920cc2704166e6d0c650270e222068b7aa904a57
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Jun 6 00:39:23 2012 +0300

    symbols: use darray for KeyInfo symsMapIndex
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit e82b9b143cbf7777fe82cc482b58783782a84394
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Jun 5 19:25:23 2012 +0300

    symbols: remove sizeSyms array from KeyInfo
    
    This information is kept inside the darray now.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 4237a204473a790c180878056c371b630eee5950
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Jun 5 19:09:01 2012 +0300

    symbols: use darray for KeyInfo syms array
    
    The arrays found in KeyInfo are by far the most complicated, so this is
    taken one member at a time so as not to break anything.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit bc50cdd460ba1485c84f2dfffec4fbb1ca3b4606
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Jun 5 18:46:24 2012 +0300

    darray: some changes for convenience
    
    - Make darray_free also initialize the array back to an empty state, and
      stop worrying about it everywhere.
    
    - Add darray_mem, to access the underlying memory, which we do manually
      now using &darray_item(arr, 0). This makes a bit more clear when we
      actually mean to take the address of a specific item.
    
    - Add darray_copy, to make a deep copy of a darray.
    
    - Add darray_same, to test whether two darrays have the same underlying
      memory (e.g. if the struct itself was value copied). This should used
      where previously two arrays were compared for pointer equality.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 57f184e21889e7ec72d0eb39dae6972773b706c5
Author: Ran Benita <ran234@gmail.com>
Date:   Wed May 30 15:55:21 2012 +0300

    darray: tweak parameters a bit for better memory usage
    
    Here are some quick numbers from valgrind, running rulescomp only with a
    simple, common "us,de" rule set:
    
    before darray: cb047bb
    total heap usage: 44,924 allocs, 44,924 frees, 3,162,342 bytes allocated
    
    after darray: c87468e
    total heap usage: 52,670 allocs, 52,670 frees, 2,844,517 bytes allocated
    
    tweaking specific inital allocation sizes:
    total heap usage: 52,652 allocs, 52,652 frees, 2,841,814 bytes allocated
    
    changing initial alloc = 2 globally
    total heap usage: 47,802 allocs, 47,802 frees, 2,833,614 bytes allocated
    
    changing initial alloc = 3 globally
    total heap usage: 47,346 allocs, 47,346 frees, 3,307,110 bytes allocated
    
    changing initial alloc = 4 globally
    total heap usage: 44,643 allocs, 44,643 frees, 2,853,646 bytes allocated
    
    [ Changing the geometric progression constant from 2 only made things
    worse. I tried the golden ratio - not so golden :) ]
    
    The last one is obviously the best, so it was chosen, with the specific
    tweaks thrown in as well (these were there before but don't make much
    difference). Overall it seems to do better than the previous manual
    allocations which is a bit surprising.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 93ef256063eb4cf6e79275e2113fd388aaf08a51
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Jun 8 09:54:08 2012 +0300

    Comment out unused fields in xkb_controls
    
    Until (if) we implement/use them the should take up any (mental) space.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit cb631c2de040768478e50db1e606d23ab5286e73
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Jun 8 09:25:38 2012 +0300

    Unconstify a few string struct fields
    
    These were made const when the structs were exposed in the API. Now they
    are private and we shouldn't mess around with the UNCONSTIFY business.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit d0718e988cf8e92a11f93e936af13728123b6bce
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Jun 5 17:48:08 2012 +0300

    test/dump: allow to run manually
    
    Without the srcdir envvar (and a couple trivial changes).
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 9baf62f3076a88926b5c81c2a0dce5bc7c96f562
Author: Ran Benita <ran234@gmail.com>
Date:   Sun May 20 20:51:50 2012 +0300

    Remove configure check for X11 keysym files
    
    Since every user building the library, even from git, doesn't need these
    files anymore, there's no need to check for them (this goes for makekeys
    as well).
    
    The only remaining user is the update-keysyms target, but whoever will
    run it again (if ever) will probably know what he's doing (at least
    enough to run git diff before git commit). And the defaults should be
    fine too.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 58b030bb901b77ba97fdaf64fca4403b81445aaf
Author: Ran Benita <ran234@gmail.com>
Date:   Sun May 20 20:39:35 2012 +0300

    Move XKB_KEY_NoSymbol to xkbcommon-keysyms.h
    
    This avoids a couple of special cases in the code, and is more
    consistent. Since anyone who includes xkbcommon.h also gets
    xkbcommon-keysyms.h, and anyone who include xkbcommon-keysyms.h would
    want NoSymbol anyway, there's no down side.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 1c27bb8e77d85e3e3c9a4f3003bc429759482135
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Jun 6 00:19:48 2012 +0300

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

commit 6992de408a890be7bd66f7d829dc84eb9c4b81a6
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Jun 8 14:54:31 2012 +0100

    Add keypad sequences to UTF-8 keysym printing
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit e0524296d2e07426c2979025c81bb261d59e74cd
Author: Rob Bradford <rob@linux.intel.com>
Date:   Fri Jun 8 13:10:28 2012 +0100

    Add API for getting unicode representation of a keysym
    
    This code uses a table and code derived from
    http://www.cl.cam.ac.uk/~mgk25/ucs/keysym2ucs.c
    
    The added API calls are:
    
    xkb_keysym_to_utf32
    xkb_keysym_to_utf8
    
    [daniels: Changed API to be more in line with keysym_get_name, added
              test, changed formatting to 4-space.]

commit 77c909dee2edbef2e96f95887a6abd96b985df6f
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Jun 4 16:16:20 2012 +0100

    Fix tiny memory leak in dump test
    
    We forgot to free the path we'd allocated with asprintf.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 2e009f69c701c53123654785ff5cf0a0c67c22b2
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Jun 4 16:15:10 2012 +0100

    Avoid duplicating keysyms for merge if possible
    
    If we can merge cleanly (i.e. use the entirety of one entry rather than
    having to go level by level), then just reuse the existing symbols array
    and skip the entire merge process.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit d3dfd7deaba6ea09a3a4bcc2a4c1963472e024f7
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Jun 4 16:14:42 2012 +0100

    Use $(top_builddir) rather than relative paths
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 734be50050601987da680597f5dafc41c6421fbb
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Jun 4 14:06:01 2012 +0100

    Work around stupid automake dependency-tracking bug
    
    bison/flex-generated objects, when being run in a VPATH build with
    --disable-dependency-tracking (i.e. Gentoo), would fail to be created
    because automake didn't bother creating the destination directories
    before trying to create the objects.
    
    Fix this by depending on the destination directory stamp, which
    according to the automake mailing list, should hopefully remain fairly
    stable.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit e6ca6fc57d9070fb97998df817958b2b98952020
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Jun 4 14:04:04 2012 +0100

    Fix action= NoAction() printing
    
    Print it explicitly, rather than type=0x00, with all the private data
    too.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 0f09c3073c8d5709043cbd56344313dca1ac490f
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Jun 4 13:27:41 2012 +0100

    Make xkb_map_get_as_string test more comprehensive
    
    Add a test/dump.data file which contains the result we're expecting from
    xkb_map_get_as_string run on a particularly complex set of keymaps, and
    assert that the string representations are the same.  This means that
    any updates to xkb_map_get_as_string will also need to update the test
    data, but should also ensure that we don't have any more parser
    regressions.
    
    Compared with diff to the output of setxkbmap + xkbcomp for the same
    keymap; seems completely solid.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 64c277d9f21d2639eb2da8caba8362a981c93071
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Jun 4 13:08:01 2012 +0100

    Revert "dump"
    
    (Ahem.)
    
    This reverts commit f43f75fb83e94224000ebc6b0736182546781c5e.

commit dd1ae1e42f2915ac2185afa2c89bd890e1a874a7
Author: Ran Benita <ran234@gmail.com>
Date:   Wed May 23 21:24:50 2012 +0300

    Remove fake support for global group range settings
    
    A symbols file may contain a global, non key specific setting for
    the group out-of-range handling method (wrap, clamp, redirect). Only
    that:
    
    * Its parsed and kept in the SymbolsInfo, but is not otherwise used in
      any way (it's the same in the real xkbcomp).
    * It's not used in any of xkeyboard-config files.
    * It's not mentioned in the xkb specs (only the per-key ones).
    * It doesn't make much sense anyway.
    
    So remove the struct field, and emit an "unsupported, ignored" warning.
    We don't increment the error count because of it, just continue (the
    radio group warning just below is changed to do the same - there's no
    reason to possibly abort the entire thing for it).
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    
    Conflicts:
    
    	src/xkbcomp/symbols.c

commit 98b155c80a0e85009d92f1a61e4d963542c1798e
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Jun 4 13:01:33 2012 +0100

    Symbols: Don't include NoSymbols in the map
    
    Instead of using NoSymbol in the map, we use num_syms == 0 to signify
    the non-presence of a symbol.  So instead of adding NoSymbol mappings
    to the list regardless, detect them and set num_syms == 0.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 28e66a703a56deaedf26a8d3c0f82f99d5e79a6f
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Jun 4 12:54:54 2012 +0100

    Fix multiple errors when merging symbol definitions
    
    We were getting the size calculation wrong, as well as inconsistently
    picking a merge strategy.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit f43f75fb83e94224000ebc6b0736182546781c5e
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Sat Jun 2 15:29:21 2012 +0100

    dump

commit f531d1e16d17f73633ee2cada0ef0f3859b43c0e
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Sat Jun 2 15:25:36 2012 +0100

    keymap-dump: Print NoAction actions too
    
    The failure mode here is a little irritating:
        - server loads map with ISO_Lock action
        - server dumps keymap to string, including:
          interpret ISO_Lock+AnyOfOrAll(None) {
              action= NoAction();
          };
          as we don't (yet) print ISO_Lock actions
        - client parses keymap from string
        - client dumps keymap to string, including:
          interpret ISO_Lock+AnyOfOrAll(None) {
          };
        - this results in a syntax error
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit c87468e926f75fef29e5f6c997d8baa28d8bc8a9
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue May 29 16:15:07 2012 +0100

    stringcomp: NULL-terminate string
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit a3ae0e84e4bf86012d690e1a2cf94f398695dbf0
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue May 29 16:12:54 2012 +0100

    Pass merge down through indicator creation
    
    To avoid using potentially undefined memory.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 243daf80d0deb2fe87757c094c7d84f52525bbd3
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue May 29 15:08:35 2012 +0100

    Add test for xkb_map_new_from_string
    
    Using data from xkb_map_get_as_string.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit ebd397e184a9f0b6127d37fed96e75ed32be8ae1
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri May 25 17:05:39 2012 +0100

    Add xkb_map_get_as_string
    
    Returns a newly-allocated string representing the specified keymap.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 208d957806f5555809c1e511a587211d50c13b70
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri May 25 17:58:32 2012 +0100

    Fix signed vs. unsigned confusion in actions
    
    Some actions could also take relative rather than absolute parameters,
    so they really needed to be signed instead of explicitly unsigned.
    Oops.
    
    Fixes, e.g., action= MovePtr(x=-1,y=+1), which was reported as
    (x=+65535,y=+1).
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit ccc047c4e08e6c7a229d5e9fdee91451e0b07ef2
Author: Ran Benita <ran234@gmail.com>
Date:   Tue May 22 18:00:56 2012 +0300

    compat: use darray for acts and key_acts in the server map
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 89c5e88603f3eaab733e53b6852ee881f3fc1460
Author: Ran Benita <ran234@gmail.com>
Date:   Tue May 22 15:45:42 2012 +0300

    keycodes: use darray in KeyNamesInfo
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 07c88b551bc1a0515252f3519dc4b2f239c86b96
Author: Ran Benita <ran234@gmail.com>
Date:   Tue May 22 15:20:47 2012 +0300

    symbols: use darray for xkb_sym_map
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 4daa34b5a30cb01f2e6755fa70be42dbc54b93f3
Author: Ran Benita <ran234@gmail.com>
Date:   Tue May 22 14:18:48 2012 +0300

    keytypes: use darray for level names
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit ee990d53a579298ed4af6512c44f0365521af4eb
Author: Ran Benita <ran234@gmail.com>
Date:   Tue May 22 14:00:16 2012 +0300

    symbols: use darray for KeyInfo
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit dcdbd149258b0d85db7b58681a804488f242e8c8
Author: Ran Benita <ran234@gmail.com>
Date:   Tue May 22 12:24:54 2012 +0300

    parser: use darray for keysym list
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit c65a3596aed46cf24c1df295c76a3984f90f4137
Author: Ran Benita <ran234@gmail.com>
Date:   Tue May 22 10:59:46 2012 +0300

    keytypes: use darray for xkb_kt_map_entry's
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 374b0c98142dfd4736a935ef0c6055bbf7d23a80
Author: Ran Benita <ran234@gmail.com>
Date:   Tue May 22 08:39:09 2012 +0300

    alloc: use darray in xkb_key_names
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit c2ac3a2b20a3f762a0089b983f0b72032cf8d110
Author: Ran Benita <ran234@gmail.com>
Date:   Tue May 22 08:07:52 2012 +0300

    keytypes: use darray for key types in the client map
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 561504162fe84094f87e8389e1eb249fa31feb8e
Author: Ran Benita <ran234@gmail.com>
Date:   Tue May 22 00:52:28 2012 +0300

    compat: use darray for sym_interprets
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit d0288bb2882cb9c9a90c1366e9c3fa03c1d5b279
Author: Ran Benita <ran234@gmail.com>
Date:   Tue May 22 00:37:53 2012 +0300

    context: use darray for include paths
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit ef51b572aabc785f6c056873c78e34c96f6fa9fb
Author: Ran Benita <ran234@gmail.com>
Date:   Tue May 22 00:26:58 2012 +0300

    atom: use darray for the node_table
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 0c271e093a6ff6b68d24e94bf72b45fd06629ec1
Author: Ran Benita <ran234@gmail.com>
Date:   Tue May 22 00:14:34 2012 +0300

    rules: use darray for input line
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 28bbb7dc5102afd275388f96eea62fe51d78c641
Author: Ran Benita <ran234@gmail.com>
Date:   Mon May 21 23:47:44 2012 +0300

    rules: use darray for rules and groups
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit c815ff96d97590085b7b542dcd12f20c1ccd3018
Author: Ran Benita <ran234@gmail.com>
Date:   Mon May 21 23:33:56 2012 +0300

    Import darray.h for common dynamic array code
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit cb047bb0fcec699cd0d4a37e404a55be775f89e1
Author: Ran Benita <ran234@gmail.com>
Date:   Tue May 22 12:32:06 2012 +0300

    Constify a static variable
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 9e72a6a7af512bb0e0209172066893ed00099854
Author: Ran Benita <ran234@gmail.com>
Date:   Tue May 22 08:04:59 2012 +0300

    Fix incorrect indexing while freeing
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 869c6871906526bcef2c835e2072a1a71ad03c33
Author: Ran Benita <ran234@gmail.com>
Date:   Sat May 19 02:35:15 2012 +0300

    rules: add test
    
    Add a non-extensive test to check that some basic things (e.g. rule
    matching, var substitution, indexes and groups) work as expected.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 68edd5f0df85c0bce5368c9c7aa52be219e50011
Author: Ran Benita <ran234@gmail.com>
Date:   Sat May 19 12:50:47 2012 +0300

    rules: allow wildcard match against "" layout/varaint
    
    Currently, if you pass in an rmlvo with an empty string for layout or
    variant, it would not match layout and variant rules even with
    wildcards. But if the rules file had set an appropriate default, and someone
    passes in the empty string, than he should get the default.
    
    NULL in this case signifies not wanting to match against the layout or
    variant at all, and so the rule should still fail to match NULLs.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit c900c41760c61438b7f0f64399fc198f4aef88d9
Author: Ran Benita <ran234@gmail.com>
Date:   Sat May 19 01:00:52 2012 +0300

    rules: remove struct var_defs
    
    We can just use struct xkb_rule_names which we already receive as an
    argument.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 3d28b6d11673ddb97ffbe8f59b212d871d7f4b47
Author: Ran Benita <ran234@gmail.com>
Date:   Sat May 19 00:53:57 2012 +0300

    rules: reformat components_from_rules
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 7895eeb8ce4ebf5bf664530c6732f4c2fdf7abd7
Author: Ran Benita <ran234@gmail.com>
Date:   Fri May 18 19:39:25 2012 +0300

    rules: reformat LoadRules and XkbRF_Free
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit d18cf315951de3e734facb38261bea643579dacd
Author: Ran Benita <ran234@gmail.com>
Date:   Fri May 18 19:37:01 2012 +0300

    rules: remove unused struct describe_vars
    
    It's not actually used for anything.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 56b125fcc7d2c91191453415efe60179feae08e8
Author: Ran Benita <ran234@gmail.com>
Date:   Fri May 18 18:38:06 2012 +0300

    rules: reformat AddRule and AddGroup
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit f790257fa72753755d1acc74d5fed78293574f59
Author: Ran Benita <ran234@gmail.com>
Date:   Fri May 18 18:34:47 2012 +0300

    rules: reformat GetComponents
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 52939d4beac8387bf72126bfcf35020bdb7dcf9c
Author: Ran Benita <ran234@gmail.com>
Date:   Fri May 18 18:25:59 2012 +0300

    rules: reformat SubstituteVars
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a9477b57543982cc89598cf2ba68ee7b0164bf01
Author: Ran Benita <ran234@gmail.com>
Date:   Fri May 18 12:02:29 2012 +0300

    rules: reformat CheckApplyRules and ApplyPartialMatches
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a47dd25219edb2eef741363b423c0cb5fada4d7c
Author: Ran Benita <ran234@gmail.com>
Date:   Fri May 18 10:43:24 2012 +0300

    rules: reformat CheckGroup and CheckApplyRule
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 18d331b86b4942ba54fe087ca07e47c9383d768b
Author: Ran Benita <ran234@gmail.com>
Date:   Fri May 18 11:01:20 2012 +0300

    rules: rewrite MatchOneOf
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit c02c9ab2f29848480f668490b2675f82d0db1d4c
Author: Ran Benita <ran234@gmail.com>
Date:   Fri May 18 10:33:38 2012 +0300

    rules: reformat ApplyRule
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 06205717c347e4d1130b102f5d226ac65cba3a10
Author: Ran Benita <ran234@gmail.com>
Date:   Fri May 18 02:53:29 2012 +0300

    rules: reformat MakeMultiDefs
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit f7de62861fa44dcc00aa71e0c4c30557c78819c4
Author: Ran Benita <ran234@gmail.com>
Date:   Fri May 18 02:20:14 2012 +0300

    rules: use asprintf instead of _Concat function
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 5f54764d0d493e9aa3dc590c267ed8379d2adc12
Author: Ran Benita <ran234@gmail.com>
Date:   Thu May 17 16:15:46 2012 +0300

    rules: reformat CheckLine and break into several functions
    
    And remove struct file_spec which is really unneeded. Should be
    slightly more clear now.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 2df35895b5204e2a06e39d2b551c8cb433195127
Author: Ran Benita <ran234@gmail.com>
Date:   Thu May 17 14:18:31 2012 +0300

    rules: reformat SetUpRemap and struct remap_spec
    
    Rename to more descriptive names and reformat.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit b8ae68c2a345934902abcce6ea15a46b39d3ff07
Author: Ran Benita <ran234@gmail.com>
Date:   Thu May 17 13:55:38 2012 +0300

    rules: rewrite get_index to use sscanf
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit ef76ba97b3295d2fbfc483f15358cf2b9213ec0b
Author: Ran Benita <ran234@gmail.com>
Date:   Wed May 16 10:09:03 2012 +0300

    rules: don't typedef the structs and rename them
    
    The long prefix is unnecessary now that they are all private.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 478a6a31d5b54888fe160150c9e1a21f197ef820
Author: Ran Benita <ran234@gmail.com>
Date:   Wed May 16 09:49:32 2012 +0300

    rules: reformat input line handling
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 72d1f2edef1a378a4081cdf3e1274bf8ee19be4d
Author: Ran Benita <ran234@gmail.com>
Date:   Wed May 16 09:39:01 2012 +0300

    rules: don't use custom logging functions
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit b73bd676156fc36fe1859661348511bdd55610d8
Author: Ran Benita <ran234@gmail.com>
Date:   Sun May 13 09:49:08 2012 +0300

    rules: only export a single function
    
    Really all we need from this file is a way to get xkb_component_names
    from an xkb_rule_names, which is now the only thing being exposed. This
    should allow for some much needed refactoring of this code.
    
    Since this is only used by xkbcomp.c and uses xkbcomp functions, also
    move rules.{c,h} under the xkbcomp dir.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 0c25ebf341a2a63fc5e9c3ad5bd196e5b575e3d5
Author: Ran Benita <ran234@gmail.com>
Date:   Fri May 11 10:04:26 2012 +0300

    rules: remove unused struct fields and use size_t
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit beccc375095c921b8c212b0f992ae88c87ca95ca
Author: Ran Benita <ran234@gmail.com>
Date:   Fri May 18 18:09:50 2012 +0300

    Don't run the benchmark by default
    
    For people running 'make check' on every compilation, this can be
    a nuisance.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit db3e8f2c0842aeaf1d00177c248ff908073fe73a
Author: Ran Benita <ran234@gmail.com>
Date:   Sun May 13 10:14:10 2012 +0300

    Create path.h for the path.c functions
    
    No need to stash them in xkbcomp-priv.h; files which need the functions
    should explicitly include them.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit b89b8e70237f401aa39b963313324f60396bdda8
Author: Ran Benita <ran234@gmail.com>
Date:   Sun May 13 23:31:59 2012 +0300

    Change xkb_map_new_from_fd to use FILE*
    
    i.e. xkb_map_new_from_file. The reason is that flex only works with
    FILE's, so we must use fdopen on the file descriptor; but to avoid a
    memory leak, we must also fclose() it, which, in turn, closes the file
    descriptor itself.
    
    Either way is not acceptable, so we can either:
    * dup() the fd and use fdopen on that, or
    * have the user call fdopen on his own, and accept a FILE* instead of an
      fd.
    
    The second one seems better, and is standard C, so why not. We must add
    stdio.h to xkbcommon.h though, which is regrettable, but not a big deal.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit d15fa57a4b1402a6a419ed34f0fc309f0a26df4f
Author: Ran Benita <ran234@gmail.com>
Date:   Sun May 13 17:21:02 2012 +0300

    Remove FileHandler callback argument
    
    It's unneeded; the same function is always passed.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit e82bb5c04392869d8d49c8d1b5a9caba2ab29d37
Author: Ran Benita <ran234@gmail.com>
Date:   Sun May 13 17:23:28 2012 +0300

    Remove unused allowNone from KeyInfo
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 5200132f4d11e01e7d1e9ae6439f8c5ce8bd1e9e
Author: Ran Benita <ran234@gmail.com>
Date:   Sun May 13 23:13:10 2012 +0300

    Revert "Fix KeyInfo's syms array size calculation"
    
    This partly reverts commit 8feba630fa7a4b720c42a9b5b4e4280b0e17a500.
    
    This seems to fix valgrind errors:
    ==9581== Invalid read of size 4
    ==9581==    at 0x4E50928: MergeKeyGroups (symbols.c:544)
    ==9581==    by 0x4E510F3: MergeKeys (symbols.c:644)
    ==9581==    by 0x4E514C6: AddKeySymbols (symbols.c:722)
    ==9581==    by 0x4E51A3F: MergeIncludedSymbols (symbols.c:854)
    ==9581==    by 0x4E51E97: HandleIncludeSymbols (symbols.c:952)
    ==9581==    by 0x4E53D75: HandleSymbolsFile (symbols.c:1619)
    ==9581==    by 0x4E55A0B: CompileSymbols (symbols.c:2187)
    ==9581==    by 0x4E4056C: CompileKeymap (keymap.c:160)
    ==9581==    by 0x4E56953: compile_keymap (xkbcomp.c:149)
    ==9581==    by 0x4E56AC5: xkb_map_new_from_kccgst (xkbcomp.c:195)
    ==9581==    by 0x4009D7: test_names (namescomp.c:56)
    ==9581==    by 0x400A55: main (namescomp.c:75)
    ==9581==  Address 0x5729b04 is 0 bytes after a block of size 4 alloc'd
    ==9581==    at 0x4C29024: calloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==9581==    by 0x4E5C37B: recalloc (utils.c:41)
    ==9581==    by 0x4E4FF50: ResizeKeyGroup (symbols.c:356)
    ==9581==    by 0x4E5229E: AddSymbolsToKey (symbols.c:1058)
    ==9581==    by 0x4E52ABB: SetSymbolsField (symbols.c:1214)
    ==9581==    by 0x4E536C7: HandleSymbolsBody (symbols.c:1481)
    ==9581==    by 0x4E53A63: HandleSymbolsDef (symbols.c:1543)
    ==9581==    by 0x4E53DAD: HandleSymbolsFile (symbols.c:1623)
    ==9581==    by 0x4E51CA4: HandleIncludeSymbols (symbols.c:909)
    ==9581==    by 0x4E53D75: HandleSymbolsFile (symbols.c:1619)
    ==9581==    by 0x4E51E74: HandleIncludeSymbols (symbols.c:951)
    ==9581==    by 0x4E53D75: HandleSymbolsFile (symbols.c:1619)
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 75ff2cefdaf03008dcbe5d721315851eb46dfabc
Author: Ran Benita <ran234@gmail.com>
Date:   Sun May 13 18:45:43 2012 +0300

    Various static analyzer fixes
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit b571b8345928056aaf172d01a9f8c0aa84e484cf
Author: Ran Benita <ran234@gmail.com>
Date:   Sun May 13 10:38:51 2012 +0300

    Fix a memleak
    
    Introduced in 38cb639082ec4b31725d4ce4e35af63938691631.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit ab82e0ebc388dfc494bda3123517ac7608dde865
Author: Ran Benita <ran234@gmail.com>
Date:   Thu May 10 01:02:29 2012 +0300

    Fix configure check for xkbparse.c instead of parser.c
    
    This obscure test is easy to miss.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 8ca8f05aab86423c2495cd917489becfecca4632
Author: Pekka Paalanen <ppaalanen@gmail.com>
Date:   Tue May 15 15:23:42 2012 +0300

    Add xkbcommon-uninstalled.pc

commit 8bdef139a62c74d002a976e830f9d8e09628aea3
Author: Pekka Paalanen <ppaalanen@gmail.com>
Date:   Tue May 15 15:23:41 2012 +0300

    Use eaccess() only if available
    
    Fixes build on Android.
    
    Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>

commit cb804a9d4ed2cf3b8501098242ad40be91f46bdb
Author: Pekka Paalanen <ppaalanen@gmail.com>
Date:   Tue May 15 15:23:40 2012 +0300

    Fix out-of-tree build for config.h
    
    config.h appreas in the build dir, not src dir.
    
    Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>

commit 661cb84051d025d80aad54bce2882762cb28fbe7
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri May 18 00:56:36 2012 +0100

    Add benchmarking test to rulescomp
    
    Apparently it only takes us 8ms to build keymaps.  Nice!
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 3fbc277bb8717d031f9c863935460b895c3d3beb
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Fri May 11 16:14:27 2012 +0100

    Use $(AM_V_GEN) to prettyfi makekeys step

commit 7b00485a6bc2facdb56ccdaa12b4900f118d66b5
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri May 11 15:03:43 2012 +0100

    Rename 'ctx' back to 'context' in external API
    
    Still keep things as 'ctx' internally so we don't have to worry about
    typing it too often, but rename the user-visible API back as it was
    kinda ugly.
    
    This partially reverts e7bb1e5f.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit f95b41131d4c1815ee4643f5addb1d2d1ad68728
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri May 11 14:28:54 2012 +0100

    Add xkbcommon-keysyms.h to Makefile.am
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 471e112208e9d828f90c37cfa9608fd1aa20fcb3
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed May 9 20:52:33 2012 +0100

    Document that xkb_state_get_map doesn't take a ref
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 7a1201bdf2386dde5c5c919f2dab55b91c9cabc0
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed May 9 20:51:37 2012 +0100

    Change xkb_key_get_syms to just return a bare int
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 46441b1184dfa8553409d493ae6336aabb900d79
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed May 9 20:49:04 2012 +0100

    Move KcCGST API to internal-only
    
    And don't export it.  We don't need it for X11 support, let alone
    anything else.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 2761b1a3327fa70d64e0da5e1a6555b7508c4597
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed May 9 20:20:12 2012 +0100

    Rename serialise to serialize
    
    Yes, British English is correct, but unfortunately we've lost that
    battle.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 5a3771d149dd12266ea01c13c56de0277ba901c8
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed May 9 20:18:30 2012 +0100

    Add common LED names to xkbcommon-names.h
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 693d0578f258eab612615e1a3d14b28f6e6825d8
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed May 9 20:17:13 2012 +0100

    Include xkbcommon-names.h from xkbcommon.h
    
    So clients only have one file to include.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 3e3ddd43e93f615bd783cde723032d14c834f474
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed May 9 20:12:18 2012 +0100

    Remove keycode_range_is_legal
    
    It was a pretty pointless check.  Also sanitise the _x11 variant to
    actually do what it says on the box.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 6433d72e7c13b7be5ed7bf227441b68b909ef46d
Merge: 5e59ef3 ace1e5d
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed May 9 20:12:12 2012 +0100

    Merge remote-tracking branch 'krh/keysyms'
    
    Conflicts:
    	src/keysym.c
    	src/misc.c
    	src/text.h
    	src/xkbcomp/expr.c
    	src/xkbcomp/parser.y
    	src/xkbcomp/parseutils.c
    	src/xkbcomp/symbols.c
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit ace1e5df6d2f9cd7ecf5fa5088d5c79fbd1edd64
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Wed May 9 09:05:00 2012 -0400

    Use our own keysyms

commit c6897d2698eaf3716b522bb207b8e052f5722601
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Wed May 9 08:33:04 2012 -0400

    Add XKB version of X11 keysyms
    
    With this we're now completely standalone.
    
    add vendor keysyms

commit 5e59ef3f4707c673d325006b662ffdff5d65c7d1
Author: Ran Benita <ran234@gmail.com>
Date:   Wed May 9 17:54:37 2012 +0300

    Remove support for xkb_layout and xkb_semantics file types
    
    These are two aggregate file types which are not used anywhere. We
    maintain useful-enough backward compatibility in the parser, by treating
    them as xkb_keymap. The keymap type allows for all types of components,
    so they will still compile fine if they ever come up.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit e7bb1e5fd99438b69bb7ce8c29de381d55c95b96
Author: Ran Benita <ran234@gmail.com>
Date:   Wed May 9 15:03:11 2012 +0300

    Shorten context to ctx
    
    (This breaks the API.)
    
    "context" is really annoying to type all the time (and we're going to
    type it a lot more :). "ctx" is clear, concise and common in many other
    libraries. Use it!
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    
    [daniels: Fix for xkb -> keymap change.]

commit 699a0b841c26020815cf276980ad5ccaded7494a
Author: Ran Benita <ran234@gmail.com>
Date:   Wed May 9 14:02:26 2012 +0300

    Contextualize the atom table
    
    Each context gets its own table, i.e. interning a string in one context
    does not affect any other context.
    
    The existing xkb_atom_* functions are turned into wrappers around a new
    standalone atom_table object.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    
    [daniels: Updated for xkb -> keymap.]

commit cdd2906de3db99f63c9dba0de27d8299198d2517
Author: Ran Benita <ran234@gmail.com>
Date:   Wed May 9 13:50:05 2012 +0300

    Make the context available for XkbcAtomText
    
    And rename the function to xkb_atom_text.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    
    [daniels: Updated for xkb -> keymap.]

commit 8d680e808adf6cfa7b72501052158e03af0890cb
Author: Ran Benita <ran234@gmail.com>
Date:   Wed May 9 12:01:03 2012 +0300

    Make the context available for XkbcAtomGetString
    
    In preparation of contextualizing atom handling.
    Since we touch every function call, we also rename the function to
    xkb_atom_strdup to match xkb_atom_intern, and be more descriptive.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    
    [daniels: Updated for xkb -> keymap.]

commit c117318ff11886e7aad42031c630eb4cc9a13a83
Author: Ran Benita <ran234@gmail.com>
Date:   Wed May 9 11:47:20 2012 +0300

    Make the context available to xkb_intern_atom
    
    In preparation of contextualizing the atom table.
    Since we touch every function call, also rename the function to
    xkb_atom_intern, to match better with the rest (which will also be
    renamed).
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    
    [daniels: Fixed for 'xkb' -> 'keymap'.]

commit 4aef083e46568664708f57b5aaa356e858c1f4de
Author: Ran Benita <ran234@gmail.com>
Date:   Wed May 9 11:29:04 2012 +0300

    Contextualize XkbFile IDs
    
    Currently the IDs are assigned from a static variable inside
    CreateXKBFile. This can lead to some unpleasantness with threads, so
    maintain the counter in the context instead.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 64aa5c95ed4507f88aa00d397e793af73dd812f4
Author: Ran Benita <ran234@gmail.com>
Date:   Wed May 9 11:12:30 2012 +0300

    Make the context available to the parser
    
    We will need the context to remove some global state.
    Also make the Parse* function just return bool while wer'e at it.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit bdbb3ac455573413822f2314eb3ea9c76165991a
Author: Pekka Paalanen <ppaalanen@gmail.com>
Date:   Tue May 8 11:46:58 2012 +0300

    makekeys: fix cross-compilation
    
    makekeys must be built with the build-native compiler, not with $(CC)
    which is the cross-compiler. The only sane way to achieve this seems to
    be to use a separate Makefile.am for it.
    
    This patch fixes the problem apparently caused by:
    
    commit b5efe41f190cbb76eb1ca8ddf0c96990ddb83704
    Author: Ran Benita <ran234@gmail.com>
    Date:   Sat Mar 24 04:48:31 2012 +0200
    
        Make build non-recursive
    
    There is no such thing as makekeys_makekeys_CC in automake.
    
    Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>

commit f9fa740fd53e3b57374b674527b2a5a55431349b
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed May 9 15:23:44 2012 +0100

    Make build directory includes more explicit
    
    We depend on parser.h which is generated by flex during the build, so
    use an explicit $(top_builddir) rather than a relative path.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 38cb639082ec4b31725d4ce4e35af63938691631
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed May 9 15:15:30 2012 +0100

    Change all 'xkb' xkb_keymap names to 'keymap'
    
    To make it a bit more clear what it actually is.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit e1af48bc04c4191cd3cf2cd457ee37c6b6ac7e10
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed May 9 13:22:34 2012 +0100

    Rename keysym <-> string API
    
    Change them to refer to the string representation of the keysym's name
    as a name rather than a string, since we want to add API to get the
    Unicode printable representation as well.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 124e62e48f22dad7eb87edbaf7ac6a539a1aab5f
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed May 9 01:06:10 2012 +0100

    Add multiple modifier state matching API
    
    Two new calls allow users to test the exact modifier state, including
    verifying that no other modifiers but the ones you wanted are down.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 74a197d2713fe1e04c2a3f116f1aa10264360653
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue May 8 17:59:35 2012 +0100

    Add pre-defined names database
    
    xkbcommon-names.h right now just contains a set of hardcoded modifier
    strings that are most commonly used for the usual modifiers.  Provide
    definitions of these so people don't have to worry about typoing a
    string or mixing up Mod1 and Mod4.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 2a0f1780f97077ffd2cff7683cb31b352b041944
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue May 8 17:52:45 2012 +0100

    Add context flag to inhibit default include paths
    
    Which will make the context start with no include paths at all.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit c3584280092e251d572ada8d988cf0e46ae8e88f
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue May 8 17:51:16 2012 +0100

    Add flags to context creation
    
    None defined as yet, but why not.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit b537b5524a238645167f370c73afa8686442463f
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue May 8 17:48:29 2012 +0100

    Add flags to keymap compilation entrypoints
    
    No use as yet, but might as well ...
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 1928397a21ff3d0616b0c35fb286b2876d51e6ba
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue May 8 17:47:54 2012 +0100

    Reintroduce $(builddir)/src/xkbcomp include
    
    This is required for parser.h, which is autogenerated and thus only in
    the build directory.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit b610b2b953be5dcf3983857a2ce0279c2ea86463
Author: Ran Benita <ran234@gmail.com>
Date:   Tue May 8 14:52:23 2012 +0300

    Rename XKBcommonint.h to xkb-priv.h and use it
    
    Make the files in the src/* directory use their own header or a
    consilidated private header. This makes the file dependencies clearer.
    
    Also drop the pointless "xkb" file name prefix, add split a few
    declarations to their own files (atom.h and text.h).
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 33273304f2a5526d1fbae0837b0ab58c2dc2db4c
Author: Ran Benita <ran234@gmail.com>
Date:   Tue May 8 13:57:07 2012 +0300

    Rename xkbcomp/misc.h to xkbcomp-priv.h and use it
    
    The include dependencies were quite convoluted, where you change the
    order and get a ton of errors. Instead, change one file to act as the
    internal interface for the xkbcomp files, and make every file use it.
    
    Also drop the pointless "xkb" prefix to file names.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit dccdf32cc4dddc694b057296e8d6a4fb0506eb7c
Author: Ran Benita <ran234@gmail.com>
Date:   Tue May 8 01:08:07 2012 +0300

    Refactor Compile<component> functions
    
    The error handling was not ideal, so unify it. Also makes the functions
    a bit easier to read.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 5eb0a70e61528adba4f14fe1c7e058cc01378c4c
Author: Ran Benita <ran234@gmail.com>
Date:   Mon May 7 14:44:30 2012 +0300

    Don't use typeof
    
    clang complains with the xorg-macros warning flags:
    src/context.c:58:36: error: extension used [-Werror,-pedantic,-Wlanguage-extension-token]
                                       typeof(new_paths));
    
    This was not entirely correct, too. So bring back the casts to the
    results of the allocation macros; might as well make them a bit more
    type safe.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit fbfbf0aa4bf4c2ca89226f6048ba08a3813edea1
Author: Ran Benita <ran234@gmail.com>
Date:   Mon May 7 14:08:34 2012 +0300

    Remove left over filecomp.sh file
    
    Should have removed it in a previous commit.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 40b56b0fe381044e3a8d28cb10569fd6e8075ae2
Author: Ran Benita <ran234@gmail.com>
Date:   Mon May 7 14:23:08 2012 +0300

    Update .gitignore for automake 1.12
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a1e07fb6f63e2657d78e4cd58dc72eaead2c1be6
Author: Ran Benita <ran234@gmail.com>
Date:   Mon May 7 15:07:41 2012 +0300

    Uncomment sections of test/rulescomp.c
    
    Fixes an 'unused' warning. There seems to be nothing wrong with these
    sections though, all the tests pass.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit b41c77f8a809e3d7747b7fcbb4d3c5e9b6a1a149
Author: Ran Benita <ran234@gmail.com>
Date:   Mon May 7 14:54:12 2012 +0300

    Revert "Unconstify xkb_rules_names"
    
    This reverts commit d007cd0a1f3f4b9c927175771ff79aae6fe4ab8b.
    
    This is in fact more restrictive, because it breaks the (common) case
    where the strings are const themselved, e.g. "evdev", "us", etc. As is
    you must either duplicate the strings or suppress the warnings.
    
    If the user needs to retain the non-const strings, he should instead
    just keep them in some other struct and use xkb_rules_names just as
    a temporary parameter for xkb_map_new_from_names. Mildly annoying but
    acceptable.

commit 9797c918cab7ebaa85762a707995b464e5a5ae40
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon May 7 17:30:47 2012 +0100

    Use AC_ARG_VAR for X11 header and XKB paths
    
    And don't call pkg-config unless we need to.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 70dfe166f86c133f06d831ef39213f14e4e15670
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon May 7 14:23:46 2012 +0100

    Rename YYLTYPE to struct YYLTYPE
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 409ec8a12ef54f3eea704a8234e4cd26928bf87e
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Apr 11 02:02:45 2012 +0300

    Merge src/alloc.c and src/malloc.c
    
    The two files do exactly the same sort of things, without any discernible
    reason for splitting them.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    
    [daniels: Updated for xkb_desc -> xkb_keymap changes.]

commit aff531fb4db5bb5ae266b55e1f81abb939e4d059
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Apr 11 02:28:57 2012 +0300

    Remove unused stuff from xkbrules.h
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 62a75dc17994933caa1bba42ccf8d1c78f07a373
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Apr 10 23:08:49 2012 +0300

    Remove unused stuff from XKBcommonint.h
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 12b3495ddfbd69b2b785f26c51dbe78876c9dc00
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Apr 11 01:55:50 2012 +0300

    Remove unused 'which' and 'merge' arguments
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    
    [daniels: Updated for xkb_desc -> xkb_keymap changes.]

commit 793908a046d3e5f32f670b891c85d371b6198e83
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Apr 11 19:58:03 2012 +0300

    Remove unused 'compiled' field in XkbFile
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 5fb494eca960f790c18623e28b9587d43ebeeae4
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Apr 11 14:13:24 2012 +0300

    Remove unused debugging function
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit afa34f3d2f94d93292a70c18ff8eba44f19fbfb6
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Apr 11 02:10:35 2012 +0300

    Remove unused function XkbcNameMatchesPattern
    
    Because the function is recursive, the compiler didn't say anything, eh.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 522be162b274897f9cb9d682312b150b27daa6ff
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Apr 10 22:04:05 2012 +0300

    Use LT_INIT instead of deprecated AC_PROG_LIBTOOL
    
    And add some warnings to the autoreconf step, for the developers to
    see.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a641a1859b862b1324983a5e2ef8666c29539f87
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Apr 6 03:38:55 2012 +0300

    Use stdbool.h
    
    'Cause defining your own True and False is so 1990's.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    
    [daniels: Fixed for xkb_desc -> xkb_keymap changes.]

commit a39ed85f5600f5f8b15decb5d16931c91ed0a7a1
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Apr 5 11:24:39 2012 +0300

    Fix formatting in xkbcomp headers
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    
    [daniels: Fixed for xkb_desc -> xkb_keymap change.]

commit 1f81c0e163553deced177225952c17378dcf7c44
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Apr 26 16:02:49 2012 +0200

    Dump include paths when we can't find rules
    
    Since the most common failure mode here is a failure to properly set the
    XKB data path, dump the include path so people at least have a clue
    where to look.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit a1c08536a5b2a2a053d28bc45e603dde3a1cddd3
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
Date:   Thu Apr 26 13:49:00 2012 +0200

    Include strings.h in XKBcommonint.h for strcasecmp etc
    
    POSIX specifies that these functions require <strings.h>, but we were
    only including <string.h>.  It did work, but still.
    
    Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
    Reviewed-by: Daniel Stone <daniel@fooishbar.org>

commit 4b49e0a117efe652c97afdd585ab899e0a6b9189
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Mar 31 02:44:39 2012 +0300

    Overhaul test suite
    
    Rewrite all of the current tests in the following ways:
    - Instead of the current mix of C and shell, just use single-process
      pure C file per test. All of the .sh files are removed, but everything
      that was tested is ported.
    - Instead of handling the test logs ourselves, use Automake's
      "parallel-test" mechanism. This will create a single log file for each
      test with it's stdout+stderr, and a top level "test-suite.log" file
      for all the failed tests.
    - The "parallel-tests" directive also makes the test run in parallel,
      so "make check" runs faster.
    - Also use the "color-tests" directive to have the "make check" output
      colorized. Who doesn't like to see PASS in green?
    - All of the test data files are moved into the test/data subdirectory.
      That way we can just put the directory in EXTRA_DIST and forget about
      it.
    - The test/Makefile.am file is consolidated into the main Makefile.am,
      for a completely non-recursive build.
    
    Right now the tests are completely independent and just use simple
    assert()'s. More sophistication can be added as needed.
    
    It should also be noted that it's still possible to use shell, python,
    etc. if a test wants more flexibility than C can provide, just do as
    before.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    
    [daniels: Updated for xkb_keymap changes.]

commit b1e49ff98058e5999cb503ec79ce7223485caac4
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Apr 6 04:33:43 2012 +0300

    Reformat actionHandler dispatch table
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 1b9635dfb51f78783d6c11d10773b998236d4ce8
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Apr 8 02:08:37 2012 +0300

    Add xkb_state_get_map()
    
    This is very useful because it avoids redundent pointers in structs
    and/or parameter passing in the application.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 8fbd44fde6c54e5f646e619e51a6e846e3c6f95b
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Apr 6 03:12:50 2012 +0300

    Implicitly include config.h in all files
    
    The definitions in config.h should be available in all files an
    implementation detail; it can be included through the build system
    instead of having each file pull it every time.
    
    This is especially helpful with AC_USE_SYSTEM_EXTENSIONS, as _GNU_SOURCE
    and friends can have an effect by merely being defined, which can lead
    to some confusion if its effective for only half the files.
    
    And we don't really support a build _without_ config.h; so, one less
    thing to worry about.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 5df53e494423cecff14d3773405b4d2d28130485
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Apr 5 10:52:47 2012 +0300

    Remove xproto and kbproto from pkg-config file
    
    These are no longer needed for using the library, only building it. Most
    users would still want xproto though, for the keysym definitions.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 18e6a6a43e4e4711eedc149875c064f3582948a7
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Apr 5 10:47:43 2012 +0300

    Remove Xfuncproto.h and XKB.h from xkbcommon/xkbcommon.h
    
    The kbproto header is already not needed here anymore.
    
    Move the _X_EXPORT's to the corresponding function definitions, and use
    straight extern "C" clauses instead of _XFUNCPROTOBEGIN/END.
    
    It also makes more sense to have the EXPORT's in the source files, as it
    provides some documentation to the reader, whereas in the header it's
    obvious.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    
    [daniels: Updated for xkb_keymap changes.]

commit 073a21076c44aecb5439ce3cf884b3c04079d14c
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Apr 8 15:40:12 2012 +0300

    Constify the syms_out argument to xkb_key_get_syms()
    
    The caller should not mess around with these as they come directly from
    our internal structs.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 467d7bb64eb8e77304fc6c91f612ec7b8036e475
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Apr 5 10:13:24 2012 +0300

    Implement missing xkb_state_ref and add return value
    
    xkb_state_ref was missing.
    
    Also modify the _ref functions to return the object instead of being
    void. This is a useful idiom:
    
        struct my_object my_object_new(struct xkb_state *state)
        {
            [...]
            my_object->state = xkb_state_ref(state);
            [...]
        }
    
    Essentially "taking" a reference, such that you don't forget to
    increment it and it's one line less (see example in our own code).
    
    A case could also be made for _unref to return the object or NULL, but
    this is quite uncommon.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    
    [daniels: Updated for xkb_keymap changes.]

commit b08629f92b20a470cfd11ad03fe4d9085a2612d2
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Apr 6 05:09:17 2012 +0300

    Do not enable yacc trace facility unconditionally
    
    Define DEBUG and set yydebug if you want that.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 913e0740cbfc64cb60927f7f11fb0220b568d3bf
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Mar 31 01:18:55 2012 +0300

    Constify a global table and function arguments
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit d116aaef9fc2e8014685fee21bc42c0de227313e
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Apr 6 05:02:35 2012 +0300

    Remove unused struct definition
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 28011e71ad4e9ecd9cc309237feff69762b56579
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Apr 6 04:20:35 2012 +0300

    Replace remaining use of Atom instead of xkb_atom_t
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit e9537d50d0239c8444de74f85ff063e629242c67
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Apr 8 20:58:39 2012 +0300

    Fix possible overflow in scanner
    
    Also reduce the size of scanBuf given that it's allocated on the stack,
    and 1024 is enough.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 8feba630fa7a4b720c42a9b5b4e4280b0e17a500
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Apr 8 18:46:58 2012 +0300

    Fix KeyInfo's syms array size calculation
    
    When merging group info from two KeyInfo's, the new size of the keysym
    array was off. Fix it to match how it is used a few lines below.
    
    There are also some peripheral fixes, and some comments (took me a
    few minutes to get what's going on).
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 518debb3bc0db2cb8036144ddfc22b81cfbb6f83
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Apr 8 15:38:04 2012 +0300

    Set xorg-macros CFLAGS correctly
    
    A previous commit messed up all warning flags. Oops.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 2590b5a15d9f685dacce79d8d4bc23906008036b
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Apr 8 15:37:36 2012 +0300

    Fix compiler warnings
    
    (They were not reported, see next commit).
    The reset function declaration didn't match its name in the definition;
    the _defaults variant matches better with the rest.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    
    [daniels: Updated to current master.]

commit d007cd0a1f3f4b9c927175771ff79aae6fe4ab8b
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Apr 3 17:08:57 2012 +0100

    Unconstify xkb_rules_names
    
    Since we never return an xkb_rules_names and it's all user-provided
    strings, seems a bit harsh to have it const.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit ef88c7efabf98ea1fcee29e026f96b3f31b94521
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Apr 3 15:14:16 2012 +0100

    Rename xkb_desc to xkb_keymap
    
    struct xkb_desc was just a hangover from the old XkbDescRec, which isn't
    a very descriptive name.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit bc872252f35bbb688b02f5ba5c5991ace2e6ef76
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Apr 3 14:29:57 2012 +0100

    Use xorg CFLAGS and fix AC_USE_SYSTEM_EXTENSIONS
    
    autotools was warning that AC_USE_SYSTEM_EXTENSIONS was being called too
    late, so move it earlier.  Also shove BASE_CFLAGS into CFLAGS so we get
    all the added warning flags from xorg.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 632d9f0336a3fb0721fbecc34b67e15d0ddbc69b
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Apr 3 14:26:04 2012 +0100

    Eliminate remaining gcc warnings
    
    Various one-liners (mostly removing unused variables) to make the code
    safe for the full set of warnings used by the xorg macros.
    
    On Debian-based systems, flex generates incorrect code resulting in two
    warnings about yy_getcolumn and yy_setcolumn having no previous
    declaration despite being non-static.  Fedora carries a patch to fix
    this, and a bug has been filed on Debian's flex to add the patch:
    http://bugs.debian.org/667027
    
    Aside from this, it's now safe for --enable-strict-compilation.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 495d87b06d19380e22ca100b7e48a7c8ef5dea39
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Apr 3 13:57:44 2012 +0100

    Don't parse nonsense Unicode/hex keycodes
    
    If a keysym was specified as "U1039andsomeextrastuffontheend", return
    NoSymbol rather than 0x10001039; similarly, return NoSymbol for
    "0xdeadbeefhitherehowsyourdaybeen" rather than 0xdeadbeef.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 151fb4fc6dfcecb1abef53bb02d51c6057998de9
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Apr 3 13:47:08 2012 +0100

    Remove unused device_spec
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit f249919ec66d0d9b9997e0b7d5cdbd491322cf9e
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Apr 3 13:44:21 2012 +0100

    include resets group compatibility modifiers #43091
    
    This change makes sure that include does not overwrite previous
    compatibility modifier settings when the included files does not
    explicitly specify them.
    
    Signed-off-by: Andreas Wettstein <wettstein509@solnet.ch>
    Reviewed-by: Daniel Stone <daniel@fooishbar.org>
    
    [Cross-picked from xkbcomp commit 14470719.]

commit 0002b8524cccafc8096d80398c5d46c2785dc5d8
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Apr 3 13:01:10 2012 +0100

    Add cscope output to .gitignore
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 69111405b0ca02d79238f05979f11cf5f0e02686
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Apr 3 12:48:05 2012 +0100

    Properly document xkb_key_get_syms
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit aeaa623d27b18339cab42aa52e4c10acb8ff87a8
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Mar 31 01:18:55 2012 +0300

    Constify a global table
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit c83043b3c125dbe769ab09f9111deca5e3b33931
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Mar 31 01:26:15 2012 +0300

    Make temporary fix for stale xkb_atoms
    
    When xkb_free_keymap is called the atoms are all free'd, but action.c
    keeps a global copy of interned "true" and "false", which remains stale.
    
    The correct fix is to remove the need for the ActionsInit function
    entirely.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 3c9493795b3b632298921e6399d67b15e052f655
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Mar 31 00:02:12 2012 +0300

    Fix bugs to allow multiple keymaps in one process
    
    These were several initializations that were forgotten in the previous
    memory leak fixes.
    
    Now several xkb_desc's can coexist (relatively) peacefully.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    
    [daniels: Only the atom.c is relevant with the new context API.]

commit ffb610c943154afdcaad949e7b0db93fd9047b2b
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Mar 31 02:26:24 2012 +0300

    Remove useless check from xkb_intern_atom
    
    The "makeit" variable is always true. Remove it and de-indent.
    (Also change the type of the "len" variable to size_t to avoid some
    useless casting).
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 7a7ec9b14a11a986cd91a4faab6af7f4367a3a16
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Mar 31 02:30:33 2012 +0300

    Avoid leak in CompileKeymap error path
    
    The NULL check is unneeded, and prevented the atoms from being free'd.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    
    [daniels: Updated for xkb_map_unref.]

commit 5c5f7fcb7c35a46efd05e840e593871538242b78
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Apr 1 16:48:34 2012 +0300

    makekeys: use correct format strings
    
    The new glibc (2.15) appear to cause trouble, particularly the sscanf
    call, where makekeys will output empty hash tables. Using the appropriate
    macros from inttypes.h makes it work again.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 84ec6b61a76a753f72eecec825fd0736d5b0070c
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Apr 1 16:51:48 2012 +0300

    Add a NULL check before before strcmp'ing
    
    The names array can have NULL entries for some virtual modifier indexes.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 9813778e732180407adb44766cc42fa4fe610f6a
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Apr 1 16:57:31 2012 +0300

    makekeys: free strings before exiting
    
    Just to make valgrind happy.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 8f2c9597ba5617d28857bdd8ffeeea7167c72467
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Apr 1 17:56:17 2012 +0300

    Use straight strtok_r instead of wrapper
    
    strtok_r is POSIX-2001 and should be fine.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit fb606b06a9aedd668f233ab7915b831625b46328
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Apr 1 17:07:56 2012 +0300

    Avoid use of partly initialized VModInfo in error path
    
    Such as:
    
    Compiling path: ./test/data/bad.xkb  mapName:
    ==1300== Conditional jump or move depends on uninitialised value(s)
    ==1300==    at 0x4E46166: HandleVModDef (vmod.c:90)
    ==1300==    by 0x4E3FEC9: HandleKeyTypesFile (keytypes.c:1035)
    ==1300==    by 0x4E3FBE1: HandleIncludeKeyTypes.constprop.11 (keytypes.c:387)
    ==1300==    by 0x4E401DD: HandleKeyTypesFile (keytypes.c:1022)
    ==1300==    by 0x4E3FBE1: HandleIncludeKeyTypes.constprop.11 (keytypes.c:387)
    ==1300==    by 0x4E401DD: HandleKeyTypesFile (keytypes.c:1022)
    ==1300==    by 0x4E4026F: CompileKeyTypes (keytypes.c:1150)
    ==1300==    by 0x4E3DF9B: CompileKeymap (keymap.c:169)
    ==1300==    by 0x4E465E9: compile_keymap (xkbcomp.c:205)
    ==1300==    by 0x4E46BE4: xkb_compile_keymap_from_file (xkbcomp.c:290)
    ==1300==    by 0x400B37: test_file (filecomp.c:47)
    ==1300==    by 0x4008E3: main (filecomp.c:90)
    ==1300==  Uninitialised value was created by a stack allocation
    ==1300==    at 0x4E3FB3F: HandleIncludeKeyTypes.constprop.11 (keytypes.c:366)
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit cc5588c65b504c8815e3fc56bec90b6d9ae3db24
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Mar 29 17:39:11 2012 +0100

    Fail gracefully on failure to find component include
    
    If we can't find the component of the include file we're looking for,
    make sure we don't return success when we meant failure, segfault, or
    spectacularly leak everything.
    
    Tested with incorrect component includes for keycodes, compat, symbols,
    and types.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>
    Reported-by: David Herrmann <dh.herrmann@googlemail.com>

commit 9b14e0c311ca5f0ab7017e058fc9a34b0e5e04b2
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Mar 29 17:38:44 2012 +0100

    Tests: Release context on failure to build keymap
    
    No practical effect since they exit(1) regardless, but it keeps valgrind
    happy.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 93ce9c7d4f797f38e1799b68f5da77358da27a31
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Mar 29 16:31:09 2012 +0100

    Full support for multiple keysyms per level
    
    Which also involved moving the global symbol map to be per-key instead;
    this should probably be split out into a separate commit.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 9cdc1990fa5cf1de7d36de2e659ad7548d4e6a72
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Mar 29 01:57:06 2012 +0100

    Parsing support for multiple keysyms per entry
    
    Instead of allowing only one keysym per level per group, do as the
    external API indicates and allow multiples.  The existing syntax is:
        key <AD01> { [ q, Q ] };
    where the new syntax is:
        key <AD01> { [ q, Q, { H, E, L, L, O },
                     { Y, E, S, space, T, H, I, S, space, I, S, space, D, O, G } };
    
    to make the key in the extreme top left of the keyboard do pretty
    surprising things in levels 3 and 4.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 36b8771e1f21bf464d89cab7db8fd03002397ee3
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Mar 29 01:49:55 2012 +0100

    Don't leak strings in merge declarations
    
    Introduced by the reentrant scanner commit.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit aa9f2bf98ddc4d38408596159512c46f0e331409
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Mar 29 01:41:40 2012 +0100

    Don't leak include_paths in context
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 6628cf0bed4b323d07b430bfe84daacc11a547a6
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Mar 28 19:50:45 2012 +0100

    Remove unused rtrnValue declaration
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit bb6ca7682c933404d2fd27c58f4838d8b271f93f
Author: Ran Benita <ran234@gmail.com>
Date:   Tue Mar 27 22:41:22 2012 +0100

    Make parser and scanner reentrant
    
    All global state is removed from the parser and scanner.
    This makes use of the standard facilities in Bison and Flex for
    reentrant/pure scanner/lexer and location tracking.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    
    [daniels: Updated to current sources.]

commit 034ffce66437592856497e605cb0943d5dbaf82c
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Mar 27 17:22:35 2012 +0100

    Use xkb_contexts in keymap compilation
    
    Primarily for the include path, but also for the logging in future.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 3e9dd7512c16dd752830d9fd56d9f4cba76ee7d3
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Mar 27 16:59:01 2012 +0100

    Add new context API
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit f0cb4ee2191b097cb44370a37259b39e54f23e00
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Mar 27 16:15:06 2012 +0100

    Update xkb_filter_group_lock_func for xkb_key_direction
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 21f1bff4af64428b7767120be6621b75a374d21b
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Mar 27 15:51:28 2012 +0100

    Fix distcheck with non-recursive Makefiles
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit bc8bbf50dc911ad3073af389f54b54200cee4a91
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Mar 27 15:50:59 2012 +0100

    Fix build for X11 modifier masks
    
    Exposed by include path changes, oops.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 3fa7fdd0895a38528a91ae00d24360c8a185b783
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Mar 23 17:50:37 2012 +0200

    Handle group lock actions
    
    The spec is simple here, as this action has no effect on key releases.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit b5efe41f190cbb76eb1ca8ddf0c96990ddb83704
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Mar 24 04:48:31 2012 +0200

    Make build non-recursive
    
    Unify all the different Makefile.am into a single short top level one
    (the test/Makefile.am file is left intact though).
    
    This makes the build system simpler to look and should encourage
    unifying more currently-disparate code.
    
    Some further motivation can be found in this page:
    http://www.flameeyes.eu/autotools-mythbuster/automake/nonrecursive.html
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 602e87805bdb829dfc0867b1466e2b1dc729ab52
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Mar 24 13:27:48 2012 +0200

    Define our own NoSymbol value and use it
    
    Since we have our own xkb_keysym_t type, it makes sense to have our own
    NoSymbol value instead of the one from X11/X.h.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit d3908b631c531aa3721d91297badad1c85e3c4f1
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Mar 24 12:33:28 2012 +0200

    Define our own None atom value
    
    Since we define our own xkb_atom_t type, it makes sense not to use the
    X11/X.h None value. This way we can also remove a lot of X11 includes.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 2165e16ed925616f2e3760ae9b41a8a076b22f5e
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Mar 24 02:36:11 2012 +0200

    Fix all -Wsign-compare warnings
    
    i.e comparison of signed and unsigned values. These are mostly
    harmless but fixing them allows to compile cleanly with -Wextra.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 813ddf255d076efe65c953ff5dc6521839ab052b
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Mar 24 00:29:33 2012 +0200

    Silence -Wcast-qual warnings
    
    There are some cases where we must free a string with a const qualifier.
    Add a macro UNCONSTIFY to trick the compiler into silencing the warning
    in the cases where we know what we're doing.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit f08ce9b71b08e8db846780b7187124da53ba1c3c
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Mar 24 00:26:12 2012 +0200

    Use strcasecmp consistently instead of uStrCaseCmp
    
    There's no use calling the same thing by a different name.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 3104a8ef181622805f39eba608523eec51591944
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Mar 24 00:12:08 2012 +0200

    Move utility macro from XKBcommonint.h to utils.h
    
    And merge all the similar ones into the same name.
    The u* prefix is chosen over the _Xkb prefix because it has more uses
    throughout the codebase. But It should now be simple to choose a nice
    prefix and stay consistent.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    [daniels: fixed for the case where we have strcasecmp]

commit 2a5f641657033e0ed1d4d9e712296e1e76bcaf6d
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Mar 23 23:56:44 2012 +0200

    Remove some more useless stuff
    
    Some unused defines and geometry-removal leftovers (specifically the
    file geom.c and the struct for the keyboard coordinates).
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 861b0c79c40786c5384adba208f353003b291849
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Mar 23 23:47:26 2012 +0200

    Rewrite recalloc to the correct type
    
    The recalloc function should be expressed in terms of bytes to match its
    name. However uTypedRecalloc retains its type so nothing is changed.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 0480f427adcc745c139841a23c80d15a3d44f4db
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Mar 23 23:28:24 2012 +0200

    Remove useless stuff from utils
    
    Signed-off-by: Ran Benita <ran234@gmail.com>
    
    [daniels: fixed conflicts from strcasecmp, added includes to make
              filecomp build again]

commit 2ac8610fad7236f2ffc3a8507cd846e88de85dc0
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Mar 27 14:06:56 2012 +0100

    Remove fallback strcasecmp/strncasecmp
    
    Sorry if your libc doesn't have this, but it's not my problem.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>
    Reported-by: Ran Benita <ran234@gmail.com>

commit 55b76a63892447b580cb83726fd1e174d377e91f
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Mar 27 14:05:14 2012 +0100

    Add include/ to makekeys include path
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit d22b8dbbd0a7e0f8bf8cc56968ea3a78692bac21
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Mar 23 22:25:47 2012 +0200

    Move utils.{c,h} to be used by the entire project
    
    This is a first step for making consistent use of utils.h also outside
    of xkbcomp/ .
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 7cc17ec50768652be09358beb234b086aacc7b73
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Mar 23 23:39:12 2012 +0200

    Fix a scanf type mismatch
    
    "%o" takes an unsigned int.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit f52671a4d1f55b339fc136961dfc645b1b7589f2
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Mar 24 12:31:55 2012 +0200

    Remove a few remaining uses of the KeySym type
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 8b3e2b9b005e89c58fbb063f6e4ebd8beac7d5a8
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Mar 24 04:57:40 2012 +0200

    Add xkb test file to EXTRA_DIST
    
    To appease make distcheck.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 1b17708c8846463e207310a2c232bd20f7aadbbc
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Mar 24 02:33:18 2012 +0200

    Fix incorrect usage of && instead of &
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit eeb0a2144842ea960f3d3e7a02f717805cb3f428
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Mar 23 17:55:08 2012 +0200

    Update gitignore for 'state' test
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 6f7478d775af67446bc2deb4683397bfa1b60a8e
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Mar 24 02:56:38 2012 +0200

    Fix latin8 upper/lower case check
    
    GCC complained:
    misc.c:235:13: warning: logical 'and' of mutually exclusive tests is always false [-Wlogical-op]
    misc.c:248:13: warning: logical 'and' of mutually exclusive tests is always false [-Wlogical-op]
    
    Looking at keysymdef.h shows that the check is indeed wrong. This commit
    updates the check to match the latin8 section of keysymdef exactly.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 3b22373f1fb554eb0ada419382381146238ce2ec
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Mar 23 17:48:35 2012 +0200

    Properly free xkb_state's
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit d9f934ca42d41e5db83fe2c6d8f839cb8a216c1b
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Mar 23 16:52:23 2012 +0200

    Mention xkb_state_new can return NULL
    
    in the header comments.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 087327d9c505ff8b9b00d998754528a347152851
Author: Guillem Jover <guillem@hadrons.org>
Date:   Tue Mar 27 14:41:44 2012 +0200

    Move doxygen comment before enum item
    
    Signed-off-by: Guillem Jover <guillem@hadrons.org>

commit 389c2db1d778f4a7bbe94abfad1e6de4dbd45858
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Mar 27 13:44:48 2012 +0100

    Remove internal API from xkbcommon.h
    
    And move it to XKBcomminint.h.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 3dcd7ae02ccfd47b2a9a552daa225255803e66cf
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Mar 27 12:20:42 2012 +0100

    Remove hardcoded legacy modifier masks
    
    Use the xkb_state_mod_* and xkb_map_mod_* API instead.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 729ac12f1c7ea6c5de548765b10738b261a43852
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Mar 27 12:19:42 2012 +0100

    Remove unused changes structs
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit f89b0a80ba65193979fdb5d98ece642055d06470
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Mar 27 12:18:50 2012 +0100

    Remove unused members of xkb_state
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit ede8473490a4fa327f168225042ea7ea4dd0d5e0
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Mar 27 12:11:45 2012 +0100

    Add enum xkb_key_direction instead of bool
    
    Use XKB_KEY_UP instead of 0 and XKB_KEY_DOWN instead of 1.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>
    Reported-by: Ran Benita <ran234@gmail.com>

commit 7f471a702ed4e1af63c39370ea55f3fea0500cfc
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Mar 27 12:07:57 2012 +0100

    Add state serialisation API
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 83b8b4b53324085fcc91f484535f1a43d0c0ccca
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Mar 27 12:07:40 2012 +0100

    Cosmetic coding style fixups
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit d039622a659b40d014f146fcd2ff2353cd5b1bc7
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Mar 22 17:39:12 2012 +0000

    Rename keymap allocation API
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 3d672fcfea6b823db4793b9ad1c3aadc4b547a08
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Mar 22 14:32:53 2012 +0000

    Add LED state API
    
    And also convert state.c to use the state API for mods and groups,
    rather than testing the state members directly.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit b6c79ad0d82fddfa0c020e73337b4c92a72d9781
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Mar 22 14:32:23 2012 +0000

    LEDs: Fix string comparison bug
    
    This resulted in duplicate sets of modifiers, since we were comparing
    pointer equality of two strings, rather than string equality.  Oops.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 504cc0b858fefac8ea7e8911e60c1b961e225ec4
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Mar 22 14:31:33 2012 +0000

    Check for invalid indices in mod/group state API
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit cfb07724b7a5572e653a394f7c986ad6b5ee5fc8
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Mar 22 14:30:58 2012 +0000

    Fix documentation bugs with mod/group state API
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit aaffcef35d692b0c77fe88d63ac6d9c669aad080
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Mar 21 16:57:05 2012 +0000

    Add a proper README
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit edcaab651297c6d07868eead058379e20c9baddd
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Mar 21 15:25:32 2012 +0000

    Round out new state API
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 9468d84ad15f70ae580da0276065084396b2925e
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Mar 21 14:44:16 2012 +0000

    Fix (correct, but harmless) const warning
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit ecea0d71b29d07c7909d196b2a0bae0cbb43c79d
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Mar 21 02:20:07 2012 +0000

    Add new state API
    
    Add new API to deal with xkb_state objects, including
    xkb_state_update_key, which runs the XKB action machinery internally to
    calculate what exactly happens to the state when a given key is pressed
    or released.
    
    The canonical way to deal with keys is now:
        struct xkb_state *state = xkb_state_new(xkb);
        xkb_keysym_t *syms;
        int num_syms;
    
        xkb_state_update_key(state, key, is_down);
        num_syms = xkb_key_get_syms(state, key, &syms);
    
    More state handling API, including a way to get at or ignore preserved
    modifiers, is on its way.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 272ccbf4737ad028101f52abaffb70a075a199f1
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Mar 21 02:19:44 2012 +0000

    Remove some rogue fprintfs
    
    Oops.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 1afc6fca4d05f9aae1723f76ab889161f3cf4866
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Mar 21 02:17:58 2012 +0000

    Don't clear real mods in action modmask
    
    Previously, we would clear out the real modmask when updating the
    modmask for action maps, if not using the key's modmask.  The correct
    behaviour here is instead to use the key's modmask if using the modmap,
    else use the real mods provided with the action originally.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit f44eed3e9ad366c816a90d749a5f3bde9239119e
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Mar 21 00:33:29 2012 +0000

    Remove unnecessary allocation in expr.c
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit bcd811ce2fb81d5c92ad754a61a1d4d9d7f1dc46
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Mar 20 17:24:09 2012 +0000

    Small constification
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 3d31be5f871d48cf4a4b9d030307885bca785baa
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Mar 16 14:27:39 2012 +0000

    Also print group name in keysym error
    
    Unfortunately we can't get the actual file it was defined in this far
    down, but at least give the human-readable name rather than just a group
    index.
    
    Also, groups are not zero-indexed, such that index 0 is group 1; fix
    that too.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 7dbd3040212be363bcc239826bb1a247448ff28d
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Mar 16 14:22:04 2012 +0000

    More useful errors for invalid keysyms
    
    Instead of generating a fairly droll internal error, generate a warning
    also telling us exactly where the bad definition was.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit f40e0790f2e7838508df46852e3ec3dd5455dadf
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Mar 16 13:59:24 2012 +0000

    Fix non-useModMapMods action masks
    
    By ensuring their mask is only the vmods, rather than also potentially
    including the key's modmap.  Also remove the unnecessary vmodmask
    indirection.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 7e2dd12142345892f537006363008efc01b50e50
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Mar 15 09:35:42 2012 +0000

    Add geometry test
    
    Add the dump of my full current X11/XKB keymap as a test for filecomp,
    being as it also includes geometry.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 9452165837ebc2ad5c1a02b7d32a95961206350a
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Mar 15 09:34:20 2012 +0000

    Plug leaks in geometry parsing
    
    When parsing a geometry file, don't leak the elements we've created.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 937d40492cefb3922a91c440302b0f9085290405
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Mar 15 09:33:56 2012 +0000

    Remove more float support
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 3560bf7bf4ff34fec63cd5e5ad7fe8e1937d7a49
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Mar 15 08:36:09 2012 +0000

    Also update vmod -> indicator maps
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 0e0b5b00afb11afd6e4f49bfeb965befcd44abf7
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Mar 14 18:24:37 2012 +0000

    Update modifiers after building keymap
    
    The server used to have to go and do this on our own, but we can do
    better than that: after we've compiled the keymap, go through and bind
    virtual modifiers to everything that needs it.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 62444a117c7a6e4fb2ce120d58fd42c1a4f3db7b
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Mar 14 17:06:09 2012 +0000

    Convert interp action from xkb_any_action to xkb_action
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 4e704e7faec5b2ce00b2b59daf65fcf3589513f6
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Mar 14 17:05:09 2012 +0000

    Add xkb_get_syms_by_level
    
    Which allows you to pass in a group and a level rather than a
    fully-formed state.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 3d38da0c5b92f7ec209e0d3d906b490c43429f1e
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Mar 14 17:04:36 2012 +0000

    Fix leak in xkbcomp.c
    
    Accidentally regressed this one briefly, oops.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 54aa839c0e9d6029ce9f474c2474e4b816ec1876
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Mar 14 11:59:52 2012 +0000

    Remove component listing code
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 3ee370e9696933071c4e980983f56cd3f931b361
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Mar 14 11:58:24 2012 +0000

    Remove unused control members
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 5dd817339d35bb493943f29a8f3ba1591a8ba4ef
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Mar 14 11:56:59 2012 +0000

    Add a tiny bit of documentation to xkbcommon.h
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit bc074525420e54784543504a7a1a7cd6a0f9c998
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Mar 13 19:06:05 2012 +0000

    Add xkb_key_get_syms API
    
    (And a slight cosmetic header reformatting.)
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 9dde0f337110145fee74d338e826fe9ef4343dbc
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Mar 13 12:46:37 2012 +0000

    Revert "Use XKB_COMMON_* modifier defines in ExprResolveModMask"
    
    Because indices and masks are not at all the same thing.
    
    This reverts commit 645275406f47369c9a67d02173aedf89e9d2a33c.

commit 645275406f47369c9a67d02173aedf89e9d2a33c
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Sat Mar 10 14:42:30 2012 +0000

    Use XKB_COMMON_* modifier defines in ExprResolveModMask
    
    Rather than the ones from XKB.h.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit f9b3a14e086443e45d66e047b45221bc52d64e4c
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Sat Mar 10 14:36:30 2012 +0000

    Remove overlay support as well
    
    Right now we just silently ignore overlay controls, which is probably
    bad, but it's not the easiest to fix.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 24c61d0f78e4de77041568c2114c4f1e7e19a0b0
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Sat Mar 10 14:27:06 2012 +0000

    Remove half-implemented radio groups
    
    It looks like this could never have worked anyway, what with num_rg
    always being 0 everywhere.  Remove it.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit e7c8bac79df08ec762d97c2fd1ff0667eb7593d7
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Sat Mar 10 14:08:43 2012 +0000

    Remove indirect XkbCM* and XkbSM* macros
    
    The XkbKey* macros used to work through XkbCM* and XkbSM* variants, for
    the xkb_map and xkb_server_map respectively; the latter versions weren't
    used by anyone at all, so just bin them and make the macros work
    directly.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 671ab1bf8ffcb201405310b2b9d154cd600b3a46
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Sat Mar 10 13:54:03 2012 +0000

    Handle XkbFiles without a name
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit c8fd3ea4b67b3764ee7c0cf4ad35ac9ba89ec518
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Sat Mar 10 13:48:13 2012 +0000

    Move allocation of xkb_desc into CompileKeymap
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 971eb485c5f2f016d23fd61b8c76a5ecd36b404a
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Mar 9 20:01:33 2012 +0000

    Clean up xkb_keysym_to_string message
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 17bcc4c163d625f4422f91fb8fd51f7918836678
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Mar 9 19:29:29 2012 +0000

    Remove geometry even harder
    
    Not the most elegant fix, but will do for now.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit a0e756fd83e9e4910ed8981f2ed7b6b0b522a2dc
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Mar 9 19:09:25 2012 +0000

    Introduce xkb_atom_t type
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 0bb24c2d2322b2ccd79eddf90137d7feaf7f3a6f
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Mar 9 19:03:59 2012 +0000

    Introduce xkb_keysym_t type
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit d67a94d374956940d58fb6370354de754ae07c93
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Mar 9 18:57:14 2012 +0000

    Remove atom functions from public API
    
    They're no longer needed since we don't expose any atoms in the
    published API anymore.  As a result, we don't need to support external
    atom implementations either.  Result!
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 731e5c40bc9275770fa67f9bcbd222aa3e8c0bb3
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Mar 9 18:53:47 2012 +0000

    Stringify public name types
    
    Ensure that all names under xkb_desc are strings, rather than atoms.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 57b551a4189c7c9d9dccc816c43b4c18e1111392
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Mar 9 18:46:46 2012 +0000

    Ensure we always have a complete keymap
    
    Refuse to compile without keycodes + compat + types + symbols.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit b8e950defdb5844ae1a109631ae3f68624e272a7
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Mar 9 16:57:09 2012 +0000

    filecomp: Fix xkbcomp warning
    
    Ironically, the test for named.xkb included a call that relied on the
    default keymap, without the file naming an explicit default.  Go figure.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 4bc451bf08a68402750af7b630f77d44b99b0d0b
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Mar 9 16:55:37 2012 +0000

    Convert CompileKeymap to early-return style
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 59e03bf5f2b6d14d2f73f1de46e2b72028200819
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Mar 9 16:54:47 2012 +0000

    Use compile_keymap in xkb_compile_keymap_from_components
    
    We already had this exact function sitting right next to us, so use it
    rather than open-coding.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 73919568b0c9305f6eccbe2abfebe3248893703d
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Mar 9 16:32:45 2012 +0000

    Add explicit braces
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit aa41ab2918b67efd96536636484e72036d45ac51
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Mar 9 16:31:48 2012 +0000

    xkbcomp: Turn an array into an anonymous struct
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit ed5c6c1796d10bca8d2dfcb81f72eb24dbb6265e
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Mar 9 16:26:34 2012 +0000

    Remove geometry support, again
    
    It still parses geometry, but happily throws it away.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit b28823cc5929152aa5114274460999aabf612cbc
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Fri Mar 9 16:04:00 2012 +0000

    Remove KcCGST names from the map
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit ed18e65eacdabfeaeafee7c369891312af99c82d
Merge: 65e1ff2 e4b4d6b
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Mar 5 15:07:28 2012 +0000

    Merge remote-tracking branch 'ran/fixes-cont'
    
    Conflicts:
    	src/xkbcomp/expr.c
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 65e1ff2f0ad182f6bbaaa1fd67317d147384af4f
Merge: 90f04e0 c41061a
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Mar 5 15:00:39 2012 +0000

    Merge remote-tracking branch 'ran/fixes'

commit e4b4d6b0510075fe62234f66185bf619c70fc126
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Mar 3 23:42:44 2012 +0200

    Fix "Could not resolve keysym" errors
    
    On many layouts, the following error appears:
    Internal error:   Could not resolve keysym 10005b0
    (Which is like the trademark of libxkbcommon now, and makes
    unicode-heavy symbol files pretty useless).
    
    This occurs when a keysym string (in this case, 10005b0) is passed to
    xkb_string_to_keysym, but cannot be resolved.
    This in turn happens because the parser passes on hexadecimal keysym
    strings without the leading "0x", thus leaving the resolving function
    without a way to disambiguate it as a number.
    
    Therefore, make sure to pass on the "0x". The file symbols.c in xkbcomp
    project does the same; it probably got lost in translation.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 2473444f92a01bd320336e56ddb941e9e2d11673
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Mar 3 22:43:50 2012 +0200

    Refactor XkbFindFileInPath
    
    Also fixes a bug, where the check (typeLen < 1) should have been
    (pathLen < 1).
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 19e99bb27a8ab4121aa28124db4d26ba6de73f47
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Mar 1 20:41:34 2012 +0200

    Free all atoms along with keymap
    
    The code to do this is taken from xserver, dix/atom.c.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit d94d9b45223b3f99c8b75d634f486a5a56918d05
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Mar 1 21:03:37 2012 +0200

    Free IncludePath when no longer needed
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 1e6f956e36720f75b3208411cd4e3271d4fb982f
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Mar 1 21:03:13 2012 +0200

    Free scanFile when no longer needed
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit e4447f8131581b36262a833396c182faa950cf0c
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Mar 3 01:17:21 2012 +0200

    Fix other misc leaks
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 30d88b93e7d5f3db760978c4740ed3f37dcf215d
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Mar 1 20:44:42 2012 +0200

    Don't leak the scanner's buffer
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit c24d97e45e7c1b951b1f84ca2393f0fc8a11ffc8
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Mar 1 19:45:37 2012 +0200

    Don't leak DoodadInfo's from GeometryInfo
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit c800c60acea5e96e57ab890c34230cd4db4ea2d2
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Mar 1 19:25:37 2012 +0200

    Don't leak ActionInfo's
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit d67e73bdbd5873df4be30e6b04910c860922f14d
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Mar 1 00:10:37 2012 +0200

    Don't leak KeyNamesInfo
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 5c40bee62ab7f0e7e10cb5d1c467cb9be5cede1c
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Feb 29 21:57:15 2012 +0200

    Don't leak the "minimum"/"maximum" string
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit c50c87bca278a16523e9406e604613ae7fc2dcf1
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Mar 1 21:26:25 2012 +0200

    Don't leak the various *Info's names when overriding them
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 889a299e3bb498427f96a4b354cc0ba5d560132a
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Mar 2 14:49:36 2012 +0200

    Free XkbFile's when no longer needed
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit c357a11aa690533620790f3df959508074cbd7e1
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Mar 1 21:20:45 2012 +0200

    Add function to free XkbFile's
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 3216ecc07f5fb634a35f7d9ed9ef8e3d7f4494d5
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Feb 24 10:46:41 2012 +0200

    Don't cache loaded rules files
    
    This needlessly occupies memory for the lifetime of the library, and
    does not make a noticeable difference otherwise.
    
    This rules file won't be loaded more than once in most cases anyway, so
    just load it again when it happens.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit ca9829ea66667e479bb4008d3b9e92727f090d3e
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Feb 24 09:59:25 2012 +0200

    Don't cache parsed files
    
    This needlessly occupies memory for the lifetime of the library, and
    does not make a noticeable difference otherwise.
    
    Instead, just parse the same file again when it happens.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a64e970809ffef749a155616e62d21802a374bd3
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Mar 2 15:56:03 2012 +0200

    Remove unneeded freeing mechanisms
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit c7bf3687806c2d6fa91851d64966fcc705330e92
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Mar 2 22:36:32 2012 +0200

    Make the sections array local to the keymap compiling function
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit baf6a677dc01509d54a9c1ee33cce412003f13be
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Mar 2 22:34:14 2012 +0200

    Remove unused global type tokens
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit f549ce078f56e9cf4360cf429ec2c870f67040dd
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Mar 2 17:25:58 2012 +0200

    Use global tables for action string handling
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit d2c3dd0c21a0cec43fba74c81ccbf75794b03c86
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Mar 2 22:31:29 2012 +0200

    Constify some more text functions
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit eb738b13ce4ea8228dcc7c02949a33190e400bb4
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Mar 2 17:40:19 2012 +0200

    Constify global tables
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a0b442356ceb57f6d3b8e8c3328f30d68e9fdbea
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Mar 2 16:12:18 2012 +0200

    Use limits.h to find min/max short value
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 266dfae589a51f48cf620fd0e6eaad8694649a4f
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Feb 29 21:26:28 2012 +0200

    Remove useless casts
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 1616b8642c6524e27cf81fe2a9c1e0e9b0bc912f
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Mar 3 01:15:56 2012 +0200

    Use strchr instead of index
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 4bc839ab89904ae88f7feebe6a4e823d91fe62d6
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Feb 29 20:50:17 2012 +0200

    Use memset instead of bzero
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a3e40917ee79b050b7cd99a9257eed4aea7603e1
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Mar 1 23:43:51 2012 +0200

    Remove return's at the end of void functions
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit f278cea1075ee6abbda1c7e3f0d18bcacfa668db
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Feb 29 20:25:11 2012 +0200

    Remove all uses of the register keyword
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit f424251244d1509c5bf5e8779a4820bd76f18473
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Feb 29 20:12:17 2012 +0200

    Use strdup instead of strlen + malloc + strcpy
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 6a34e4e19a5b82865cb0fcacdc0e9f524eb77b46
Author: Ran Benita <ran234@gmail.com>
Date:   Wed Feb 29 19:56:39 2012 +0200

    Don't check for NULL before free()
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit c41061a005e6db409dbbf57c06320f7813afc62d
Author: Ran Benita <ran234@gmail.com>
Date:   Thu Feb 23 19:26:33 2012 +0200

    Use yacc-generated header instead of tokens.h
    
    The yacc implementation can generate all the necessary token
    definitions itself; there is no need to maintain a hand written
    file for that.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 0d8874d01c9ba5ed124481be37b2428271e07baf
Author: Ran Benita <ran234@gmail.com>
Date:   Sun Feb 26 00:03:24 2012 +0200

    makekeys: update to match the rest of libX11 makekeys
    
    This integrates two commits from libX11:
    
    ebd6ef0a4db0ddef0ae17ad14571518ccdeea5ba
       XStringToKeysym: Special case for XF86 keysyms
    
        Some XFree86 keysyms were in XKeysymDB as XF86_foo, despite really being
        XF86foo.  So, if we get to the bottom of XStringToKeysym and haven't
        found our XF86_foo, try it again as XF86foo.
    
        Signed-off-by: Daniel Stone <daniel@fooishbar.org>
        Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
    
    00175397480b76d32bf82b0c7c94c91a2a95954e
        makekeys: Scan vendor keysyms as well as core
    
        Since we can't really live without vendor keysyms, scan them all in to
        generate ks_tables.h, rather than only doing the core ones, and leaving
        the vendor syms to be manually synchronised with XKeysymDB.
    
        Signed-off-by: Daniel Stone <daniel@fooishbar.org>
        Reviewed-by: Alan Coopersmith <alan.coopersmith@oracle.com>
    
    Notice that the xkey.sh test is changed to match libX11 behavior, i.e.
    XKeysymToString(0x1008FE20) -> "XF86Ungrab" as opposed to "XF86_Ungrab".
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit ad4f195eb40f137f71ea82fb063c377177f4e1e3
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Feb 25 23:17:47 2012 +0200

    makekeys: Receive the keysym files as arguments
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 0e98541f377cccd34ee69d1ae9fef256598c644e
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Feb 25 21:13:26 2012 +0200

    When makekeys fails to find a good hash, print error instead of divide-by-zero
    
    This matches commit 78a894231ae8ec4959007b6d9b8d2a15d6333a1e from
    libX11:
        Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 04e687c9da4cd643779fa4571c7e452c4f7e2dc7
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Feb 25 21:09:28 2012 +0200

    makekeys: Fix build/target word size mismatch when cross-compiling
    
    This matches commit 24283d40b1e4314c6647dda49d2a159833341a8b from
    libX11:
    
        Since makekeys is built using build environment's compiler and
        runs natively, we have to make sure that the size of the
        Signature type is the same on both the native environment
        and the target, otherwise we get mismatches upon running X,
        and some LSB test failures (xts5).
    
        Use an unsigned 32-bit integer on all platforms.
    
        Signed-off-by: Derek Buitenhuis <derek.buitenhuis@gmail.com>
        Reviewed-by: Daniel Stone <daniel@fooishbar.org>
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 744527e9a9080368ffe21a92e6bfeb78102e68e9
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Feb 24 16:10:06 2012 +0200

    Fix remaining warnings
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit eff72fab5de02630dac8d7a1d233194cdedac870
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Feb 25 11:53:01 2012 +0200

    Fix warnings in scanner and parser
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 1d969c5cf6ae63b0a0226be366b2a4ede8590876
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Feb 24 16:08:55 2012 +0200

    Fix an incorrect sizeof
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit f3e4335fc65d6eeb448d30bd2e2dc88f8730ef7a
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Feb 24 16:07:17 2012 +0200

    Fix all constness warnings
    
    These are all trivial/obvious fixes which clear a bunch of warnings.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit cca1c050971bd7a742a68212f3da904b5954759b
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Feb 24 16:03:44 2012 +0200

    Fix possible null dereferences
    
    Fix all reported null dereferences from clang-analyzer.
    There seems to be one false negative (in file indicators.c), but it is
    fixed anyway.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 9005624f945a1d105232972676e875798771e6f1
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Feb 24 16:00:10 2012 +0200

    Remove unneeded assignments and variables
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a48ddb5dd3376b56ca369ba044a2ebf7faac1390
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Feb 24 15:55:45 2012 +0200

    makekeys: clear const and shadow warnings
    
    The name 'index' is used by the standard library, so use 'ndx' like some
    other files.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit fdf7e8f6db9b48f65dab40105fee86b01850fd8d
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Feb 24 15:53:08 2012 +0200

    makekeys: make buf local to main()
    
    All the functions already accept it as a parameter. This clears -Wshadow
    warnings.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 6a3b38b1711732be09840c85996fd65d0a7f03ff
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Feb 24 15:51:31 2012 +0200

    Remove ancient compatibility check
    
    Other headers include malloc just fine.
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit a0dd052644765f509e279992f646997943cbc862
Author: Ran Benita <ran234@gmail.com>
Date:   Sat Feb 25 11:46:12 2012 +0200

    Remove unused includes of "tokens.h"
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 9ad0be33582e9d92ab51ca45b347eefa8c3160f4
Author: Ran Benita <ran234@gmail.com>
Date:   Fri Feb 24 10:04:16 2012 +0200

    Remove unused debug #defines
    
    Signed-off-by: Ran Benita <ran234@gmail.com>

commit 90f04e042b776eda656440ca9ac49af05d86196f
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Feb 20 18:07:29 2012 +0000

    Perform bounds checking in ExprResolveLevel
    
    Both callers perform the same bounds check, so move it into
    ExprResolveLevel itself.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 1ab058bbb345245088f54315227fe0cf52ae54ed
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Feb 20 17:47:46 2012 +0000

    Fix typo in ExprResolveKeyCode
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit e209fe31dff4c5eaad0c61f48ef4f8ca7a90e26d
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Feb 20 17:33:39 2012 +0000

    Perform bounds checking in ExprResolveGroup
    
    Every caller did the exact same check on the group bounds after calling
    ExprResolveGroup, so might as well do it inside.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 43ed3ff07047ec03a42eb7a1b49e37d1357054b7
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Feb 20 17:14:04 2012 +0000

    Switch expression resolution priv from char to void
    
    Avoids a lot of really lame casts.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit eb6d9a0528d5f8836109898a674dcc3bb2e421f5
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Feb 20 17:09:06 2012 +0000

    Remove chaining support from LookupModMask
    
    Turns out we never use it, so.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 11ea079175289f272564eb2ef3be31716b6b0112
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Feb 20 17:07:48 2012 +0000

    Invert LookupModMask/LookupVModMask order
    
    We never want to solely lookup a virtual modifier without also looking
    up core modifiers.  So, rather than chaining the vmod lookup inside the
    core modifier lookup, invert the ordering.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 1a2f2556ddd002c781958d5388c7d7c44501e923
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Feb 20 17:00:51 2012 +0000

    Remove unused LookupPriv::priv
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 55e058f85668ca576c520170c95eb2b08458fcbb
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Feb 20 16:59:51 2012 +0000

    Move some definitions from expr.h to expr.c
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 90d86c360ae35ef24c21a8fa7ec8fda545535307
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Feb 20 16:54:54 2012 +0000

    Remove field reference lookup support
    
    None of the lookup functions anyone ever used supported field
    references, so don't pretend we do in the API.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 590df28cc539b70e07150b0640bacbb5ab63d8b7
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Feb 20 16:35:39 2012 +0000

    Move groupNames mask definition to its user
    
    groupNames was declared in compat.c as a global to anything which
    included compat.h (for which groupNames was its sole reason to exist),
    but only ever used in indicators.c.
    
    Which is kind of fortunate, given that e314931e removed identical
    definitions of groupNames (as integers, not masks) from both action.c
    and symbols.c.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 91b8985297473eff51a4915fd47bf5d70299984f
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Feb 20 16:24:02 2012 +0000

    Turn ExprResolveInteger into a simple wrapper
    
    Move the bulk of ExprResolveInteger into an internal function called
    ExprResolveIntegerLookup, and introduce ExprResolveInteger as a simple
    wrapper which doesn't take priv/lookup arguments.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit d32822e60f63bd69871458380116de248cba23c7
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Feb 20 16:04:37 2012 +0000

    Open-code a radio group SimpleLookup
    
    Because, joke's on you, it wasn't actually looking up radio groups.
    Just checking to see if it was a string that was "none", or an integer.
    
    Lord give me strength.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit e314931e8f464af15be8766c2032ae8e8aa94c2c
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Feb 20 15:47:57 2012 +0000

    Add ExprResolveGroup helper
    
    Just a dumb wrapper around ExprResolveInteger.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 8b47dbbf614f2c2693da9ee6df53b0ebff6f32dd
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Feb 20 15:47:38 2012 +0000

    Add ExprResolveButton helper
    
    Just a dumb wrapper around ExprResolveInteger.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 3431a089cf45ad6ab4f8524e2e3ea7dd868c4c78
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Feb 20 15:37:53 2012 +0000

    Introduce ExprResolveLevel helper
    
    Which returns an integer representing the level number represented by
    the given expression.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 193e9b39137a83fd372053a8cf266329111c2cfb
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Feb 20 15:33:40 2012 +0000

    Introduce ExprResolveRadioGroup helper
    
    Just a tiny special-cased version of ExprResolveInteger.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 26285a7bd94d7c4467187d490f31515281e75851
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Feb 20 14:15:08 2012 +0000

    Remove priv arguments from ExprResolveString
    
    They've never been used.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit b7b49eb0f73f1f9faed71703163671b1564fdec6
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Feb 20 14:10:41 2012 +0000

    Remove priv arguments from ExprResolveKeySym
    
    They've never been used by its one caller.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 70033b132b4190ff6419a64896170f4611287353
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Feb 20 14:08:55 2012 +0000

    Remove priv arguments from ExprResolveKeyName
    
    They've never been used.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 482d4faaa1a04cd6e905f53b1a10544ccc360754
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Feb 20 13:44:27 2012 +0000

    Remove priv arguments from ExprResolveBoolean
    
    They've never been used.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 9404157571907512661e3efa812ef3e6467277d8
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Feb 20 13:40:34 2012 +0000

    Remove priv arguments from ExprResolveFloat
    
    They've never been used.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 3151ce36fa154a4b750fdbf5c0d6ede289ee5692
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Feb 20 13:34:36 2012 +0000

    Remove priv arguments from ExprResolveModMask
    
    What with them now being unused and all.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 67605d2c90f93c0332c7a465e44e9dd57cb83bae
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Feb 20 13:32:09 2012 +0000

    Introduce ExprResolveVModMask
    
    Which is just a slightly more typesafe wrapper around the chained
    ExprResolveModMask everyone was using earlier.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit fbb82199eefe34ad8068303a396adc5c4861d87e
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Feb 16 11:18:49 2012 +0000

    Respect explicit minimum/maximum keycodes
    
    Make sure we carry over an explicit minimum/maximum keycode setting,
    rather than just using the computed minimum/maximum; this got broken
    while changing the keycode range to be unsigned.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>
    Reported-by: Pekka Paalanen <ppaalanen@gmail.com>

commit c45cdb0c677b88c268615db171030a2500bff3dc
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Feb 16 00:22:11 2012 +0000

    Still more memory leak fixes
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 83f18b1c3abce7bd47f9b72c56cf0a01102f8569
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Feb 15 19:39:33 2012 +0000

    Fix xkbparse.y compilation
    
    Thanks to autotools happily building stale generated sources, I hadn't
    actually ever built my xkbparse.y changes.  Fix that so it not only
    compiles, but works.  This seems to parse long keycodes correctly,
    although I very much would not recommend testing this by declaring
    0x1fffffff as your highest keycode.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit eb8c96cbd99f5facbeb73c9b10fc4d592e4c547b
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Feb 15 16:42:45 2012 +0000

    Don't leak SymbolsInfo
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 3077e97e7c0948ed1d11fe13c9e0d3ab0929e262
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Feb 15 16:37:31 2012 +0000

    tests: Free returned XKB map
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 67c874d76dc3cc54d9b6d2d2fad9c1ccbebc9bff
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Feb 15 16:24:07 2012 +0000

    Enable stderr debugging by default
    
    (If debugFlags is set to non-zero.)
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit f57dcfebf4fb63c5545874a4c7e57f4d52010b81
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Feb 15 16:23:47 2012 +0000

    Raise keycode range to 32 bits
    
    \o/
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 1a6c3807d6513c2c627cbe6ba27bab614647bc02
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Feb 15 15:58:14 2012 +0000

    vmod: Pass xkb_desc explicitly to vmod functions
    
    Some error paths don't set info->xkb correctly, so just do like most
    utility functions and pass the xkb_desc explicitly.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 4e22851141d89436c0659e68da57e91bbf971461
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Feb 15 14:34:08 2012 +0000

    Introduce xkb_keycode_t for keycodes
    
    And use it consistently everywhere, including with a special long-safe
    internal keycode type, to ease the transition to large keycodes.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 8f01b144126617cb93248210a08749d5ba13dc94
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Feb 15 12:54:11 2012 +0000

    xkbscan: Copy, rather than assign, file name
    
    For some reason, lex decided to reduce a strcpy into an assignment,
    leading to entirely justified valgrind warnings about invalid reads,
    when scanFile was set to a string which may have only ever lived on the
    stack of a now-exited function.
    
    Make it a strdup() instead.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit ead9d0cb6203c4582e9233abe86565504316488f
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Feb 15 11:49:10 2012 +0000

    Move include path from X11/extensions/ to xkbcommon/
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 615291f1f448ceafef778c9336d81617d9e32dd2
Author: Rob Bradford <rob@linux.intel.com>
Date:   Thu Jan 5 14:20:35 2012 +0000

    xkbcomp: Silence warning of return of uninitialised value
    
    Some routes through HandleGeometryVar do not set a return value. Set a default
    value for the return variable to avoid returning an uninitialised value.

commit c19661b965c0058a525f439abd7ac4c5a3532c7d
Author: Pekka Paalanen <ppaalanen@gmail.com>
Date:   Fri Dec 16 12:52:00 2011 +0000

    Add xkbc_free_keymap helper
    
    Which just calls XkbcFreeKeyboard with the only arguments you'd ever
    pass it.
    
    Signed-off-by: Pekka Paalanen <ppaalanen@gmail.com>
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 99e29de22d40c5c9161a0fd28fa2a9c75328386a
Author: Rob Bradford <rob@linux.intel.com>
Date:   Thu Oct 27 14:30:21 2011 +0100

    xkbcomp: Copy the string into the buffer rather than updating pointer
    
    Avoids assigning the global pointer to a value that may only have a stack
    lifetime:
    
    Fixes valgrind warnings such as:
    
    ==24795== Invalid read of size 1
    ==24795==    at 0x4A06E9A: strcpy (mc_replace_strmem.c:311)
    ==24795==    by 0x4E54D68: ProcessIncludeFile (misc.c:73)
    ==24795==    by 0x4E59726: HandleIncludeSymbols.constprop.3 (symbols.c:829)
    ==24795==    by 0x4E59D8E: HandleSymbolsFile (symbols.c:1673)
    ==24795==    by 0x4E5A068: CompileSymbols (symbols.c:2211)
    ==24795==    by 0x4E51A61: CompileKeymap (keymap.c:155)
    ==24795==    by 0x4E5B410: xkb_compile_keymap_from_components (xkbcomp.c:236)
    ==24795==    by 0x4E5B587: xkb_compile_keymap_from_rules (xkbcomp.c:161)
    ==24795==    by 0x405ED2: display_create (window.c:2007)
    ==24795==    by 0x403732: main (desktop-shell.c:320)
    ==24795==  Address 0x7fefff0a0 is just below the stack ptr.  To suppress, use:
    --workaround-gcc296-bugs=yes
    ==24795==
    ==24795== Source and destination overlap in strcpy(0x7fefff430, 0x7fefff430)
    ==24795==    at 0x4A06F3D: strcpy (mc_replace_strmem.c:311)
    ==24795==    by 0x4E54D68: ProcessIncludeFile (misc.c:73)
    ==24795==    by 0x4E59726: HandleIncludeSymbols.constprop.3 (symbols.c:829)
    ==24795==    by 0x4E59D8E: HandleSymbolsFile (symbols.c:1673)
    ==24795==    by 0x4E5A068: CompileSymbols (symbols.c:2211)
    ==24795==    by 0x4E51A61: CompileKeymap (keymap.c:155)
    ==24795==    by 0x4E5B410: xkb_compile_keymap_from_components (xkbcomp.c:236)
    ==24795==    by 0x4E5B587: xkb_compile_keymap_from_rules (xkbcomp.c:161)
    ==24795==    by 0x405ED2: display_create (window.c:2007)
    ==24795==    by 0x403732: main (desktop-shell.c:320)

commit f91afe4f3ebcac3fb65a402c6c85cf1df5e2b52a
Author: Cyril Brulebois <kibi@debian.org>
Date:   Fri Jun 3 17:19:09 2011 +0200

    Add prototype for CheckDefaultMap().
    
    Those warnings disappear accordingly:
    |   CC     parseutils.lo
    | parseutils.c:742: warning: no previous prototype for ‘CheckDefaultMap’
    |   CC     xkbscan.lo
    | xkbscan.l: In function ‘XKBParseString’:
    | xkbscan.l:220: warning: implicit declaration of function ‘CheckDefaultMap’
    | xkbscan.l:220: warning: nested extern declaration of ‘CheckDefaultMap’
    
    Reviewed-by: Dirk Wallenstein <halsmit@t-online.de>
    Signed-off-by: Cyril Brulebois <kibi@debian.org>

commit 05f5be9f6d3b8dfbb3af3eeb2b26800ea0515de2
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Mon Apr 4 09:21:55 2011 -0400

    Also update required kbproto version in .pc.in file

commit 9dd7dc6d8884a4e02527ef16c299c6253ea468b9
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Fri Mar 18 00:33:48 2011 -0400

    configure: Lower kbproto requirement to 1.0.4
    
    There's nothing in 1.0.5 that we need.

commit dd0e8b70fb11a19887f8d05d1ed0c10921424a43
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Sat Jan 29 14:06:39 2011 -0500

    Revert "config: remove incorrectly implemented visibility compiler option"
    
    This reverts commit bf9fdceef63507da889a22eb1a583d2b6376f5ea.
    
    We really only want to expose symbols that we explicitly mark as part of
    the API.  This may not work with other platforms or compilers, but the
    fact that private symbols are not available on Linux+GCC is enough of an
    incentive to not use those.
    
    Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>

commit 621c2a7a8c4a14a5ddfdd6add735b78efd950f2b
Author: Cyril Brulebois <kibi@debian.org>
Date:   Sat Jan 29 14:24:46 2011 +0100

    Get rid of unneeded <X11/Xlib.h> include.
    
    There's no need for this xlib include:
    |   YACC   xkbparse.c
    |   CC     xkbparse.lo
    | xkbparse.y:98:22: error: X11/Xlib.h: No such file or directory
    
    Signed-off-by: Cyril Brulebois <kibi@debian.org>
    Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>

commit a63e82be2a63d82b5b3802ae40efae2538461512
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Fri Dec 17 21:14:54 2010 -0500

    Rename XkbcInternAtom() to xkb_intern_atom() and export
    
    Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>

commit b9b0011994c2887625cdb23633d67a8fefd6b7cb
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Sat Dec 11 19:25:09 2010 -0500

    config: update COPYING for software licensing
    
    The Copyright statements must appear in full.
    When only the year was different, I added it in an existing
    Copyright statement.
    
    Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

commit 1b6e022c97df129b7106a54a366faee64062cfb3
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Sat Dec 11 18:56:21 2010 -0500

    config: set the default xkb config root based on xkeyboard-config module
    
    The default value ${dataroot}/X11/xkb only works if xkeyboard-config
    has created the keymaps in that directory. Let's obtain the true final
    value of where the keymaps are and use that as a default. In a production
    environment this is the only value that can work.
    
    This new default value also has the merit of making the 'check' target
    to work in distcheck which does not have a copy of the xkeyboard-config
    keymaps in its sandbox based on ${dataroot}/X11/xkb. The test data
    cannot find the "include" keymaps it needs.
    .../libxkbcommon-0.1.0/_inst/share/X11/xkb
    
    Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

commit 5e43e7b46c9b231742d7cb4ac2473879756aefd9
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Thu Dec 9 19:51:41 2010 -0500

    config: distribute the .sh test programs and test data
    
    The test programs and the test data are required in the tarball
    and needed for distcheck.
    
    Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

commit f424bd8f5ffb9c5fb26f52ed70bdfbebf28bcc7a
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Thu Dec 9 19:45:26 2010 -0500

    config: make it easier to add TEST programs
    
    LDADD is a Makefile wide variable.
    Automake matches prog name with .c file by default
    
    Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

commit ff8e8f696a111ed8db51bdb9707f6cad564aaec1
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Thu Dec 9 18:25:18 2010 -0500

    config: include: use nobase_include_HEADERS
    
    Slightly simpler.
    
    Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

commit 2422c41b8ecec5ca8a461a247bbe3c75f440d1e2
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Thu Dec 9 16:28:52 2010 -0500

    config: add keysymdef and xf86keysym as dependencies of ks_tables.h
    
    This would cover the scenario where these headers file are updated,
    for example, a new version is installed. Running 'make' again
    on libxkbcommon should rebuild ks_tables.h.
    
    Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

commit 69e52ad901d6bb323c11b01ac1745233a9521b68
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Thu Dec 9 16:22:17 2010 -0500

    config: makekeys prog should stand alone in the makekeys directory
    
    This program is a utility to generated a header file.
    The header file it generates should not be located in the
    directory where this utility program is compiled.
    
    Move the /makekeys dir as a sibling of /src.
    This reduces the number of bi-directional relationships
    between directories.
    
    Make corresponding makefiles simplifications.
    
    Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

commit 89377d5cd1ea1dc0d5ce925cddf3260e08ba3b6a
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Wed Dec 8 21:20:46 2010 -0500

    config: use existing variables KEYSYMDEF_H and XF86KEYSYM_H
    
    These automake variables are not currently used.
    The variable KS_HEADERS is not required anymore.
    
    Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

commit bf9fdceef63507da889a22eb1a583d2b6376f5ea
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Wed Dec 8 20:37:26 2010 -0500

    config: remove incorrectly implemented visibility compiler option
    
    CFLAGS is a user variable which should never be set by the configuration.
    It allows the user to alter the configuration compiler options.
    
    The visibility is only set for GNU compiler, leaving libraries built
    with other compilers with the wrong visibility.
    
    All other xorg libraries set visibilty using _X_EXPORT or _X_HIDDEN.
    
    For the time being, all the symbols will have the default visibility
    which does not break anything.
    
    Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

commit ec3fbfdf6dd53e531c53b79f634ed89cd4e776f5
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Tue Dec 7 18:22:38 2010 -0500

    config: use xproto pkgconfig includex11dir variable
    
    Rather than appending X11 to the include dir.
    It should be safe to use as it has been added in 2005.
    
    Use a local variable name matching the pkgconfig name.
    
    Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

commit 3c570b7ce99d1d9fe8d0d696176c8c0d6cd5b171
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Tue Dec 7 18:17:29 2010 -0500

    config: relocate library functions check and comment
    
    No functional changes.
    Follow Automake suggested order.
    
    Reviewed-by: Jeremy Huddleston <jeremyhu@apple.com>
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

commit 41664ba237e073efe16d88e7ff6593677b6ce6c3
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Tue Dec 7 14:32:57 2010 -0500

    config: remove PKG_PROG_PKG_CONFIG test
    
    If pkg-config is missing, the configuration fails while initializing
    XORG_* macros:
    
    warning: PKG_PROG_PKG_CONFIG is m4_require'd but not m4_defun'd
    line 11622: PKG_PROG_PKG_CONFIG: command not found
    
    The output is sufficient to locate the problem.
    It is not possible, or very difficult, to not have pkg-config
    installed as the whole desktop and countless other software
    depends on it.
    
    Acked-by: Daniel Stone <daniel@fooishbar.org>
    Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

commit f507660421c3f005dfba591166d5545464a5c282
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Tue Dec 7 11:09:13 2010 -0500

    config: let Automake handle Lex and Yacc dist and cleaning
    
    BUILT_SOURCES and MAINTAINERCLEAN are not needed for lex and yacc
    Note that xkbscan was missing on those lines.
    
    Automake generates all the rules to handle building, distribution
    and cleaning.
    
    Acked-by: Daniel Stone <daniel@fooishbar.org>
    Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

commit e2f9f51667cf88c398d4536cfcc6996e9d0aa62a
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Tue Dec 7 10:59:13 2010 -0500

    config: allow to build tarball when yacc is missing
    
    Autoconf does not handle this scenario as well as Automake does.
    If xkbparse.c is already there, do not abort the configuration
    if yacc is missing as it is not needed.
    
    If both xkbparse.c and yacc are missing, abort configuration.
    Yacc is a required tool to build the package.
    
    Acked-by: Daniel Stone <daniel@fooishbar.org>
    Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

commit 2c51e4b1957d331ec82019282d2f35f2ef19496d
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Tue Dec 7 10:42:21 2010 -0500

    config: add the default README file.
    
    Acked-by: Daniel Stone <daniel@fooishbar.org>
    Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

commit 7ce1a6dca2ff55a0cda00c754a007f757fb5e37b
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Tue Dec 7 10:39:16 2010 -0500

    config: add the INSTALL target for installation instructions
    
    Acked-by: Daniel Stone <daniel@fooishbar.org>
    Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

commit 63e2719a8f1d61a4678207e9abcecd67087c31ac
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Tue Dec 7 10:33:23 2010 -0500

    config: replace deprecated INCLUDES with AM_CPPFLAGS
    
    Fixes automake warning.
    
    Acked-by: Daniel Stone <daniel@fooishbar.org>
    Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

commit ceba14dc3eebb288862f1e6c8a7863895af859cb
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Tue Dec 7 10:23:18 2010 -0500

    config: update subdirs .gitignore
    
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

commit f75ff7d921d5807d1e5b0aaa248a4d86d8eccfc4
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Fri Dec 3 15:13:01 2010 -0500

    config: remove m4/.gitignore now that toplevel one handles it all
    
    The -Im4 in Makefile.am will have to wait until the day
    there is an m4 macro checked-in git in the m4 directory.
    This does not prevent libtool to install its macros in m4.
    
    Acked-by: Daniel Stone <daniel@fooishbar.org>
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

commit 0bfae4149c684391e16b3b80443954691a209dff
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Fri Dec 3 14:50:14 2010 -0500

    config: .gitignore: template with default values for components #24239
    
    This toplevel .gitignore covers all possible generated files
    from autotools, compiler, linker, etc...
    
    It has been in use for over a year in all xorg modules and has
    prevented a good number of patches.
    
    For example, in this module, src/stamp-h1 was not ignored even
    if the .gitignore had just been updated. Files with a .patch
    extension were not ignored which sometimes cause a patch to be
    checked-in git accidentally.
    
    Acked-by: Daniel Stone <daniel@fooishbar.org>
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

commit 83f64da99332a2ccb1c4641a8a3848ef523d7f58
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Fri Dec 3 14:39:13 2010 -0500

    config: remove AC_PROG_CC as it overrides AC_PROG_C_C99
    
    XORG_STRICT_OPTION from XORG_DEFAULT_OPTIONS calls
    AC_PROG_C_C99. This sets gcc with -std=gnu99.
    If AC_PROG_CC macro is called afterwards, it resets CC to gcc.
    
    Acked-by: Daniel Stone <daniel@fooishbar.org>
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

commit a0512b28de3348d0e32295a77959fd2ed01ffb36
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Thu Dec 2 20:52:34 2010 -0500

    config: initialize autoconf, automake and libtool
    
    Add missing AM_MAINTAINER_MODE, matching --enable-maintainer-mode
    option in autogen.sh.
    
    Acked-by: Daniel Stone <daniel@fooishbar.org>
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

commit 971d9a99556c66571b7eba3407c02178016248cd
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Thu Dec 2 20:42:34 2010 -0500

    config: use XORG_DEFAULT_OPTION from util-macros version 1.8
    
    This will handle AM_SILENT_RULES such that it will not break
    on earlier Autoconf versions.
    It provides a host of other configuration items
    
    Acked-by: Daniel Stone <daniel@fooishbar.org>
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

commit 8562d9780813513a47bb7ff38acb6d7c2e45f3cc
Author: Gaetan Nadon <memsize@videotron.ca>
Date:   Thu Dec 2 20:35:35 2010 -0500

    config: set Autoconf minimum version required to 2.60
    
    This is the current minimum version required for all X.Org modules.
    The module can be configured with any higher version.
    Autoconf features from version > 2.60 cannot be used.
    
    Signed-off-by: Gaetan Nadon <memsize@videotron.ca>

commit f0456a832fd406d7d0c6bbcceccfc57e78160279
Author: Jan Engelhardt <jengelh@medozas.de>
Date:   Thu Nov 11 23:28:29 2010 +0100

    Update .gitignore
    
    Limit exclusion of files to their respective directory
    that they can appear in.
    
    Signed-off-by: Jan Engelhardt <jengelh@medozas.de>

commit f8301ebc5697ce6c865b5a7007aca72f31fd9686
Author: Jan Engelhardt <jengelh@medozas.de>
Date:   Thu Nov 11 23:27:21 2010 +0100

    xkbscan: resolve build warning/rpmlint error
    
    xkbscan.l: In function 'setScanState':
    xkbscan.l:201:1: warning: control reaches end of non-void function
    I: Program returns random data in a function
    E: libxkbcommon no-return-in-nonvoid-function xkbscan.l:201
    
    Change return type of setScanState to void, since a return value is
    never used by its callers.
    
    Signed-off-by: Jan Engelhardt <jengelh@medozas.de>

commit d84da95f69562c4801fa16b5fb797d28841c2ab1
Author: Jan Engelhardt <jengelh@medozas.de>
Date:   Thu Nov 11 23:05:33 2010 +0100

    build: run autoupdate
    
    Signed-off-by: Jan Engelhardt <jengelh@medozas.de>

commit b86fc752727a82547b4a06959658f9e5dfa886a9
Author: Jan Engelhardt <jengelh@medozas.de>
Date:   Thu Nov 11 23:03:43 2010 +0100

    build: use proper quoting in autogen.sh
    
    Signed-off-by: Jan Engelhardt <jengelh@medozas.de>

commit 2b36543ab1e7ed4a2c7d49dce1da043e6984cded
Author: Jan Engelhardt <jengelh@medozas.de>
Date:   Thu Nov 11 23:02:11 2010 +0100

    build: use AC_CONFIG_MACRO_DIR as per libtoolize warning
    
    libtoolize: Consider adding "AC_CONFIG_MACRO_DIR([m4])" to configure.ac and
    libtoolize: rerunning libtoolize, to keep the correct libtool macros in-tree.
    libtoolize: Consider adding "-I m4" to ACLOCAL_AMFLAGS in Makefile.am.
    
    Signed-off-by: Jan Engelhardt <jengelh@medozas.de>

commit f94a64cc08b47cdbfdfea5b5756340246fc391ed
Author: Jon TURNEY <jon.turney@dronecode.org.uk>
Date:   Tue Oct 26 16:21:28 2010 +0100

    Link with -no-undefined
    
    Use -no-undefined to assure libtool that the libxkbcommon library has
    no unresolved symbols at link time, so that libtool will build a shared
    library on platforms require that all symbols are resolved when the
    library is linked.
    
    Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>

commit 8d2c522f3156c3381d8530ce2346d1ec84fafe8d
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Thu Oct 21 21:34:41 2010 -0400

    Don't check for xlib, we don't need it

commit c88439dbf076ade1f6500d04b2db30e28a81c2d3
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Wed Oct 20 22:27:07 2010 -0400

    Update xkb->ctrls->num_groups when copying the keysyms
    
    This used to be set when we read an XKM file.

commit 125691573ce4b28a2c65a234c612f91ce573f838
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Wed Oct 20 15:57:45 2010 -0400

    Restore compatible action structs
    
    This unbreaks the X server code to serialize an xkb_desc, but loses the
    32 bit vmod fields.  Needs some work...

commit a84c08795e1090905d8ca349c1c1773db2fde065
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Tue Oct 19 21:57:59 2010 -0400

    Use flex for generating the scanner, add support for parsing from strings
    
    Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>

commit a2f115581d14a02d93c2803d992ddb37a209fd6d
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Tue Oct 19 15:16:50 2010 -0400

    Add struct xkb_state

commit e879828717a8b7bdf12efbbf9a1baeb20e1fcdd2
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Fri Oct 8 15:33:18 2010 -0400

    Don't return a static buffer in public API

commit d202bc4462b4cca91d438b19c3293671f62e15a3
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Fri Oct 8 15:07:44 2010 -0400

    Pull in XKB_COMMON_* version of modifier masks
    
    This way we can use libxkbcommon without having to include X.h.

commit 73ca959d7b1832b266fce7a18d12b74d95180343
Author: Adam Jackson <ajax@redhat.com>
Date:   Mon Sep 27 16:05:52 2010 -0400

    Dead code removal and static markup
    
    Signed-off-by: Adam Jackson <ajax@redhat.com>

commit fb05ee47bf02950aec63533587880461b70418fc
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Fri Sep 3 20:35:28 2010 -0400

    Remove libxkbfile dependency for real this time

commit 20bfe1280d69702ea730bfe7ef6ee671deb923a1
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Sun Aug 29 21:30:10 2010 -0400

    Use const char * in struct xkb_rule_names

commit be2bd66181ce4b55a64d087ea875e99e1e3b856e
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Wed Aug 25 14:51:52 2010 -0400

    Pull in a few #defines from libxkbfile and lower kbproto requirement

commit 351f8c6587bed26753370f8f5c351dd339aadbb0
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Fri Jul 2 15:05:21 2010 -0400

    Drop Bool type
    
    It's a nightmare trying to avoid double definitions.

commit b3805a2360c9dd7c73333a91245762e66a38c2cb
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Fri Jul 2 12:26:43 2010 -0400

    Get rid of a few unused #defines in public header

commit 97fbc348b00bd30faa934a8ae8145cbaac9db881
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Fri Jul 2 12:14:03 2010 -0400

    Rename XkbRMLVOSet to struct xkb_rule_names

commit 15f259993ec63c2ea692ae1b1eb52a20c4983c1b
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Fri Jul 2 12:10:05 2010 -0400

    Move private structs and defines to private headers

commit 3f0034a990acfa3587c975306a37f7b455fb3d62
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Fri Jul 2 11:50:01 2010 -0400

    Rename public entry points to lowercase and underscore

commit 5669e1a82d24af8ebb6653f75a80f8b11279a6fc
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Fri Jul 2 11:43:56 2010 -0400

    Compile with -fvisibility=hidden when possible

commit 9f6026867a7a3543efdee5d3051f160e67c0edd3
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Thu Jul 1 14:35:24 2010 -0400

    Pull in enough structs and defines from XKBstr.h to only need XKB.h
    
    We want to move away from sharing implementation structs and let libX11
    and libxkbcommon use each their own set of structs.

commit 9d55d5bbf647d23ffdffeecc9111481d3f37d422
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Wed Jun 30 17:32:54 2010 -0400

    Drop Xmd.h include now that we're using uint32_t

commit 8e653493d0b485eb96ae1191fab2b5814b209f73
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Wed Jun 30 17:31:34 2010 -0400

    Fix warning from CARD32 -> uint32_t conversion

commit e10e16ad2fc37d2941c0d2cb4cfdb61891a380e1
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Wed Jun 30 17:20:56 2010 -0400

    Constify XkbcAtomText()
    
    Atoms aren't mutable and this lets us put tbGetBuffer() back in the box.

commit d95b289367c4c6cd95042db35c88a6deb20c925b
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Wed Jun 30 17:13:21 2010 -0400

    Make XkbcInitAtoms() call optional

commit 0ece2cdbaf776a16f8864a7314ad2089a4b9980f
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Wed Jun 30 16:56:24 2010 -0400

    Drop more malloc/free wrappers

commit a76df86572a3227f118bfd2f9bbda7e731a31752
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Wed Jun 30 16:33:25 2010 -0400

    Use the right action structs
    
    We were casting the union members to the wrong action structs (from kbproto).

commit 1723ef1bc73fc24f242ac6fb428e8c9f3d29d98d
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Wed Jun 30 15:48:39 2010 -0400

    Copy over missing action structs from kbproto

commit 9258cc3dca504479233bcd4eaefb5a0930c998cb
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Wed Jun 30 13:31:21 2010 -0400

    Rename Xkbc*Action to struct xkb_*_action

commit 399d4bd6780778579c641d9c60040524327efeb7
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Mon Jun 28 06:58:01 2010 -0400

    Drop malloc wrappers

commit 47d3b3969b22aa8b59922363d1ca086d3c4156e6
Author: Kristian Høgsberg <krh@bitplanet.net>
Date:   Mon Jun 28 06:50:12 2010 -0400

    Drop CARD32 and Opaque types

commit 2fb329c9649a6e743416b6457bb0af9633ac1064
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Jun 23 16:25:10 2010 +0100

    Copy and duplicate XkbModsRec and XkbKTMapEntryRec
    
    Copy these types in so we can extend the vmod size.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit b74223eb50410941ec7589bffdc12183f4a23229
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Wed Jun 23 16:25:02 2010 +0100

    fix mod size confusion
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 8693c2652c62211d98885bcaebb73877acbb125f
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Jun 22 15:54:52 2010 +0100

    Add really rudimentary rules caching support
    
    Keep the parsed form of the last-used rules file around, and reuse that
    if we get asked for the same ruleset.  If not, bin it and cache the
    other one.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 7257d4c89e52aa727df25564109cecc4d33b9543
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Jun 21 14:28:34 2010 +0100

    Use CARD32 instead of Atom, move geom headers in
    
    Use CARD32 instead of Atom/KeySym/et al to avoid type size confusion
    between server and non-server code; relatedly, move the geometry headers
    in from kbproto, so every non-simple type (i.e. structs containing
    nothing more than basic types) is now copied into xkbcommon.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit b38525421f5b6f28b7f441ff8b2c3a97b047aae2
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Jun 21 14:27:58 2010 +0100

    Interp: More lazy keysym resolution
    
    Resolve the keysyms when we create an InterpDef, rather than directly
    in the parser.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 2c4a045aca7c680a0315850a0e69784ac08f96a3
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Mon Jun 21 14:22:26 2010 +0100

    Allow external atom databases
    
    Allow people to plug in an external atom database (e.g. the X server's),
    so we don't have to migrate our own atoms over later.  We are a bit
    over-keen on atoms at the moment, so it does pollute the atom database a
    bit though.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 15b0db5492a2725d45011b8fef70006cc96fee0c
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Jun 17 05:56:08 2010 +0100

    Copy in XkbCompatMapRec and XkbSymInterpretRec
    
    These contain actions, so transition them ahead to XkbcAction and move
    them into XKBcommon.h.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 60e7eeeba1d6c1b17cc71c36381251e633d6716e
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Jun 17 03:16:09 2010 +0100

    Use CARD32 instead of Atom, drag in XkbClientMapRec
    
    On 64-bit architectures, XID varies in size between the server (always
    32 bits), and non-server (always unsigned long) for some inexplicable
    reason.  Use CARD32 instead to avoid this horrible trap.
    
    This involves dragging in XkbClientMapRec so we don't get stuck in the
    KeySym trap.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit d2d787df65d51c085dff0f9c4daf14bfffcaeeec
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Thu Jun 17 00:51:49 2010 +0100

    Regroup actions into current vs. deprecated, resize vmod
    
    Use Xkbc* for all our actions that we intend to keep around, and Xkb*
    for deprecated ones we can hopefully get rid of, at least internally.
    
    While we're at it, make vmods be a uint32_t.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit e564235b436159f23a77270752ffdee1867f27c8
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Jun 15 19:43:14 2010 +0100

    xkbcomp: Don't malloc() and free() most scanned tokens
    
    Use a constant buffer instead.  Sigh.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit f246db20f4d824b4286c00714b0c7e1b5a3d5b8f
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Jun 15 19:40:31 2010 +0100

    Fix compilation with DEBUG
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit acc467de9f8d96beea6d93a31fdb95b3a551cd11
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Jun 15 19:39:15 2010 +0100

    xkbcomp: Use fread() instead of getc()
    
    So, it turns out that if you're parsing a fairly large amount of data,
    using getc() to get all the input rather than, say, read(), is some kind
    of remarkably daft and unperformant idea.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 240a0c3409f2cd81394188175499087c37793a55
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Jun 15 19:38:16 2010 +0100

    xkbcomp: Lazy keysym parsing (avoid XStringToKeysym)
    
    Instead of calling XStringToKeysym on every keysym we parse, store it as
    a string until we need to store it in an actual keymap.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 48baabeb38c0afc3dc071038662f43419b058cf4
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Jun 15 19:30:30 2010 +0100

    Atoms: Avoid allocations in XkbAtomText()
    
    XkbAtomGetString() returns a freshly-allocated string, whereas
    XkbAtomText() returns the same in a temporary buffer.  XkbAtomText used
    to call XkbAtomGetString() and then free the result, which seems quite
    spectacularly pointless when you think about it.  Shuffle the atom code
    around so we don't have to allocate for XkbAtomText().
    
    This changes semantics slightly wrt non-printable characters, but I
    haven't been able to see any effect so far.  And it may well be ever so
    slightly quicker.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 080a083fd26a05176b40f810f36ebe22b77d477c
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Jun 15 16:43:10 2010 +0100

    configure.ac: Enable automake silent rules by default
    
    This allows us to spot warnings much more easily.  Also, drop the
    now-deprecated AM_MAINTAINER_MODE.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit a0e180b08382bb62415f2cd37c61ecfd99b00773
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Jun 15 16:42:06 2010 +0100

    Expose tbGetBuffer to the rest of libxkbcommon
    
    This will let us implement XkbAtomGetString on top of XkbAtomText,
    instead of having the latter get a duplicated string, dump it into a
    temporary buffer, and subsequently free it (sigh).
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 4346e0065b558a41957bcca670484cbe408717d3
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Jun 15 16:41:10 2010 +0100

    xkbcomp: keycodes: Silence gcc warnings
    
    It was right to warn us: some of these were actually bogus.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 5df3dff7412b3fafe1046880ed2356abd63fef0e
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Jun 15 15:27:12 2010 +0100

    xkbcomp: geometry: Plug numerous atom text & expr leaks
    
    This code is absolute misery.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 18039a6c0b7a20b05e1fff663981deb8473da218
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Jun 15 15:25:40 2010 +0100

    xkbcomp: Atom text and expr leak fixes part #973
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit a22386d402d9e40ca1a04406068458412d52b221
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Jun 15 15:23:23 2010 +0100

    xkbcomp: Don't leak atom text and string exprs, again
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 8904c6eea747628a93afcfc3017df537ab43223c
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Jun 15 15:22:05 2010 +0100

    xkbcomp: expr: Use XkbcAtomText instead of GetString
    
    This returns us a temporary string, rather than leaking the atom.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit ad0a3d7c52f94af306a29145560c9400fabf9f33
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Jun 15 15:20:32 2010 +0100

    xkbcomp: Don't leak atom text and string exprs
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit d20bdd3b9add0eae367dd666fba06378c195d687
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Jun 15 15:14:58 2010 +0100

    xkbcomp: vmod: Don't get and immediately intern atoms
    
    XkbcInternAtom(XkbcAtomGetString(atom)) has to be the most spectacularly
    broken antipattern I've yet seen.  Just compare the atoms directly.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 50a037cacf75b106a2ee31680fb4588a8873a262
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Tue Jun 15 15:13:56 2010 +0100

    xkbcomp: Replace open-coded strdup
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 5140250273ff02621ae286a68cd75b47a2695e43
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Sat Apr 25 18:15:02 2009 +1000

    Add testcase for XkbcCanonicaliseComponents
    
    Should be reasonably thorough; the shell part is, however, quite
    unpleasant.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 85b7f47d8a544dab204214de9c248f03e78261fe
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Sat Apr 25 18:13:52 2009 +1000

    Add XkbcCanonicaliseComponents
    
    Canonicalises two sets of components (new and old), e.g.:
    new: +bar
    old: foo
    result: foo+bar
    
    This is required as part of the spec, so clients can reuse part of the
    device's old keymap.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 8ffa371395ac0f3c3942d60dd63509c534c877c0
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Sat Apr 25 18:13:24 2009 +1000

    XKBcommon.h: Make header self-contained
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 8b5af79b7b3358783b3cfe5f023d01b58ce208e4
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Sat Apr 25 14:55:59 2009 +1000

    Keysym: Add apallingly bad API documentation for keysym <-> string
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 70b64213ca620c0f4c50cd05b9a0667357b7d297
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Sat Apr 25 14:52:51 2009 +1000

    Make keysym <-> string conversion public API
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 62eb167d56f021a1aa151c9431d320b16a0a3794
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Sat Apr 25 14:51:46 2009 +1000

    XKB: Text: Use keysym <-> string conversion from keysym.c
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit a8bb86a48a9823ae1c0facfa3970e0854136b5a3
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Sat Apr 25 14:51:16 2009 +1000

    Test: Keysym: Add tests for new keysym <-> string conversions
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit cdc735c8ca9ebc270429074cdf0205407d4b5d29
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Sat Apr 25 14:42:42 2009 +1000

    Keysym: Fix conversion for Unicode and bare numbers
    
    Ensure that Unicode string representations are accepted and turned into
    numbers, as well as hexadecimal numbers in 0xabcd1234 form; unknown
    keysyms are output as 0xabcd1234 in string form.
    
    This also ensures that strings are never returned malloc()ed.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 8e3239a78f7e47321535a4917bddf4ce00d3d244
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Sat Apr 25 14:32:04 2009 +1000

    KeySym: Actually handle NoSymbol
    
    Add NoSymbol into the keysym table, so keysym <-> string conversion works for
    that, too; also eliminate special-casing of VoidSymbol.
    
    This will require special-casing in libX11 to preserve its API.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit a5ce9754dc3c8313e9d35bf86d31d78e8bf9653c
Author: Daniel Stone <daniel@fooishbar.org>
Date:   Sat Apr 25 14:29:23 2009 +1000

    test: Fix srcdir != objdir build and test failures
    
    filecomp would fail because it couldn't find the input files, after
    compilation failed due to missing includes.
    
    Signed-off-by: Daniel Stone <daniel@fooishbar.org>

commit 4e854a21aa3d0dbb281db911849ed3d7cb73303c
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Tue Apr 21 23:22:25 2009 -0700

    listing: Drop unused deviceSpec argument
    
    The server might care about this, but ListComponents is just reading xkb
    files.

commit 481deea178259dddd3f07ed22d525796d1a2648e
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Mon Apr 20 06:40:34 2009 -0700

    xkbcomp: Another fairly major rewrite of the listing mode
    
    The listing code in xkbcomp had been setup to allocate a set of buffers
    with file paths and then later parse through them to find which maps were
    needed.
    
    All the allocation (with the additional allocation for the components
    list) was making it really slow, so this patch makes everything simpler
    by just generating the components list as we walk the directory tree.

commit 18b43f8dfe641bf951b92d074b1cc6cee71d9869
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sun Apr 19 16:30:36 2009 -0700

    Rewrite listing code to generate XkbComponentListPtr
    
    In xkbcomp, the listing code printed out the xkb files to stdout and the
    caller would parse the output. Here, we can just generate a
    XkbComponentListPtr and pass it back.
    
    This should be a series of smaller commits, but there was no clean way to
    do it since it's basically a complete rewrite except for the core map
    matching logic.
    
    A lot of code used for special printing modes in xkbcomp has been
    shedded. Callers can massage the output as they please.

commit 559305a5cb3e9735203d8fd8fc10d8ec487b101f
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Thu Apr 16 21:47:28 2009 -0700

    xkbcomp: Kill unused listing code and make functions static
    
    Much of this was only called from xkbcomp and not used to generate
    listings for the server.

commit 5983a4e69d8f7ee85f6726b403b4bcc236c8d8b1
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Thu Apr 16 20:01:13 2009 -0700

    Scale back global variables
    
    Some of the global variables were either not used anymore or only used
    in the listing code.

commit 9520ea0eb3794228fc78844feb1f28f23b076432
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sun Apr 12 12:30:12 2009 -0700

    Add XkbNameMatchesPattern implementation from xkbfile
    
    The xkbcomp listing code matches a glob type pattern against installed
    xkb files. This adds a Xkbc implementation of the pattern matching code.

commit fa183ce354146d94a9e05402debdcfaf50fdde0f
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sun Apr 12 12:15:05 2009 -0700

    xkbcomp: Fix use of removed macros

commit 3d4c4d06d560228414ecdc4944e46486e70b075e
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sun Apr 12 11:13:52 2009 -0700

    Revert "xkbcomp: Remove listing sources"
    
    This reverts commit c4c9e36fbf4019d802323d9053f54cbfa6d3d5e5. It turns
    out that the listing code is used to support the X_kbListComponents
    request (via XkbListComponents).
    
    This will have to be refactored into some reasonable interface instead
    of the current usage where the server reads xkbcomp stdout. Gross.

commit 3dee8ac99970f4d9dfabee19a271816f1cfc38da
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sun Apr 12 12:14:36 2009 -0700

    misc: Coding-style cleanup

commit 53ead9b575608b087ca06879021411a4df19f35c
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Apr 11 10:35:44 2009 -0700

    Use xkbpath API for locating rules
    
    Instead of hardcoding the XKB base directory when searching for rules in
    the xkbcomp code, we can extend the xkbpath API to cover rules and reuse
    it. That will make it more convenient if it's ever exposed so people can
    set their XKB search paths in a reasonable way.

commit c728d91bde2a05f8cd6b42bf1bc2c830ca75689b
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Fri Apr 10 12:33:31 2009 -0700

    Program and files for testing CompileKeymapFromFile
    
    A few simple test cases for verifying the operation of parsing a keymap
    file and compiling a keyboard description from it.

commit abbd14193502010cda1dcd2bc892343e29fe06b4
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Fri Apr 10 12:25:51 2009 -0700

    Add interface to compile keyboard description from keymap files
    
    We need to support generating a keyboard description from a keymap file
    because there are just some cases where RMLVO or ktcsg is not enough.
    
    The map choosing logic has been refactored into its own function and now
    supports choosing a named or default keymap.

commit e98eb80509476459f207d902a2a8052b967e2d93
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Thu Apr 9 20:52:26 2009 -0700

    test: Remove extraneous includes
    
    These programs don't actually use the internal API.

commit 0280b10df90ff5fb5a38f9a61800338bcc15b8ca
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Thu Apr 9 14:29:32 2009 -0700

    Make XkbcInitAtoms externally accessible
    
    Applications (like the server) need to initialize the atoms system
    before using the rest of the library. Maybe it should just init itself
    implicitly.

commit f5d37e279a807c6c0afd76910681e33152ed8efe
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Wed Apr 8 17:59:15 2009 -0700

    Constify public API
    
    There's no reason the arguments can't be const.

commit babae389354e67b121a48894a82a62acc40b30ec
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Wed Apr 8 17:54:55 2009 -0700

    Change CompileKeymapFromRules to take XkbRMLVOSet
    
    Let's use a nice interface now that it's available from XKBrulescommon.h.

commit 6a84a34d8689fb76b202f583452b97d57c68673d
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Wed Apr 8 07:46:25 2009 -0700

    Remove all non-public API from XKBcommon.h header
    
    The noble intention was to expose all the new API and new generic types
    in the split out kbproto headers through XKBcommon.h. It turns out that
    would be a massive amount of work in the server. Someday, but first just
    wedging in XkbCompileKeymap* would be good.
    
    Most of the API is in new internal xkb*.h headers. In order to allow the
    XKBcommon.h header to be used from the server, we can't pull in other
    headers from kbproto since the server has its own copies. However, types
    that are different (XkbDescRec, XkbAction) still have Xkbc equivalents
    here, and I think they should be used in the server.

commit b4a3c39b7e5141642f1146d971c26f7f79f13037
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Tue Apr 7 19:56:41 2009 -0700

    Remove KS macros available in XKBfilecommon.h now
    
    A couple of the XkbcKS* macros become redundant with XKBfilecommon.h
    split out in kbproto.

commit 5889cef8090e785465b6fec10b7e6a446a8c1656
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sun Apr 5 20:27:35 2009 -0700

    Require strdup and remove utils wrapper
    
    This kills a couple warnings from using the uStringDup wrapper. If you
    don't have strdup on your platform, you have bigger issues.

commit 8b100fc0a981cdf01115dc85ab1984f604be5655
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sun Apr 5 15:15:20 2009 -0700

    Add action datatypes as defined in the server
    
    Some of the XkbAction types are defined differently in the server, so we
    add those to XKBcommon.h and use them here like XkbcDescPtr. We'll have
    to deal with the impedance mismatch on the client side later.

commit e0e77b71de550c1d2ae053eda4a9ab55db649e62
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sun Apr 5 09:30:15 2009 -0700

    Coding style cleanup on key allocation functions

commit 713c8f418f4d04fbf4e776a57a3997e89b15711b
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Apr 4 12:54:44 2009 -0700

    test: Exercise compiling from components
    
    This could probably use a lot more real world test cases, but it does
    the job for now.

commit a2e597675b9b760b7d9a0be383c46c17f463b4e5
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Apr 4 12:50:27 2009 -0700

    xkbcomp: Don't say we're exiting when we're not

commit 85039a0d76fc2af076aea24bd06d3af33625e9c3
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Apr 4 12:31:55 2009 -0700

    xkbcomp: Give keymap file empty name if none supplied
    
    Ensure that the keymap file topName is not NULL since it gets blindly
    dereferenced later.

commit 125ce76f5b10e58c75e9a242362f57856b4aaf4f
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Apr 4 12:21:05 2009 -0700

    xkbcomp: Ensure at least keycodes supplied in components
    
    It seems that at least a non-empty keycodes component is required to
    compile a XkbcDescPtr.

commit fdd8a9ec1b966785c2ff0e7124d485d323101b18
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Apr 4 12:17:50 2009 -0700

    xkbcomp: Don't dereference NULL VarDefsPtr

commit 99d2f4a5eb858d3d906f3de1f78f1118e148e8d7
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Apr 4 12:16:04 2009 -0700

    xkbcomp: Refactor keymap file generator

commit 4f736db995a593e4fbb692a62aa1c9cf85843bba
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Apr 4 11:04:35 2009 -0700

    test: Minor refactor to allow $EXEEXT in program names

commit 8f9a6129904660cb3a83086887b87e27d1f75169
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Apr 4 10:52:23 2009 -0700

    test: Add logging and some intentionally failing cases
    
    We want to log the output of the tests rather than letting them go to
    stderr. This allows tests we expect to fail to be run.

commit 8269cbce81958363b4e278e26e3db3f811d4a8aa
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Apr 4 10:02:39 2009 -0700

    xkbcomp: Generating components requires rules _and_ layout
    
    This came from trial and error, but it seems that you can generate a
    valid keymap with only rules and layout.

commit fa96602d0fd78085bfd8f407ff025d42ef10f872
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Apr 4 09:51:33 2009 -0700

    xkbcomp: Fail when converting rules to components returns an error
    
    XkbcRF_GetComponents was returning an error but leaving the generated
    components alone. This ensures that the broken XkbComponentNamesPtr is
    freed and the error is passed up to the caller.

commit e72fc29f337db6d183b90dcb70e394fb08753f0c
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Apr 4 09:48:59 2009 -0700

    xkbcomp: Cleanup error messages

commit 83367a8d2d91bcfbb34080d64fc8b21b15c866c8
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Apr 4 09:46:20 2009 -0700

    xkbcomp: Ensure user has supplied a rules name

commit 95dbbb8a7bb23af57364d73d76dd3a4e147b29a8
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Apr 4 09:37:53 2009 -0700

    rulescomp: Remove unneeded API

commit 5d95a43ad06a43c07f91735ea46d43a944b735dc
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Apr 4 09:29:43 2009 -0700

    Refactor xkbpath so that it implicitly initializes
    
    Instead of requiring the user to call XkbInitIncludePath() and
    XkbAddDefaultDirectoriesToPath(), all the path entry points now implicitly
    initialize the path. When initializing, the default directories are added
    so it's useful.
    
    This provides normal operation without exposing the xkbpath API. That
    might happen later to allow apps to edit the XKB search path.

commit 5c91062334dc9f2d902ea1d368d5374c9186a0ef
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Apr 4 09:19:51 2009 -0700

    Remove trailing spaces in source files

commit 5cc55d7cbbb20971c2e8287a6fc95bd22a91ecdd
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Apr 4 09:14:20 2009 -0700

    Test compiler to simulate xkbcomp usage
    
    Added a test program, rulescomp, which takes a RMLVO set and generates a
    XkbcDescPtr. This is essentially what the xserver will do, except that we
    still need to access some xkbcomp internal API to make it work.

commit 51eff3d939ccef896a548f9d50550045d140455d
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Apr 4 08:52:17 2009 -0700

    Fix cleanup error in names allocation
    
    A conditional got reversed during the coding style cleanup.

commit c38cdc5dedba48f85ed651eb76af864c74ccdd73
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Fri Apr 3 21:18:58 2009 -0700

    xkbcomp: Ignore generated parser

commit 3a709e399ec6509bc332763270925bac16eeb0b7
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Fri Apr 3 21:16:56 2009 -0700

    xkbcomp: Don't segfault if the debug files aren't set
    
    Another interface that needs to be cleaned up.

commit ec86ce1f1a9a0ad0c0891e320519431093c3cef7
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Fri Apr 3 20:34:41 2009 -0700

    xkbcomp: Declare global debugging vars
    
    These will need to be sanitized at some point, but for now let's just get
    the code running.

commit c14c60bb37c0e82e92465eb29179bd95e6585c7b
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Fri Apr 3 20:33:01 2009 -0700

    xkbcomp: Back out strdup warning cleanup
    
    There are some spots in the code that use strdup without checking the
    argument, so we need this to not segfault. Cleanup later...

commit 71baa3d85aa8feb2767ccf3cfade2e57d786f3bc
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Fri Apr 3 19:35:01 2009 -0700

    Fix install path for XKBcommon.h

commit 5216f0c92f183274ff8f80eff012c0e85549f077
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Thu Apr 2 06:37:16 2009 -0700

    Drop keysym.h pollution from XKBcommon.h
    
    There's really no need to pull this into a public header.

commit a9822d87209357170d05cc9f5c98d8ca9497a065
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Wed Apr 1 06:22:06 2009 -0700

    Add xkbcommon pkg-config file

commit db03c9b7e93d380480466f7e426783a04a3bfb4d
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Tue Mar 31 19:30:44 2009 -0700

    xkbcomp: Clean up utils prototypes
    
    Includes using a macro for the gcc format attributes instead of repeated
    ifdef's.

commit a27e56b6fbeb5b09330f449340b5e7ad07cfd824
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Tue Mar 31 07:21:20 2009 -0700

    xkbcomp: Remove duplicated macros

commit 05daf09f188eab153f8807e4103d1d581d0fa162
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Tue Mar 31 07:09:47 2009 -0700

    xkbcomp: Kill warnings about address always evaluating as true

commit a1513292665a5f21fea62825f57d1cfb2c329e6a
Merge: e128494 a8d936b
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Tue Mar 31 06:57:06 2009 -0700

    Merge commit 'tilt/master'

commit a8d936bda5fc226959ae4949fd018cae28f16348
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Tue Mar 31 05:36:52 2009 -0700

    Compile keyboard description from XKB rules, too
    
    XkbcCompileKeymapFromRules can be used to generate a XkbDescPtr from XKB
    rules instead of using components. The previous XkbcCompileKeymap has
    been renamed to XkbcCompileKeymapFromComponents.

commit 94fd31746372226a62c5b0f80d32d47b3e9a77cb
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sun Mar 29 11:25:44 2009 -0700

    Add rules file parsing from xkbfile
    
    Copy over the Xkb_RF* rules parsing functions from xkbfile's maprules.c.
    Eventually, this will be tied into xkbcomp's path searching utilities so
    you don't need to supply a full path to the rules file. Also, it this
    should eventually incorporate the server's RMLVOSet.

commit e1284944cfdb47c70dc59b051cafe32c70283483
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sun Mar 29 11:25:44 2009 -0700

    Add rules rules file parsing from xkbfile
    
    Copy over the Xkb_RF* rules parsing functions from xkbfile's maprules.c.
    Eventually, this will be tied into xkbcomp's path searching utilities so
    you don't need to supply a full path to the rules file. Also, it this
    should eventually incorporate the server's RMLVOSet.

commit 3fc0dcc8167b2a306ba9a5146dade7b7b2387f63
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sun Mar 29 08:55:18 2009 -0700

    Generate keyboard description from components
    
    Finally, we can generate a XkbcDescPtr from a XkbComponentNamesPtr. This
    involves turning the components into a parsed XKB file and then passing
    it into the compiler. This first conversion needs more error handling.

commit 1115d55549aa6a2df3b1d1e7ad557638dd5addb0
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sun Mar 29 08:17:13 2009 -0700

    xkbcomp: Include Xdefs.h for Atom in tokens.h

commit 587a5d956f579fe779eea1d35a826410c71d0813
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sun Mar 29 08:15:27 2009 -0700

    xkbcomp: Add missing includes for Bool in xkbpath

commit e86b31ce923c3f9cb28d483e002234064b94c24b
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sun Mar 29 08:11:25 2009 -0700

    Add XKBlib resizing functions
    
    These were originally in XKBMalloc.c.

commit d43a7bf02fcda0a43112ee6a69a5d8e647dfe1a6
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Mar 28 19:21:18 2009 -0700

    Copy xkbfile IsUpper/IsLower macros
    
    xkbcomp was using Xlib's XConvertCase to check upper/lowercase. That's a
    lot of code, so hopefully the xkbfile macros using _XkbKSCheckCase are
    good enough. This also required that <X11/keysym.h> is included to get
    all the XK_* definitions.

commit eff1c53873e1190b703ee5f84b4240f070dd0927
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Mar 28 19:00:13 2009 -0700

    Copy XkbEnsureSafeMapName from xkbfile

commit c4c9e36fbf4019d802323d9053f54cbfa6d3d5e5
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Mar 28 18:50:29 2009 -0700

    xkbcomp: Remove listing sources
    
    The xkbcomp listing APIs were only needed for the "xkblist" mode, which
    won't be supported here.

commit fe94593d022633514c43c48455451985e71e2a09
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Mar 28 18:17:34 2009 -0700

    malloc/misc/xkb: Coding style cleanup

commit 5315e5d14a11004798fd2ef98f568afc3d21ebf4
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Mar 28 17:55:46 2009 -0700

    Add XKBlib API to support keytypes
    
    Added common variants of XkbComputeEffectiveMap, XkbInitCanonicalKeyTypes
    and all their needed functions. A couple functions that were in alloc.c
    moved to malloc.c to mirror the libX11 sources better.
    
    Original code in
    
    libX11/src/xkb/XKBMalloc.c
    libX11/src/xkb/XKBMisc.c
    libX11/src/xkb/XKB.c

commit baa9581d81196df87819840d7769945900f3a18a
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Mar 28 16:21:25 2009 -0700

    geom: Coding-style cleanup

commit 62482b9614112e1477264dc1d209ff3fb7ddd3fc
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Mar 28 16:08:46 2009 -0700

    Add geometry Compute API from XKBlib
    
    A small needed subset from libX11/src/xkb/XKBGeom.c.

commit 28de09e51564f32fe96924889b32d08808b12677
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Mar 28 15:51:06 2009 -0700

    Add xkbcommon macro for XkbKSIsKeypad and XkbKSIsDeadKey(k)
    
    IsKeypad is used in symbols, but we'll just grab them both. It might be
    better to split parts of XKBfile.h out eventually.

commit a53b9b1ed397323bd2f0d2d2e9130fabad824b83
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Mar 28 15:32:51 2009 -0700

    Add XkbModIndexText replacement
    
    Now, I think we should have all the *Text functions we need.

commit a59ce8f52575283bdb49c3f597807daa25a3492a
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Mar 28 15:24:06 2009 -0700

    Drop another unneeded format argument
    
    Almost cleared of XkbMessage...

commit 54aea7fe8bb5455040b836d09fae7fb0d352a08b
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Mar 28 15:12:30 2009 -0700

    Add VMod Text functions from xkbfile

commit 46e5e164d6611c88e422dcb9f3bae0b0d926a08c
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Mar 28 12:39:21 2009 -0700

    Copy XkbAddGeom* functions from XKBlib
    
    These are needed by the geometry compiler in xkbcomp.

commit b0acc97a9348ad1151416728ae391346df9d5b4e
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Mar 28 12:03:35 2009 -0700

    xkbcomp: s/XStringToKeysym/XkbcStringToKeysym/

commit 1f08ae1e56c8cd99485447146bfd8528e6576c2b
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Mar 28 11:56:35 2009 -0700

    Expose all the geometry allocation subroutines
    
    We need a couple in xkbcomp, but they might also be needed externally,
    too.

commit 39d7be43c8056c4e81044d12cef652c528682bfe
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Mar 28 11:45:05 2009 -0700

    xkbcomp: Use xkbcommon allocation functions
    
    s/XkbAlloc/XkbcAlloc/ so we don't know XKBlib.

commit b9335d5810e1504daa228cc21497aae511a0e3f3
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Mar 28 14:09:36 2009 -0700

    Kill off usage of Display
    
    The use of Display in xkbcomp always boiled down to passing it to
    XkbInternAtom and XkbAtomGetString. This shouldn't be a problem here.

commit 2671b777cf146d93f8963dac79964d9167c6de66
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Mar 28 14:06:26 2009 -0700

    Add more *Text functions from xkbfile
    
    This should cover all the usage in xkbcomp. The format arguments were
    dropped except for the special case of XkbModMaskText, which needs to
    write in XkbCFile format in HandleVModDef. This was just changed to a
    Bool to avoid the need for the macros in XKBfile.h.
    
    The function prefixes have been renamed to be unique from xkbfile.

commit 8544cde52e8b1e2cac21aa1ca9760c5a0f834472
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Mar 28 06:56:26 2009 -0700

    xkbcomp: Drop unused Display argument in Atom functions
    
    The xkbcommon Atom implementation doesn't take Display into account.

commit 72df9bb35f1dde5ed0ef7aae048afeaf0cb8c961
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Sat Mar 28 06:32:08 2009 -0700

    Move *Text APIs into libxkbcommon
    
    These seem like they might be generally useful, and more will be needed
    from xkbfile.

commit 18337008b5132d527d8c01bbc0da7571c17e6595
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Fri Mar 27 20:58:27 2009 -0700

    libxkbcomp: Use the internal Atom implementation
    
    s/XkbInternAtom/XkbcInternAtom/ and s/XkbAtomGetString/XkbcAtomGetString/

commit c277d3d438f0088420eedbc2badfe4ba021e6cc8
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Fri Mar 27 20:53:26 2009 -0700

    libxkbcomp: s/Status/int/ since we don't have Xlib.h

commit d5a9be653bcd950db4000e3d9167f7eb5c89cbf1
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Fri Mar 27 20:32:33 2009 -0700

    libxkbcomp: Drop unused format field for *Text functions

commit 6a578de9cbac1645633b424630594bd90c53f27e
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Fri Mar 27 20:20:01 2009 -0700

    libxkbcomp: Add non-xkbfile XkbActionTypeText

commit 4fe322aa99de2d56c28d5ded14e16a980edb332e
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Fri Mar 27 20:13:22 2009 -0700

    libxkbcomp: s/XPointer/char */
    
    Replace XPointer with its definition since we don't have the privilege
    of using Xlib.h. Why this is char * and not void *, I'll never know.

commit 37769b5a100498aa19926dff9517a3bc5a606183
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Fri Mar 27 20:01:32 2009 -0700

    libxkbcomp: s/XkbDescPtr/XkbcDescPtr/
    
    We need to use the keyboard description structure from XKBcommon.h since
    it doesn't have the Display field.

commit dd25bbc9acfa132bc1008a8aa6e2910c9e797689
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Fri Mar 27 19:54:50 2009 -0700

    libxkbcomp: Eradicate XkbFileInfo usage
    
    The only real usage was in the frontend to generate a .xkm file. The
    rest of the code just operated on the attached XkbDescPtr. Note that
    here we've replaced the usage of the defined field in CompileKeymap with
    the equivalent field in a XkbcDescPtr.

commit f3677538f4823cf0abd14eaef02858d7aa675c33
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Fri Mar 27 19:30:11 2009 -0700

    libxkbcomp: Include X.h and Xdefs.h for Atom and Bool

commit 30e01032161db141524a4ff8cb88ab21a987dd9e
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Fri Mar 27 19:25:14 2009 -0700

    libxkbcomp: Remove usage of client-side headers
    
    This will surely break things. Let's see just what we need to replace.

commit a3809b1340998a6babd13cb161bb24f06f21bdd7
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Fri Mar 27 18:55:13 2009 -0700

    xkbcomp: Add non-xkbfile XkbConfigText

commit f2308e7e55233d843467067ac993bcd8fe30aeac
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Fri Mar 27 18:43:29 2009 -0700

    Ignore files for xkbcomp

commit 23caa60fa9638dc08da6d5ad3b77056130d65a43
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Fri Mar 27 18:43:12 2009 -0700

    Ignore ks_tables.h in makekeys directory now

commit 0c1bbb05d975cf7b3411259900500cc122fc136b
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Fri Mar 27 06:55:32 2009 -0700

    Import xkbcomp sources for CompileKeymap
    
    A copy of the xkbcomp sources (except the frontend) have been copied in
    to provide a means to compile a XkbDescPtr. This definitely doesn't
    build or do the right thing yet.

commit f4d8e2932cdd60653d2f762ad7502e6ec5710fe5
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Thu Mar 26 06:50:33 2009 -0700

    Move ks_tables.h build into makekeys subdirectory
    
    This avoids the BUILT_SOURCES weirdness and forcing the build into the
    makekeys subdirectory. Added a new make variable KS_HEADERS that lists
    all the keysym headers we're going to parse.

commit 4859304f6531b6bd5aa28ec0fb25ee3f537e8f48
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Tue Mar 17 06:19:56 2009 -0700

    Use X extern "C" guards around function declarations for public header

commit 433a405c98f572c2620b614a1b8a1ef8d399b0e2
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Wed Mar 25 19:17:33 2009 -0700

    atom: Coding-style cleanup and refactor
    
    Some coding style nits were cleaned up. Additionally, most of the
    functions have been collapsed from the libxkbfile version where there's
    distinction with the Xlib atom functions when Display was set. Finally,
    the InitAtoms function tests whether the table has already been created
    by testing the pointer rather than using a static int.

commit c88c0ba72531c0d1dddbfad9d18cfa0cc919fca7
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Wed Mar 25 19:00:49 2009 -0700

    Borrow atom implementation from libxkbfile
    
    We need an atom implementation not relying on XInternAtom and friends.
    The original code is in
    
    libxkbfile/src/xkbatom.c

commit 46faf56dedadffb446fa22a53e8068fe1e6c0e69
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Wed Mar 25 15:41:21 2009 -0700

    alloc/galloc: Coding style cleanup
    
    Mostly tab-to-space conversion plus a few style nits. Dropped the
    register keywords as I'm pretty sure modern compilers can be trusted to
    do the right thing.

commit 1ff77ecd368a41f7b84d885a4f072091e7d552a8
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Thu Mar 5 18:20:15 2009 -0800

    Rename headers to XKBcommon* and install in extensions directory
    
    Following the kbproto convention, the headers will be named XKBcommon.h
    and XKBcommonint.h. Furthermore, they'll be installed in X11/extensions
    directory with the rest of the XKB headers.

commit 74173104034ba0633276e0479cfb53586874abe3
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Thu Mar 19 16:57:01 2009 -0700

    Add XkbDescRec initializers and destructors
    
    Copies the code to initialize and destroy an XkbDescRec from libX11. The
    original code is in
    
    libX11/src/xkb/XKBAlloc.c
    libX11/src/xkb/XKBGAlloc.c
    libX11/src/xkb/XKBMAlloc.c

commit 3a700f8123477f5f93cbc46ba3d367246f93775c
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Thu Mar 19 17:16:13 2009 -0700

    Use common XKB headers and add common type XkbcDescRec
    
    Switched to the common XKB headers which don't contain Xlib pollution.
    A new common keyboard description type, XkbcDescRec, has been added.
    This is the XkbDescRec definitions in xkbstr.h in the xserver since it
    contains the defined field we'll need.

commit d4ddac2b8d83b94483009ecf1ba43d3d981d6336
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Thu Mar 19 15:10:14 2009 -0700

    Use XKB alloc macros internally
    
    These are used throughout the XKB code, but are defined in XKBsrv.h,
    which we'd like to avoid. Internal definitions for True/False have also
    been added since they're in Xlib.h

commit 6aa78dedb2dfecb781d1bff133d6778cc62e2587
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Thu Mar 5 18:21:57 2009 -0800

    Ignore generated ChangeLog

commit 036c23eaf2cd4b0cfa348cbae63908806b94e52f
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Tue Jan 20 07:33:14 2009 -0800

    Use generated config.h header

commit a45cdf4b0e0f326bc7aea046ed418dd033fce328
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Fri Jan 23 18:12:04 2009 -0800

    makekeys: Fix warning about not returning from function
    
    If we've gotten through the for loop in the alias functions, then we
    don't have a match.

commit ffa0ccfad904acce75e7abfb5813fe93f6910942
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Fri Jan 23 18:09:31 2009 -0800

    Use XORG_CWARNFLAGS for more warnings

commit d60166b507096ade932d0881555e99f4dc8836bb
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Fri Jan 23 18:05:12 2009 -0800

    makekeys: No need for strncat

commit ba0b312ac835f3a660d610d73fba89c6f92f7efc
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Thu Jan 22 20:20:02 2009 -0800

    test: Add tests for XFree86 special keys
    
    Since the XFree86 special keysyms contain an underscore after the XF86
    prefix, check to make sure they're handled correctly.

commit 176b9cf524e75a63f63aed6809247847f467a833
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Thu Jan 22 20:18:33 2009 -0800

    test: Consistently use upper case hex

commit 49a06f926d1740744334904a99fe3adb45e7b4df
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Thu Jan 22 20:10:19 2009 -0800

    test: Add convenience functions for xkey.sh

commit e8c7f6853936a6c752c4f64da4ce906add4af2e0
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Thu Jan 22 19:59:24 2009 -0800

    makekeys: Handle XFree86 special action keys
    
    For some reason, there are a set of keys that have an underscore after
    the XF86 prefix when Xlib gets them from XKeysymDB.

commit c005d63c581c965f4733ad38857409f14d5fe349
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Thu Jan 22 18:09:51 2009 -0800

    makekeys: Always continue when no alias match found

commit 498935c1bce71433250346eadffca554360056f6
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Thu Jan 22 18:06:48 2009 -0800

    makekeys: Handle aliases in convenience functions
    
    There's no need to pass the alias buffer down.

commit 6518e5482d3cbaea37ad0e5f1e7c767291ec9942
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Thu Jan 22 18:01:13 2009 -0800

    makekeys: Prepend XF86 to XFree86 keysyms

commit 79ddd7e5309afddbfa6fab23e0796b555998a2cf
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Thu Jan 22 08:25:39 2009 -0800

    Refactor makekeys with some convenience functions
    
    All the nested ifs in the parsing code were confusing me.

commit 49cda1187f6d484f00b0ae1cf01344afd6537101
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Thu Jan 22 07:16:12 2009 -0800

    Move makekeys to separate subdir
    
    The build is a little cleaner when makekeys has its own Makefile.

commit b2737e9bfb6ac542a34885012958ae2de23a3417
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Tue Jan 20 18:57:22 2009 -0800

    Testing harness for keysym functions
    
    A test program and script have been added for checking the XkbCommon
    keysym functions. This has already highlighted an error in handling of
    keysyms from XF86keysym.h.

commit 732bade2341d79ddd48d47963a8abef1fd1889fa
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Tue Jan 20 18:52:04 2009 -0800

    Fix CC_FOR_BUILD detection

commit 56c3e7440ed92e03e46d2b7b77f14b917d8d9c53
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Thu Mar 19 11:34:54 2009 -0700

    keysym: Coding style cleanup
    
    Mostly tab-to-space conversion plus a few style nits. Dropped the
    register keywords as I'm pretty sure modern compilers can be trusted to
    do the right thing.

commit 83f198f1ae5c26a2d9a37579c9590c0aaab0416a
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Tue Jan 20 07:46:12 2009 -0800

    Initial implementation of keysym handlers
    
    Add the xkbcommon implementations of XKeysymToString and XStringToKeysym.
    These symbols have the namespace prefix of Xkbc and are declared in
    X11/XkbCommon.h.
    
    The implementation is taken directly from Xlib, but does not include the
    XKeysymDB parsing and hashing yet (if it ever will). A couple type
    conversions were needed to keep from using Xlib.h. See original files:
    
    libX11/src/KeysymStr.c
    libX11/src/StrKeysym.c

commit d0a4291e74663508ab6549c59d2f6a57425580ff
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Fri Jan 16 07:28:30 2009 -0800

    makekeys: Handle XF86XK_ keysyms in addition to XK_ keysyms

commit fa6a3d122d57b3ae89076741ec90ec8c1b78ce6b
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Wed Jan 14 18:00:10 2009 -0800

    Generate keysym tables from X and XF86 keysym definitions
    
    The keysym hash table ks_tables.h is generated by makekeys from
    keysymdef.h and XF86keysym.h.

commit 7f64541c30e66f4fb172420a1107b73abf5a3020
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Wed Jan 14 18:07:06 2009 -0800

    ks_tables: Remove table-specific #ifdefs and add header guard
    
    Since we'll be including ks_tables.h in a single file, we don't need to
    make parts conditional. A header guard has been added just to be safe.

commit ddc31789597d75b9d7f77ba76b498a9252dcecb3
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Thu Mar 19 10:59:32 2009 -0700

    makekeys: Coding style cleanup
    
    Mostly tab-to-space conversion, but a couple other nits, too.

commit 27fe8d1657f329068c574f1bc869dc725708f3af
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Wed Jan 14 07:35:10 2009 -0800

    Add makekeys for creating keysym hash tables
    
    The makekeys utility is used to generate the keysym hash tables during
    the build. We try to detect a build machine native compiler so the
    tables can be generated when cross compiling.

commit b58a95d037d2b4c7b5b6166684d6670f381f55a2
Author: Dan Nicholson <dbn.lists@gmail.com>
Date:   Tue Jan 13 18:25:35 2009 -0800

    Initial autotools commit
