Commit Graph

1440 Commits (7a87c202b70d6b0b5b5cedea5d49ace3c4c15535)

Author SHA1 Message Date
Ran Benita 3acea3b3bb action: add missing array_ndx checks
Only the "data" field can have them, and every other field needs to
error out if it appears. But some didn't check.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-15 22:47:57 +02:00
Ran Benita 477407f710 action: move array_ndx errors into the Check functions
Makes more sense and flows more nicely this way.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-15 22:47:57 +02:00
Ran Benita 7c5e79159b action: fix missing support for "affect" field
Support for setting this field was missing from the LockMods and
LockControls actions.

Based on a xkbcomp patch by Andreas Wettstein.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-15 21:48:31 +02:00
Ran Benita 1b2bb204e0 ast: cast to ParseCommon explictly instead of using ->common
Some tools were getting mighty confused with what we were doing.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-14 00:37:15 +02:00
Ran Benita 6248b09feb action: simplify Check* functions
Instead of using those t1 t2 variables, pass the final destinations
directly (while making sure they are not modified in case of error).

This also ensures the types are right, e.g. in CheckGroupField it should
be int32_t, not xkb_layout_index_t (and indeed it takes a negation!).

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-14 00:37:13 +02:00
Ran Benita d3d55f1c4e darray: fix indentation
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-12 11:07:39 +02:00
Ran Benita 5bd273a724 vmod: bring back support for direct vmod -> real mod mapping
This brings back the functionality that was removed in
b9c87eb710. Though it is not used in
xkeyboard-config, from our current perspective it can be quite useful to
be able to set the mappings directly, thus sidestepping the ugly and
legacy-ridden modifier_map statement.

Here's an example of how to get rid of modifier_map statements (though
that would break core-X11 applications, since they must have the
mappings through keysyms):
    virtual_modifiers NumLock = Mod2;
    virtual_modifiers Alt = Mod1;
    // Would be nice to map these to Alt, but that would be
    // incompatible with xkbcomp and somewhat complicated
    virtual_modifiers LAlt = Mod1;
    virtual_modifiers RAlt = Mod1;
    virtual_modifiers LevelThree = Mod5;
    virtual_modifiers RControl = Control;
    virtual_modifiers LControl = Control;
    virtual_modifiers Super = Mod4;
    virtual_modifiers Meta = Mod1;
    virtual_modifiers Hyper = Mod4;
    virtual_modifiers AltGr = Mod5;
    virtual_modifiers LShift = Shift;
    virtual_modifiers RShift = Shift;

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-12 10:00:16 +02:00
Ran Benita aed3469474 build: small fixes and formatting of Makefile.am
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-11 17:44:11 +02:00
Ran Benita 9c48d3033a build: fix libtest AM_CLFLAGS typo
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-11 17:16:40 +02:00
Ran Benita e55a0cead1 Move src/xkbcomp/scanner-utils.h to src/
As we'll use it for things unrelated to xkbcomp.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-10 20:57:27 +02:00
Ran Benita 1aabc52235 build: fix configure test for yacc
It only works if 'bison' or 'byacc' are provided, but sometimes byacc
is installed as plain 'yacc'. The check fails for that.

I broke this in bdd8c11, restore Daniel's retrospectively clever check.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-10 20:50:58 +02:00
Ran Benita 28d5f7708c scanner: sort out scanner logging functions
First, make the rules and xkb scanners/parsers use the same logging
functions instead of rolling their own.

Second, use the gcc ##__VA_ARGS extension instead of dealing with C99
stupidity. I hope all relevant compilers support it.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-10 20:33:34 +02:00
Ran Benita c4259ff268 rules: always %-expand kccgst values
Previously the early-exit codepath might have left some values
unexpanded, and we'd go looking for e.g "%l%(v)".

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-10 15:18:22 +02:00
Ran Benita 067c8c25c4 test/rmlvo-to-kccgst: use default RMLVO values in translation
The tool's supposed to display exactly the same results as the library
code.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-10 13:15:58 +02:00
Ran Benita 2ecc0f8316 context: add xkb_context_sanitize_rule_names()
We want all the default logic in a test, so encapsulate it in this
function, and make all the get_default_* functions static.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-10 13:15:58 +02:00
Ran Benita c11f05e064 rules: print full path in error messages
There can be multiple include paths. But it's nicer in any case.
This also makes scanner_error actually use log_err instead of log_warn -
oops.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-10 12:26:40 +02:00
Ran Benita 537564cb10 rules: include the path in failed-to-map error message
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-10 12:26:40 +02:00
Ran Benita 043eda874d context: fix wrong VARIANT instead of LAYOUT getenv
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-10 12:26:40 +02:00
Ran Benita 16aab829bb ast: remove unneeded 'ctx' param to XkbFileCreate
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-09 23:21:19 +02:00
Ran Benita 8be2608a26 x11: don't trust keycode before testing its range
The assert is not very useful access the key just before.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-09 18:02:11 +02:00
Ran Benita 27a245891b keymap: reduce padding in struct xkb_sym_interpret
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-09 17:49:30 +02:00
Ran Benita 71a2593162 symbols: steal keys and modmaps when merging if possible
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-09 17:20:32 +02:00
Ran Benita a7d753e45a compat: steal interps and leds when merging if possible
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-09 17:20:28 +02:00
Ran Benita 35cab168f7 types: steal types when merging if possible
Like we do everywhere else. Removes some unnecessary allocations and
copying.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-09 16:49:45 +02:00
Ran Benita 3923aa71c2 doc: move some file comments into txt files in doc/
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-09 14:09:44 +02:00
Ran Benita e89516e976 state: check wrap_group_into_range() return value
It returns XKB_LAYOUT_INVALID in case num_groups == 0. So we shouldn't
just save it in the state.
Note, though, that this condition is generally impossible.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-09 14:09:42 +02:00
Ran Benita d53eef0d94 x11: add 0 < ctrls->numGroups <= 4 assertion
This only happens if something is wrong in the server; a valid keymap
cannot be had in any case.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-09 14:05:59 +02:00
Ran Benita 032f8b67f5 Remove m4/.gitkeep
Now there's a file in there.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 22:44:59 +02:00
Ran Benita 3d56aa3e60 keysym: use safe keysym comparison function
Instead of thinking about signed <-> unsigned an whatnot.
bsearch() is inline in glibc, so gcc optimizes this away anyway.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 17:58:39 +02:00
Ran Benita 68b0309792 scanner: make line and column unsigned
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 17:22:14 +02:00
Ran Benita cf513f70a2 rules: get rid of struct location
Use the scanner token_{line,column} like we do in the other places.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 17:15:37 +02:00
Ran Benita 973b8fd47e api: deprecate XKB_MAP_COMPILE_PLACEHOLDER, and use KEYMAP instead of MAP
The PLACEHOLDER was not meant to be used, but c++ doesn't like passing 0
to enums, so it was used. For this reason we add all the NO_FLAGS items,
so the PLACEHOLDER shouldn't be used anymore.

Second, XKB_MAP is the prefix we used ages ago, KEYMAP is the expected
prefix here. So deprecate that as well.

The old names may still be used through the xkbcommon-compat.h header,
which is included by default (no need to include directly).

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 16:40:20 +02:00
Ran Benita 8cc9434fd2 x11: make sure not to use compat header
src/keymap.h already defines the necessary header guard, so just reverse
the include order.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 16:38:18 +02:00
Ran Benita ac42103b0d x11: make some #defines unsigned
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 16:25:22 +02:00
Ran Benita 8fcb44b8a6 x11: fix truncation of xkb controls mask off the wire
It's uint32_t, not uint16_t, so we were losing flags (not that it
matters in this case).

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 16:19:47 +02:00
Ran Benita f5465b56a3 x11: make msb_pos return unsigned
It was initially returning -1 for all-zero arguments, but now it returns
0.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 16:12:09 +02:00
Ran Benita a088c9ba77 keysym: fix types in bin_search
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 16:03:06 +02:00
Ran Benita 04bacf87ba state: optimize xkb_state_led_update_all()
Before:
    ran@ran:~/src/libxkbcommon$ ./test/bench-key-proc
    ran 20000000 iterations in 6.623018074s

After:
    ran@ran:~/src/libxkbcommon$ ./test/bench-key-proc
    ran 20000000 iterations in 4.762291091s

Not that anyone needs to process millions of keys per second...

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 15:57:22 +02:00
Ran Benita 769b91c580 Use (1u << idx) instead of (1 << idx) where appropriate
It doesn't matter (I think), since the implicit conversion doesn't have
any effect (e.g. sign-extension). But it's better to be aware of the
type.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 15:30:05 +02:00
Ran Benita 50b73ec0e7 Use unsigned int for saving darray_size return value
See: b9b3593cbd
So these should be unsigned int's now.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 15:10:09 +02:00
Ran Benita e2c336cb96 action: fix misleading cast
The type is uint8_t and so is the checked range.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 15:06:28 +02:00
Ran Benita bbd2a9c048 action: fix printing of underflowed value in error message
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 15:05:05 +02:00
Ran Benita 27e2066229 scanner-utils: add some likely/unlikely annotations
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 12:42:17 +02:00
Ran Benita 10643d8aa4 Define likely()/unlikely() macros
It serves as nice "hotspot" annotations, and can also help things, so
why not.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 12:42:16 +02:00
Ran Benita 0e20cfed67 Partially revert "ast: pack the ParseCommon struct"
This reverts commit 1e6e5669c6.

It's probably safe, but let's not take any chances, as I don't have any
esoteric arch to test on. But keep the ATTR in case it's ever useful.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 02:02:32 +02:00
Ran Benita 8aa2202d9d build: add -Wextra warnings
If it gets annoying, we can disable it. But for now it's clean.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 01:51:38 +02:00
Ran Benita 6ea15719d1 ast: use more suitable types in a few ast nodes
The int ones cannot be signed (they come as such from the scanner, and
NEGATE is never applied to them).

The uint32_t one is really an atom, but presumably the type was never
converted to xkb_atom_t.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 01:50:22 +02:00
Ran Benita b9b3593cbd darray: use unsigned int instead of size_t for array size
size_t is too large; if we ever need it, that's the least of our
problems. Besides, when we roll our own (e.g. in keymap.h) it's already
unsigned int. Instead, add some emergency overflow check. So, why?

- It plays nicer with all the other uint32_t's and unsigned int's (no
  extensions, etc.).
- Reduces keymap memory usage by 5% or so as a bonus.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 01:50:22 +02:00
Ran Benita 94e0be0dc7 test/state: fix tautological test
test/state.c:376:5: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits]

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 00:54:53 +02:00
Ran Benita 623b10f8c5 Fix sign-compare warnings
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 00:54:53 +02:00