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