Branch :
| Author | Commit | Date | CI | Message |
|---|---|---|---|---|
| 0224283f | 2014-09-21 17:09:58 | rules: fix mlvo-not-used warning An mlvo can also be used in an expansion, but we didn't mark them in this case in commit d8a4f52cb95d989b4. This caused wrongful warnings on something like -l ch -v fr -- the `fr` is only added via expansion. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| f0cd7abc | 2014-09-21 00:59:11 | quick-guide: fix xkb_state_key_get_syms() example Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 51ae4a17 | 2014-09-21 00:56:33 | quick-guide: fix Java-esque array syntax Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| d8a4f52c | 2014-09-20 16:13:24 | rules: warn when an RMLVO component isn't used Due to wildcard matches in the rules file, this is only really useful for misspelled or missing options, e.g. $ ./test/rmlvo-to-kccgst -o comprose:ralt > /dev/null xkbcommon: ERROR: Unrecognized RMLVO option "comprose:ralt" was ignored Although it is more of a warning, it indicates a misconfiguration which the user probably wants to see. Therefore the log level is ERROR. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| d0c6fce2 | 2014-09-20 15:06:13 | parser: use "atom" instead of "sval" in yylval "sval" is already used for "struct sval". Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 1ba7d9ec | 2014-09-19 12:35:52 | doc: reorder "Keymap Components" functions Put the general keymap stuff before key-specific functions. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 494e3189 | 2014-09-19 00:56:16 | doc: move consumed modifier description to its own section With small edits. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 0aeb1095 | 2014-09-18 21:09:41 | doc: order the modules better Explicitly specify the files in INPUT so that "X11 Support" appears after the main modules. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| c00df885 | 2014-09-18 12:13:59 | x11, doc: fix typo Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| ab4df099 | 2014-09-18 11:59:27 | x11, doc: add overview Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 24846080 | 2014-09-11 14:08:12 | test/keyseq: add test Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 64fec8f3 | 2014-09-11 12:15:31 | configure.ac: add -Wdocumentation It's supported by clang and warns about bad doxygen comments. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 5f8ccd18 | 2014-09-11 12:09:57 | doc: fix @param display for xkb_x11_setup_xkb_extension() Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 1054962d | 2014-09-11 02:55:51 | symbols: use darray_foreach_from for nicer loop Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| f03dcf9f | 2014-09-10 19:11:41 | Remove compatibility symbols Remove the deprecated symbols that were used for ABI compatibility during the transition period to the first stable version, 0.2.0. The old *names* can still be used, programs which use the old names will continue to work, as long as they were compiled against a stable version (as they have been #defined to the new names from the start; see xkbcommon/xkbcommon-compat.h). Namely, this will break binaries which: 1. Were compiled against a pre-stable version of libxkbcommon, and 2. Are linked against the next version of libxkbcommon, and 3. Expect to work. This scenario is very unlikely, and will break in many other ways anyway. Also, retaining support for these means including them in the new symbol version file, which I would like to avoid. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 5444f6a8 | 2014-09-09 19:08:46 | build: use symbol versioning Symbol versions provide a means by which ELF utilities can determine whether a program is incompatible with a too-old library version so that package management tools can autodetect version-based dependencies and suggest upgrade paths. [ran: swap xkbcommon.map and xkbcommon-x11.map] Signed-off-by: Jan Engelhardt <jengelh@inai.de> Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| a931740c | 2014-09-10 13:29:52 | keycodes: fix keymap compilation with no aliases and malloc(0)==NULL If the keymap doesn't have any key-aliases (which is certainly possible), the calloc(num_key_aliases, ...) is allowed to return NULL according to the C standard, but this is not an error. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 7a87c202 | 2014-09-10 13:10:33 | ast-build: fix leak in error path Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| ba985629 | 2014-09-06 11:29:15 | test: make most tests portable by copying linux/input.h locally There is really no reason to deny these tests from different platforms only for a few #defines. The only linux-only test (or test program, it is not run by make check) is interactive-evdev, which actually uses evdev. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| e95fb475 | 2014-09-06 11:05:44 | Remove <linux/input.h> include from test/x11comp.c libxkbcommon 0.4.3 introduces a new test, x11comp, which does not build on non-Linux OSes because of the unconditional <linux/input.h> include. This seems not needed even on Linux, so attached there is a simple patch to remove it. https://bugs.freedesktop.org/show_bug.cgi?id=83551 Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 00733da3 | 2014-09-02 01:12:18 | Merge pull request #11 from michaelforney/master Fix typo in default-variant configure option | ||
| 76ae9fb9 | 2014-09-01 13:09:29 | Fix typo in default-variant configure option | ||
| fc95057c | 2014-09-01 17:20:40 | test/x11comp: don't hang if Xvfb is not available If Xvfb is not present, posix_spawn still forks, but the child fails. In that case, since we left the write fd of the pipe open in the parent, we just kept waiting on the read() without noticing that the other side is dead. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 527bf96f | 2014-08-24 10:16:17 | keymap: fix typo Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| c62cde57 | 2014-08-24 09:09:14 | keymap: fix description of xkb_keymap_key_get_syms_by_level() The @level argument is restricted by xkb_keymap_num_levels_for_key(). Fix the description to no longer mention xkb_keymap_num_layouts_for_key(). Signed-off-by: David Herrmann <dh.herrmann@gmail.com> | ||
| 76016d51 | 2014-08-19 20:11:35 | Bump version to 0.4.3 Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 537c1700 | 2014-08-19 20:11:06 | Update NEWS Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| f3597f1b | 2014-08-18 21:03:06 | test/state: add test_update_mask() test Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| a1f0595a | 2014-08-18 20:27:07 | state: make sure the mods are fully resolved after xkb_state_update_mask() Virtual modifiers can have "mappings" to real modifiers, e.g. NumLock may also set Mod2. In a normal turn of events, the various components (depressed, latched, locked, and consequently effective) include the mapped mods, because the masks are pre-resolved everywhere. However, xkb_state_update_mask() accepts arbitrary mod masks, which may not be resolved (if it comes from somewhere other than xkb_state_serialize_mods()). So let's always resolve them ourselves. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 99184f16 | 2012-11-24 13:29:54 | Make the effective mod mask calculation available to other files We will want to use that function in state.c as well. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 80ae8e61 | 2014-08-18 20:08:25 | state: no need for loop in xkb_state_update_mask() Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| a95c4e83 | 2014-08-18 19:47:10 | test/x11comp: server writes \n to displayfd Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 4df720b4 | 2014-08-09 22:14:34 | test/x11-keyseq: new test It is like test/stringcomp, only instead of using xkb_keymap_new_from_string(), it uses xkbcomp to upload the keymap to a dummy Xvfb X server and then xkb_x11_keymap_new_from_device(). If any of these components are not present or fails, the test is shown as skipped. The test is messy, fragile, limited and depends on external tools, but I will improve on that later -- it's better to have a test. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 56de0115 | 2014-08-09 22:41:01 | x11/keymap: handle private actions Previously we treated them as NoAction(). Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| ead816e5 | 2014-08-09 22:35:24 | utils: add a STATIC_ASSERT macro It'd be nicer to use C11's static_assert(), but it's easier to roll our own C99 version using a trick I saw in xv6. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| d38ff018 | 2014-08-09 22:19:39 | keymap: remove "flags" field of xkb_private_action Private actions have no flags - only serialized data. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| f00e779a | 2014-08-08 17:21:28 | x11/keymap: be more defensive about the number of modifiers There can be at most 16 vmods, and we rely on the facts that #vmods + NUM_REAL_MODS (8) <= XKB_MAX_MODS (32) when accessing keymap->mods.mods. But msb_pos() can potentially return up to #vmods = 32 if the server is malicious, so we need to truncate it. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 01753c04 | 2014-08-08 16:36:42 | x11/keymap: don't forget to add the vmod offset in get_vmods The first 8 modifiers in keymap->mods are the real modifiers; the virtual modifiers are then at slots 8-24. But XkbGetMap's virtualMods mask starts the virtual modifiers at zero, so we need to add an offset (like we do correctly in get_vmod_names()). https://github.com/xkbcommon/libxkbcommon/issues/9 Reported-by: @rtcm Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 9db14323 | 2014-07-28 18:04:34 | docs: move keysym-transformations page to a better position Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| b6295762 | 2014-07-28 10:03:18 | docs: fix self-reference Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 5058620c | 2014-07-27 16:36:11 | interactive-evdev: don't use sysexits.h Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 40f109af | 2014-07-27 14:24:20 | ast-build: make sure InterpDef is freeable With the following two rules: InterpretDecl : INTERPRET InterpretMatch OBRACE VarDeclList CBRACE SEMI { $2->def = $4; $$ = $2; } ; InterpretMatch : KeySym PLUS Expr { $$ = InterpCreate($1, $3); } | KeySym { $$ = InterpCreate($1, NULL); } ; And the fact that InterpCreate doesn't initialize ->def, if the VarDeclList fails, the %destructor tries to recursively free the uninitialized ->def VarDef. So always initialize it. That was the only problematic code in the parser for %destructor (I'm pretty sure). Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 37cf20c9 | 2014-07-26 22:49:30 | parser: silence bison "unused value" warnings Previous commit triggered these for some reason: /home/ran/src/libxkbcommon/src/xkbcomp/parser.y:555.25-33: warning: unused value: $1 [-Wother] CoordList : CoordList COMMA Coord ^^^^^^^^^ Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 7ec00933 | 2014-07-26 22:34:05 | parser: don't leak AST nodes for discarded symbols If the parser has symbols on the stack, and then enters an error, it discards the symbols and fails. But their actions which allocate AST nodes had already ran. So we must free these to avoid leaks. We use %destructor declarations, see http://www.gnu.org/software/bison/manual/html_node/Destructor-Decl.html Note: byacc only supports %destructor when compiled with --enable-btyacc. Also, it doesn't support using the parse-param in the destructor. So we might revert this commit before the next release, or forget about byacc. https://github.com/xkbcommon/libxkbcommon/issues/8 Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| f5182bbd | 2014-07-26 22:29:22 | test: add file with a syntax error We didn't really have any. It also a exposes a memory leak, since the parser doesn't clean up the AST nodes of the discarded symbols. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 61fed8da | 2014-07-26 00:19:34 | Replace darray_mem with a new darray_steal That's a more declarative interface. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| fbd92860 | 2014-07-26 00:13:54 | ast-build: use cast instead of ->common Missed in 1b2bb204e0baa2246a6232aea762c1edb00cd44a. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 5f5b960c | 2014-07-25 23:40:40 | types: refactor CopyKeyTypesToKeymap So it's OOM-safe and doesn't clobber keymap on failure. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 320e5ffa | 2014-07-25 23:24:46 | keycodes: split CopyKeyInfoToKeymap to several functions It's a bit easier to read and self-documenting. Also handles OOM better. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| cb4bae71 | 2014-06-30 14:52:30 | parser: don't shadow "str" It's a name of a function in scanner-utils.h and also of some parameters. https://bugs.freedesktop.org/show_bug.cgi?id=79898 Reported-by: Bryce Harrington <b.harrington@samsung.com> Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 9c30d6da | 2014-06-15 15:30:51 | x11: don't iterate on empty batches If count % SIZE == 0 we did a useless iteration where start==stop. It's harmless but strange, so don't do that. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 67d884ec | 2014-06-01 15:24:10 | Remove unnecessary !!(expressions) _Bool already does that. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| d6f2d8ec | 2014-05-28 20:32:16 | rules: fix leak on failure matcher_match() builds up the kccgst's, and we steal the memory on success. But on error we didn't free it. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 76e1fca2 | 2014-05-15 12:07:00 | Bump version to 0.4.2 Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 1aea81c2 | 2014-05-15 12:06:46 | Update NEWS Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| e3f751be | 2014-05-14 11:44:29 | x11: fix out-of-bounds access in adopt_atoms() error handling Two problems: - `j` can be >= `SIZE`, and needs to be wrapped like in the rest of the code. - `cookies[j % SIZE]` is not initialized if there's no atom in `from[j]`. The is manifested when: - We've already gone through one batch (>= 128 atoms) (in fact this cannot happen in call to `adopt_atoms` in the current code). - An XCB request failed in the middle of a batch. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 86cfef63 | 2014-05-11 09:47:56 | ast-build: don't leak on OOM in BoolVarCreate Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 2e561c3f | 2014-04-30 08:57:16 | parser: show the keysym in "unrecognized keysym" messages Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 770f3e4b | 2014-04-25 01:21:09 | doc: fix new doxygen version warnings Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 67323f41 | 2014-04-25 01:14:31 | keycodes: fix uninitialized variable Happened in one of the previous commits. For some reason, gcc doesn't warn about this, but clang does... Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 07fb6a6c | 2014-04-22 18:18:13 | xkbcomp: don't align enum values Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 28a22ba2 | 2014-04-22 18:05:24 | xkbcomp: use straight assignment instead of CopyModSet Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 9014cf8c | 2014-04-22 13:15:21 | keymap, keycodes, compat: don't use darray for LEDs Use a static array of size XKB_MAX_LEDS instead, as in xkb_mod_set. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 787faf36 | 2014-04-22 12:23:36 | keymap: don't use darray in xkb_mod_set Instead just statically allocate the mods array (of size MAX_MOD_SIZE = 32). The limit is not going anywhere, and static allocations are nicer (nicer code, no OOM, etc.). It's also small and dense enough. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 6b1cdee1 | 2014-04-22 11:47:23 | keymap: add and use xkb_mods_{foreach,enumerate}() To iterate over an xkb_mod_set. Slightly nicer interface and makes transitioning from darray easier. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 0f6bca2b | 2014-04-22 11:33:47 | keymap: rename xkb_foreach_key to xkb_keys_foreach We'll use the format xkb_foos_foreach and xkb_foos_enumerate for the various iterators. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 9b1a68ec | 2014-04-22 11:22:22 | keymap: protect xkb_foreach_key macro params Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| decb2915 | 2014-04-22 12:29:22 | darray: remove unused darray_foreach_reverse() Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 00f084b6 | 2014-04-22 14:34:57 | utils: detect overflow in memdup() Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 95aabeec | 2013-02-09 19:10:56 | symbols: use xkb_mod_set instead of entire keymap The keymap is not removed entirely from the Info (just constified), since it is still needed in AddKeySymbols() for looking up aliases. This dependency will be removed in the future. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| f2cbeda9 | 2013-02-09 18:25:12 | types: use xkb_mod_set instead of entire keymap Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| bf2878d2 | 2013-02-08 15:12:35 | compat: use xkb_mod_set instead of entire keymap Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| b5655b3d | 2013-02-08 14:39:38 | vmod: take xkb_mod_set instead of the entire keymap This is the only place where the modifier information is modified. We will make it local to a given XKB file (after which it will be merged into the keymap). Currently it changes the keymap directly, which sidesteps the abstraction and leaves side-effects even if the XkbFile's compilation fails. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 0b7c8d61 | 2013-02-08 14:32:47 | action: take xkb_mod_set instead of the entire keymap A couple of modiifer actions need this information, but not the entire keymap. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 9fbcf6bb | 2013-02-08 13:56:41 | expr: take xkb_mod_set instead of the entire keymap The modifier-resolving functions only need the modifier information. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| edc0aef5 | 2013-02-08 13:21:27 | text: take xkb_mod_set instead of the entire keymap The modifier printing functions only need the modifier information, they don't care about keys or leds, etc. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| ca3170ad | 2013-02-08 13:09:33 | Add struct xkb_mod_set The only thing that the compilation phase needs the keymap for currently is for access to the modifier information (it also modifies it in place!). We want to only pass along the neccessary information, to make it more tractable and testable, so instead of passing the entire keymap we add a new 'mod_set' object and pass a (const) reference to that. The new object is just the old array of 'struct xkb_mod'. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 3d7aff5f | 2014-04-19 16:15:05 | keymap: rename wrap_group_into_range -> XkbWrapGroupIntoRange It better fits with the naming convention in keymap.h. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 51a1df2f | 2014-04-19 15:56:27 | keymap: move ModNameToIndex from text.c and use it in keymap.c Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 120c5c31 | 2013-02-08 00:28:49 | symbols: separate ctx Same as was done for compat and types. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 659eacc9 | 2013-02-08 00:22:38 | compat: separate ctx Same as was done for types. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 36cbecc5 | 2013-02-08 00:14:49 | types: separate ctx Separate the ctx object to its own field in CompatInfo, instead of doing keymap->ctx. The compilation functions should not have direct access to the keymap; instead they should process the files with their own independent state (in the *Info structs) as much as possible, and only at the end should they be copied (i.e. commited) to the keymap. If the compilation fails, it leaves no by-products. It's also just good form. This was seemingly the original author's intention, but I suppose he cut a few corners (mostly with the handling of virtual modifiers, which are threaded through types -> compat -> symbols). This commit is the first step and may look artificial; however the 'keymap' field will be removed shortly. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 999f3792 | 2014-04-16 22:43:30 | action: convert a few missed unsigned -> enum xkb_action_type Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 9c8fcee1 | 2014-04-16 21:25:40 | expr: fix handling of unknown integer binary operator We can't reach the default branch but at least make it do something sensible. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 89fbf979 | 2014-04-12 00:22:47 | doc: explain keysym/string transformation The documentation should be clear about what is happening, even if it's rather unlikely anyone will really dig into the details. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| da83e678 | 2014-04-11 19:00:36 | doc: add @since annotations for API added since 0.3.0 And also add release dates to the NEWS. We're adding API freely, so this can make life easier for anyone who wants to stay compatible with an older version. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 3013633b | 2014-04-06 16:37:04 | Add .travis.yml file This CI service https://travis-ci.org/ builds the project in several configurations, runs the tests, and if something fails it sends an email. Testing on some other systems is always good, and there don't seem to be any drawbacks to this, so why not. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 99af72fd | 2014-03-31 18:01:35 | configure.ac: fix enable_x11 handling Explicitly passing --enable-x11=yes would actually disable it. Reported-by: Quentin Glidic Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| b5b86b6e | 2014-03-27 20:12:02 | Bump version to 0.4.1 Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| b636987c | 2014-03-27 20:11:13 | Update NEWS Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 240fa418 | 2014-03-27 20:58:16 | build: trim down generated doxygen docs Remove the huge verbatim copies of the header files. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 2a610ff4 | 2014-03-27 20:37:21 | build: add docs to EXTRA_DIST Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 54174409 | 2014-03-27 17:42:20 | state: fix consumed modifier calculation The current calculation is in short: entry ? (entry->mask & ~entry->preserve) : 0 This changes it be type->mask & ~(entry ? entry->preserve : 0) This is what Xlib does. While less intuitive, it is actually more correct, if you follow this deduction: - The key group's type->mask defines which modifiers the key even cares about. The others are completely irrelevant (and in fact they are masked out from all sided in the level calculation). Example: NumLock for an alphabetic key. - The type->mask, the mods which are not masked out, are *all* relevant (and in fact in the level calculation they must match *exactly* to the state). These mods affect which level is chosen for the key, whether they are active or not. - Because the type->mask mods are all relevant, they must be considered as consumed by the calculation *even if they are not active*. Therefore we use type->mask instead of entry->mask. The second change is what happens when no entry is found: return 0 or just take preserve to be 0? Let's consider an example, the basic type type "ALPHABETIC" { modifiers = Shift+Lock; map[Shift] = Level2; map[Lock] = Level2; level_name[Level1] = "Base"; level_name[Level2] = "Caps"; }; Suppose Shift+Lock is active - it doesn't match any entry, thus it gets to level 0. The first interpretation would take them both to be unconsumed, the second (new one) would take them both to be consumed. This seems much better: Caps is active, and Shift disables it, they both do something. This change also fixes a pretty lousy bug (since 0.3.2), where Shift appears to apparently *not* disable Caps. What actually happens is that Caps is not consumed (see above) but active, thus the implicit capitalization in get_one_sym() kicks in and capitalizes it anyway. Reported-by: Davinder Pal Singh Bhamra Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 806dbeac | 2014-03-23 15:04:51 | Reformat README markdown So that github displays it as markdown, and correctly. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| aa3e8236 | 2014-03-23 14:32:12 | doc: add a quick guide to the library This is a nice intro to the documentation, and also preferably gently pushes users to the "proper way" of using the library, which can be confusing. See also: http://fooishbar.org/tell-me-about/xkbcommon-intro/ Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 3cfa7fda | 2014-03-21 23:00:37 | state: apply control transformation on utf8/utf32 keysym strings This is required by the specification: http://www.x.org/releases/current/doc/kbproto/xkbproto.html#Interpreting_the_Control_Modifier and clients expect this to happen. https://bugs.freedesktop.org/show_bug.cgi?id=75892 Reported-by: Gatis Paeglis <gatis.paeglis@digia.com> Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| b973d71e | 2014-03-21 23:00:17 | state: add xkb_state_key_get_{utf8,utf32}() API functions These functions generally have the same effect as xkb_state_key_get_syms() + xkb_keysym_to_utf{8,32}(). So why add them? - They provide a slightly nicer interface, especially if the string is the only interest. - It makes the handling of multiple-keysyms-to-utf8 transparent. For the designated use-case of multiple-keysyms (unicode combining characters), this is a must. We also validate the UTF-8, which the user might not otherwise do. - We will need to apply some transformation on the resulting string which depend on the xkb_state. This is not possible with the xkb_keysym_* functions. With these functions, the existing xkb_keysym_to_utf{8,32}() are not expected to be used by a typical user; they are "raw" functions. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 2bbaf7c7 | 2014-02-09 13:50:21 | Add utf8.{c,h} for common UTF-8 util functions We need to validate some UTF-8, so this adds an is_valid_utf8() function, which is probably pretty slow but should work correctly. Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| f6043149 | 2014-03-21 19:54:30 | configure.ac: fix message when X11 support is disabled Signed-off-by: Ran Benita <ran234@gmail.com> | ||
| 3c14d233 | 2014-03-06 13:43:02 | x11: relax XkbGetNames requirements It is valid for a keymap to not have key aliases, group names and various other things. But the current test requires all of them to be present in the reply, which causes us the fail on such keymaps (as the XQuartz one). Instead, require only what we really need. The virtual-mods names may not be strictly required, but it seems safer to leave it in for now. https://bugs.freedesktop.org/show_bug.cgi?id=75798 Reported-by: Gatis Paeglis <gatis.paeglis@digia.com> Signed-off-by: Ran Benita <ran234@gmail.com> |