Ran Benita [Mon, 22 Sep 2014 12:27:13 +0000 (15:27 +0300)]
doc: disable tree view
It is redundant with the header navigation.
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Mon, 22 Sep 2014 12:23:10 +0000 (15:23 +0300)]
doc: linkify some references
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Mon, 22 Sep 2014 08:44:51 +0000 (11:44 +0300)]
x11, doc: add note about Key{Press,Release}->state field
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Mon, 22 Sep 2014 08:24:17 +0000 (11:24 +0300)]
x11, doc: add note about per-client flags like detectable autorepeat
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Sun, 21 Sep 2014 20:54:34 +0000 (23:54 +0300)]
keymap-dump: combine modifier_map's with the same modifier
A bit less efficient, but makes for shorter, nicer output.
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Sun, 21 Sep 2014 14:09:58 +0000 (17:09 +0300)]
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>
Ran Benita [Sat, 20 Sep 2014 21:59:11 +0000 (00:59 +0300)]
quick-guide: fix xkb_state_key_get_syms() example
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Sat, 20 Sep 2014 21:56:33 +0000 (00:56 +0300)]
quick-guide: fix Java-esque array syntax
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Sat, 20 Sep 2014 13:13:24 +0000 (16:13 +0300)]
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>
Ran Benita [Sat, 20 Sep 2014 12:06:13 +0000 (15:06 +0300)]
parser: use "atom" instead of "sval" in yylval
"sval" is already used for "struct sval".
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Fri, 19 Sep 2014 09:35:52 +0000 (12:35 +0300)]
doc: reorder "Keymap Components" functions
Put the general keymap stuff before key-specific functions.
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Thu, 18 Sep 2014 21:56:16 +0000 (00:56 +0300)]
doc: move consumed modifier description to its own section
With small edits.
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Thu, 18 Sep 2014 18:09:41 +0000 (21:09 +0300)]
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>
Ran Benita [Thu, 18 Sep 2014 09:13:59 +0000 (12:13 +0300)]
x11, doc: fix typo
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Thu, 18 Sep 2014 08:59:27 +0000 (11:59 +0300)]
x11, doc: add overview
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Thu, 11 Sep 2014 11:08:12 +0000 (14:08 +0300)]
test/keyseq: add test
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Thu, 11 Sep 2014 09:15:31 +0000 (12:15 +0300)]
configure.ac: add -Wdocumentation
It's supported by clang and warns about bad doxygen comments.
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Thu, 11 Sep 2014 09:09:57 +0000 (12:09 +0300)]
doc: fix @param display for xkb_x11_setup_xkb_extension()
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Wed, 10 Sep 2014 23:55:51 +0000 (02:55 +0300)]
symbols: use darray_foreach_from for nicer loop
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Wed, 10 Sep 2014 16:11:41 +0000 (19:11 +0300)]
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>
Jan Engelhardt [Tue, 9 Sep 2014 17:08:46 +0000 (19:08 +0200)]
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>
Ran Benita [Wed, 10 Sep 2014 10:29:52 +0000 (13:29 +0300)]
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>
Ran Benita [Wed, 10 Sep 2014 10:10:33 +0000 (13:10 +0300)]
ast-build: fix leak in error path
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Sat, 6 Sep 2014 08:29:15 +0000 (11:29 +0300)]
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>
Pino Toscano [Sat, 6 Sep 2014 08:05:44 +0000 (11:05 +0300)]
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>
Ran Benita [Mon, 1 Sep 2014 22:12:18 +0000 (01:12 +0300)]
Merge pull request #11 from michaelforney/master
Fix typo in default-variant configure option
Michael Forney [Mon, 1 Sep 2014 20:09:29 +0000 (13:09 -0700)]
Fix typo in default-variant configure option
Ran Benita [Mon, 1 Sep 2014 14:20:40 +0000 (17:20 +0300)]
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>
Ran Benita [Sun, 24 Aug 2014 07:16:17 +0000 (10:16 +0300)]
keymap: fix typo
Signed-off-by: Ran Benita <ran234@gmail.com>
David Herrmann [Sun, 24 Aug 2014 07:09:14 +0000 (09:09 +0200)]
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>
Ran Benita [Tue, 19 Aug 2014 17:11:35 +0000 (20:11 +0300)]
Bump version to 0.4.3
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Tue, 19 Aug 2014 17:11:06 +0000 (20:11 +0300)]
Update NEWS
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Mon, 18 Aug 2014 18:03:06 +0000 (21:03 +0300)]
test/state: add test_update_mask() test
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Mon, 18 Aug 2014 17:27:07 +0000 (20:27 +0300)]
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>
Ran Benita [Sat, 24 Nov 2012 11:29:54 +0000 (13:29 +0200)]
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>
Ran Benita [Mon, 18 Aug 2014 17:08:25 +0000 (20:08 +0300)]
state: no need for loop in xkb_state_update_mask()
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Mon, 18 Aug 2014 16:47:10 +0000 (19:47 +0300)]
test/x11comp: server writes \n to displayfd
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Sat, 9 Aug 2014 19:14:34 +0000 (22:14 +0300)]
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>
Ran Benita [Sat, 9 Aug 2014 19:41:01 +0000 (22:41 +0300)]
x11/keymap: handle private actions
Previously we treated them as NoAction().
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Sat, 9 Aug 2014 19:35:24 +0000 (22:35 +0300)]
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>
Ran Benita [Sat, 9 Aug 2014 19:19:39 +0000 (22:19 +0300)]
keymap: remove "flags" field of xkb_private_action
Private actions have no flags - only serialized data.
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Fri, 8 Aug 2014 14:21:28 +0000 (17:21 +0300)]
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>
Ran Benita [Fri, 8 Aug 2014 13:36:42 +0000 (16:36 +0300)]
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>
Ran Benita [Mon, 28 Jul 2014 15:04:34 +0000 (18:04 +0300)]
docs: move keysym-transformations page to a better position
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Mon, 28 Jul 2014 07:03:18 +0000 (10:03 +0300)]
docs: fix self-reference
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Sun, 27 Jul 2014 13:36:11 +0000 (16:36 +0300)]
interactive-evdev: don't use sysexits.h
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Sun, 27 Jul 2014 11:24:20 +0000 (14:24 +0300)]
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>
Ran Benita [Sat, 26 Jul 2014 19:49:30 +0000 (22:49 +0300)]
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>
Ran Benita [Sat, 26 Jul 2014 19:34:05 +0000 (22:34 +0300)]
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>
Ran Benita [Sat, 26 Jul 2014 19:29:22 +0000 (22:29 +0300)]
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>
Ran Benita [Fri, 25 Jul 2014 21:19:34 +0000 (00:19 +0300)]
Replace darray_mem with a new darray_steal
That's a more declarative interface.
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Fri, 25 Jul 2014 21:13:54 +0000 (00:13 +0300)]
ast-build: use cast instead of ->common
Missed in
1b2bb204e0baa2246a6232aea762c1edb00cd44a.
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Fri, 25 Jul 2014 20:40:40 +0000 (23:40 +0300)]
types: refactor CopyKeyTypesToKeymap
So it's OOM-safe and doesn't clobber keymap on failure.
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Fri, 25 Jul 2014 20:24:46 +0000 (23:24 +0300)]
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>
Ran Benita [Mon, 30 Jun 2014 11:52:30 +0000 (14:52 +0300)]
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>
Ran Benita [Sun, 15 Jun 2014 12:30:51 +0000 (15:30 +0300)]
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>
Ran Benita [Sun, 1 Jun 2014 12:24:10 +0000 (15:24 +0300)]
Remove unnecessary !!(expressions)
_Bool already does that.
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Wed, 28 May 2014 17:32:16 +0000 (20:32 +0300)]
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>
Ran Benita [Thu, 15 May 2014 09:07:00 +0000 (12:07 +0300)]
Bump version to 0.4.2
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Thu, 15 May 2014 09:06:46 +0000 (12:06 +0300)]
Update NEWS
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Wed, 14 May 2014 08:44:29 +0000 (11:44 +0300)]
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>
Ran Benita [Sun, 11 May 2014 06:47:56 +0000 (09:47 +0300)]
ast-build: don't leak on OOM in BoolVarCreate
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Wed, 30 Apr 2014 05:57:16 +0000 (08:57 +0300)]
parser: show the keysym in "unrecognized keysym" messages
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Thu, 24 Apr 2014 22:21:09 +0000 (01:21 +0300)]
doc: fix new doxygen version warnings
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Thu, 24 Apr 2014 22:14:31 +0000 (01:14 +0300)]
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>
Ran Benita [Tue, 22 Apr 2014 15:18:13 +0000 (18:18 +0300)]
xkbcomp: don't align enum values
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Tue, 22 Apr 2014 15:05:24 +0000 (18:05 +0300)]
xkbcomp: use straight assignment instead of CopyModSet
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Tue, 22 Apr 2014 10:15:21 +0000 (13:15 +0300)]
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>
Ran Benita [Tue, 22 Apr 2014 09:23:36 +0000 (12:23 +0300)]
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>
Ran Benita [Tue, 22 Apr 2014 08:47:23 +0000 (11:47 +0300)]
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>
Ran Benita [Tue, 22 Apr 2014 08:33:47 +0000 (11:33 +0300)]
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>
Ran Benita [Tue, 22 Apr 2014 08:22:22 +0000 (11:22 +0300)]
keymap: protect xkb_foreach_key macro params
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Tue, 22 Apr 2014 09:29:22 +0000 (12:29 +0300)]
darray: remove unused darray_foreach_reverse()
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Tue, 22 Apr 2014 11:34:57 +0000 (14:34 +0300)]
utils: detect overflow in memdup()
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Sat, 9 Feb 2013 17:10:56 +0000 (19:10 +0200)]
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>
Ran Benita [Sat, 9 Feb 2013 16:25:12 +0000 (18:25 +0200)]
types: use xkb_mod_set instead of entire keymap
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Fri, 8 Feb 2013 13:12:35 +0000 (15:12 +0200)]
compat: use xkb_mod_set instead of entire keymap
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Fri, 8 Feb 2013 12:39:38 +0000 (14:39 +0200)]
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>
Ran Benita [Fri, 8 Feb 2013 12:32:47 +0000 (14:32 +0200)]
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>
Ran Benita [Fri, 8 Feb 2013 11:56:41 +0000 (13:56 +0200)]
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>
Ran Benita [Fri, 8 Feb 2013 11:21:27 +0000 (13:21 +0200)]
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>
Ran Benita [Fri, 8 Feb 2013 11:09:33 +0000 (13:09 +0200)]
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>
Ran Benita [Sat, 19 Apr 2014 13:15:05 +0000 (16:15 +0300)]
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>
Ran Benita [Sat, 19 Apr 2014 12:56:27 +0000 (15:56 +0300)]
keymap: move ModNameToIndex from text.c and use it in keymap.c
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Thu, 7 Feb 2013 22:28:49 +0000 (00:28 +0200)]
symbols: separate ctx
Same as was done for compat and types.
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Thu, 7 Feb 2013 22:22:38 +0000 (00:22 +0200)]
compat: separate ctx
Same as was done for types.
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Thu, 7 Feb 2013 22:14:49 +0000 (00:14 +0200)]
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>
Ran Benita [Wed, 16 Apr 2014 19:43:30 +0000 (22:43 +0300)]
action: convert a few missed unsigned -> enum xkb_action_type
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Wed, 16 Apr 2014 18:25:40 +0000 (21:25 +0300)]
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>
Ran Benita [Fri, 11 Apr 2014 21:22:47 +0000 (00:22 +0300)]
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>
Ran Benita [Fri, 11 Apr 2014 16:00:36 +0000 (19:00 +0300)]
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>
Ran Benita [Sun, 6 Apr 2014 13:37:04 +0000 (16:37 +0300)]
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>
Ran Benita [Mon, 31 Mar 2014 15:01:35 +0000 (18:01 +0300)]
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>
Ran Benita [Thu, 27 Mar 2014 18:12:02 +0000 (20:12 +0200)]
Bump version to 0.4.1
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Thu, 27 Mar 2014 18:11:13 +0000 (20:11 +0200)]
Update NEWS
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Thu, 27 Mar 2014 18:58:16 +0000 (20:58 +0200)]
build: trim down generated doxygen docs
Remove the huge verbatim copies of the header files.
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Thu, 27 Mar 2014 18:37:21 +0000 (20:37 +0200)]
build: add docs to EXTRA_DIST
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Thu, 27 Mar 2014 15:42:20 +0000 (17:42 +0200)]
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>
Ran Benita [Sun, 23 Mar 2014 13:04:51 +0000 (15:04 +0200)]
Reformat README markdown
So that github displays it as markdown, and correctly.
Signed-off-by: Ran Benita <ran234@gmail.com>
Ran Benita [Sun, 23 Mar 2014 12:32:12 +0000 (14:32 +0200)]
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>