platform/upstream/libxkbcommon.git
10 years agovmod: bring back support for direct vmod -> real mod mapping
Ran Benita [Tue, 27 Nov 2012 08:42:15 +0000 (10:42 +0200)]
vmod: bring back support for direct vmod -> real mod mapping

This brings back the functionality that was removed in
b9c87eb710ba4a86455601ca8c5a516b25e20366. 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>
10 years agobuild: small fixes and formatting of Makefile.am
Ran Benita [Tue, 11 Feb 2014 15:44:11 +0000 (17:44 +0200)]
build: small fixes and formatting of Makefile.am

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agobuild: fix libtest AM_CLFLAGS typo
Ran Benita [Tue, 11 Feb 2014 15:16:40 +0000 (17:16 +0200)]
build: fix libtest AM_CLFLAGS typo

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoMove src/xkbcomp/scanner-utils.h to src/
Ran Benita [Sun, 27 Oct 2013 18:10:15 +0000 (20:10 +0200)]
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>
10 years agobuild: fix configure test for yacc
Ran Benita [Mon, 10 Feb 2014 18:50:58 +0000 (20:50 +0200)]
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>
10 years agoscanner: sort out scanner logging functions
Ran Benita [Mon, 10 Feb 2014 18:33:34 +0000 (20:33 +0200)]
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>
10 years agorules: always %-expand kccgst values
Ran Benita [Mon, 10 Feb 2014 13:18:22 +0000 (15:18 +0200)]
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>
10 years agotest/rmlvo-to-kccgst: use default RMLVO values in translation
Ran Benita [Mon, 10 Feb 2014 11:13:26 +0000 (13:13 +0200)]
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>
10 years agocontext: add xkb_context_sanitize_rule_names()
Ran Benita [Mon, 10 Feb 2014 11:06:22 +0000 (13:06 +0200)]
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>
10 years agorules: print full path in error messages
Ran Benita [Mon, 10 Feb 2014 09:16:37 +0000 (11:16 +0200)]
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>
10 years agorules: include the path in failed-to-map error message
Ran Benita [Mon, 10 Feb 2014 09:11:27 +0000 (11:11 +0200)]
rules: include the path in failed-to-map error message

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agocontext: fix wrong VARIANT instead of LAYOUT getenv
Ran Benita [Mon, 10 Feb 2014 10:24:50 +0000 (12:24 +0200)]
context: fix wrong VARIANT instead of LAYOUT getenv

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoast: remove unneeded 'ctx' param to XkbFileCreate
Ran Benita [Sun, 9 Feb 2014 21:21:19 +0000 (23:21 +0200)]
ast: remove unneeded 'ctx' param to XkbFileCreate

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agox11: don't trust keycode before testing its range
Ran Benita [Sun, 9 Feb 2014 16:02:11 +0000 (18:02 +0200)]
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>
10 years agokeymap: reduce padding in struct xkb_sym_interpret
Ran Benita [Sun, 9 Feb 2014 15:49:30 +0000 (17:49 +0200)]
keymap: reduce padding in struct xkb_sym_interpret

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agosymbols: steal keys and modmaps when merging if possible
Ran Benita [Sun, 9 Feb 2014 15:18:08 +0000 (17:18 +0200)]
symbols: steal keys and modmaps when merging if possible

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agocompat: steal interps and leds when merging if possible
Ran Benita [Sun, 9 Feb 2014 15:17:13 +0000 (17:17 +0200)]
compat: steal interps and leds when merging if possible

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agotypes: steal types when merging if possible
Ran Benita [Sun, 9 Feb 2014 14:49:45 +0000 (16:49 +0200)]
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>
10 years agodoc: move some file comments into txt files in doc/
Ran Benita [Sun, 9 Feb 2014 09:27:34 +0000 (11:27 +0200)]
doc: move some file comments into txt files in doc/

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agostate: check wrap_group_into_range() return value
Ran Benita [Sun, 9 Feb 2014 11:51:38 +0000 (13:51 +0200)]
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>
10 years agox11: add 0 < ctrls->numGroups <= 4 assertion
Ran Benita [Sun, 9 Feb 2014 08:27:45 +0000 (10:27 +0200)]
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>
10 years agoRemove m4/.gitkeep
Ran Benita [Sat, 8 Feb 2014 16:30:41 +0000 (18:30 +0200)]
Remove m4/.gitkeep

Now there's a file in there.

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agokeysym: use safe keysym comparison function
Ran Benita [Sat, 8 Feb 2014 15:58:39 +0000 (17:58 +0200)]
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>
10 years agoscanner: make line and column unsigned
Ran Benita [Sat, 8 Feb 2014 15:22:14 +0000 (17:22 +0200)]
scanner: make line and column unsigned

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agorules: get rid of struct location
Ran Benita [Sat, 8 Feb 2014 15:15:37 +0000 (17:15 +0200)]
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>
10 years agoapi: deprecate XKB_MAP_COMPILE_PLACEHOLDER, and use KEYMAP instead of MAP
Ran Benita [Sat, 8 Feb 2014 14:40:20 +0000 (16:40 +0200)]
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>
10 years agox11: make sure not to use compat header
Ran Benita [Sat, 8 Feb 2014 14:38:18 +0000 (16:38 +0200)]
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>
10 years agox11: make some #defines unsigned
Ran Benita [Sat, 8 Feb 2014 14:25:22 +0000 (16:25 +0200)]
x11: make some #defines unsigned

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agox11: fix truncation of xkb controls mask off the wire
Ran Benita [Sat, 8 Feb 2014 14:18:16 +0000 (16:18 +0200)]
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>
10 years agox11: make msb_pos return unsigned
Ran Benita [Sat, 8 Feb 2014 14:12:09 +0000 (16:12 +0200)]
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>
10 years agokeysym: fix types in bin_search
Ran Benita [Sat, 8 Feb 2014 14:03:06 +0000 (16:03 +0200)]
keysym: fix types in bin_search

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agostate: optimize xkb_state_led_update_all()
Ran Benita [Sat, 8 Feb 2014 13:53:50 +0000 (15:53 +0200)]
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>
10 years agoUse (1u << idx) instead of (1 << idx) where appropriate
Ran Benita [Sat, 8 Feb 2014 13:30:05 +0000 (15:30 +0200)]
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>
10 years agoUse unsigned int for saving darray_size return value
Ran Benita [Sat, 8 Feb 2014 13:10:09 +0000 (15:10 +0200)]
Use unsigned int for saving darray_size return value

See: b9b3593cbdeb7f5b02d50cecaba6a0b47d4979ad
So these should be unsigned int's now.

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoaction: fix misleading cast
Ran Benita [Sat, 8 Feb 2014 13:06:28 +0000 (15:06 +0200)]
action: fix misleading cast

The type is uint8_t and so is the checked range.

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoaction: fix printing of underflowed value in error message
Ran Benita [Sat, 8 Feb 2014 13:05:05 +0000 (15:05 +0200)]
action: fix printing of underflowed value in error message

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoscanner-utils: add some likely/unlikely annotations
Ran Benita [Sat, 8 Feb 2014 10:31:21 +0000 (12:31 +0200)]
scanner-utils: add some likely/unlikely annotations

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoDefine likely()/unlikely() macros
Ran Benita [Sat, 8 Feb 2014 10:29:51 +0000 (12:29 +0200)]
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>
10 years agoPartially revert "ast: pack the ParseCommon struct"
Ran Benita [Sat, 8 Feb 2014 00:01:17 +0000 (02:01 +0200)]
Partially revert "ast: pack the ParseCommon struct"

This reverts commit 1e6e5669c6229846830f0b497591de4e3cf588eb.

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>
10 years agobuild: add -Wextra warnings
Ran Benita [Fri, 7 Feb 2014 22:08:06 +0000 (00:08 +0200)]
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>
10 years agoast: use more suitable types in a few ast nodes
Ran Benita [Fri, 7 Feb 2014 23:26:35 +0000 (01:26 +0200)]
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>
10 years agodarray: use unsigned int instead of size_t for array size
Ran Benita [Fri, 7 Feb 2014 23:13:50 +0000 (01:13 +0200)]
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>
10 years agotest/state: fix tautological test
Ran Benita [Fri, 7 Feb 2014 22:42:54 +0000 (00:42 +0200)]
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>
10 years agoFix sign-compare warnings
Ran Benita [Fri, 7 Feb 2014 22:27:54 +0000 (00:27 +0200)]
Fix sign-compare warnings

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agosymbols: reduce some loop iterators scope
Ran Benita [Fri, 7 Feb 2014 22:18:32 +0000 (00:18 +0200)]
symbols: reduce some loop iterators scope

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoparser: fix unrecognized keysym handling
Ran Benita [Fri, 7 Feb 2014 19:12:53 +0000 (21:12 +0200)]
parser: fix unrecognized keysym handling

Integer may be negative, so also need to test >= 0.
Also, $$ was left uninitialized if the keysym wasn't recognized.

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoaction: change xkb_pointer_button_action::button to uint8_t
Ran Benita [Fri, 7 Feb 2014 18:58:19 +0000 (20:58 +0200)]
action: change xkb_pointer_button_action::button to uint8_t

In XkbPtrBtnAction it is unsigned char, don't know how it became signed.

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agodarray: cleanup
Ran Benita [Fri, 7 Feb 2014 17:39:42 +0000 (19:39 +0200)]
darray: cleanup

We have quite diverged from the upstream file, so let's make it at least
easier to look at. Remove some unused macros and rename some for
consistency.

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoast: make symsMapIndex unsigned
Ran Benita [Fri, 7 Feb 2014 17:28:48 +0000 (19:28 +0200)]
ast: make symsMapIndex unsigned

It doesn't need to be signed.

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoaction: Use ResolveInteger for PtrBtn.count, not ResolveButton
Ran Benita [Fri, 7 Feb 2014 16:49:22 +0000 (18:49 +0200)]
action: Use ResolveInteger for PtrBtn.count, not ResolveButton

It's not a button.

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoaction: check range of MovePtr X,Y values
Ran Benita [Fri, 7 Feb 2014 16:48:16 +0000 (18:48 +0200)]
action: check range of MovePtr X,Y values

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoscanner: avoid strlen in keyword lookup, we know the len
Ran Benita [Fri, 7 Feb 2014 16:09:30 +0000 (18:09 +0200)]
scanner: avoid strlen in keyword lookup, we know the len

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agostate: use the XKB_MOD_MASK constant
Ran Benita [Fri, 7 Feb 2014 15:29:34 +0000 (17:29 +0200)]
state: use the XKB_MOD_MASK constant

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agox11: add #actions == #syms check
Ran Benita [Fri, 7 Feb 2014 15:13:03 +0000 (17:13 +0200)]
x11: add #actions == #syms check

This must always hold (but if there are no actions, #actions==0), and
explicitly ensures there won't be a division-by-zero a bit below.

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agox11: add explicit cast in mods conversion
Ran Benita [Fri, 7 Feb 2014 15:11:49 +0000 (17:11 +0200)]
x11: add explicit cast in mods conversion

Explicit is better and all.

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agotest: don't print control characters in interactive tests
Ran Benita [Thu, 6 Feb 2014 23:35:56 +0000 (01:35 +0200)]
test: don't print control characters in interactive tests

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agox11: add missing #ifdef __cplusplus to header
Ran Benita [Tue, 4 Feb 2014 20:18:12 +0000 (22:18 +0200)]
x11: add missing #ifdef __cplusplus to header

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoUse secure_getenv when available
Ran Benita [Tue, 4 Feb 2014 00:53:05 +0000 (02:53 +0200)]
Use secure_getenv when available

We probably don't want to get a privileged process to compile arbitrary
keymaps. So we should be careful about the envvars which control include
paths or default RMLVOs. But then secure_getenv is more sensible for
everything we do.

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agobuild: some fixes in configure.ac
Ran Benita [Tue, 4 Feb 2014 00:48:41 +0000 (02:48 +0200)]
build: some fixes in configure.ac

- Use 'test =' instead of 'test ==' in the x11 test. The second one
  might not work with e.g. dash, whoops.

- Use AS_IF instead of 'if'. It actually blends in better..

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoBump version to 0.4.0 xkbcommon-0.4.0
Ran Benita [Sun, 2 Feb 2014 10:13:26 +0000 (12:13 +0200)]
Bump version to 0.4.0

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoUpdate README
Ran Benita [Sun, 2 Feb 2014 10:08:43 +0000 (12:08 +0200)]
Update README

- Remove outdated information about API/ABI stability. If we ever break
  API or ABI, we'll do a major release. But currently everything is
  stable.

- Remove outdated warnings about internal symbols. You simply cannot
  access them...

- Briefly mention xkbcommon-x11 existence.

- Update git and bug URLs.

- Add myself as maintainer :)

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoUpdate NEWS
Ran Benita [Sun, 2 Feb 2014 10:05:35 +0000 (12:05 +0200)]
Update NEWS

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agobuild: add configure summary
Ran Benita [Sun, 2 Feb 2014 09:13:28 +0000 (11:13 +0200)]
build: add configure summary

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agox11: add a couple of tests
Ran Benita [Tue, 30 Jul 2013 12:06:40 +0000 (15:06 +0300)]
x11: add a couple of tests

Add two tests:

    ./test/interactive-x11
which is like test/interactive-evdev, but should behave exactly like your
X keyboard and react to state and keymap changes - in other words, just
like typing in xterm. Press ESC to exit.

    ./test/x11
which currently should only print out the same keymap as
    xkbcomp $DISPLAY out.xkb
(modulo some whitespace and some constructs we do not support.)

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agox11: add XKB protocol keymap and state creation support
Ran Benita [Sat, 20 Jul 2013 20:21:44 +0000 (23:21 +0300)]
x11: add XKB protocol keymap and state creation support

These are function to create an xkb_keymap directly from XKB requests
to the X server. This opens up the possibility for X clients to use
xcb + xcb-xkb + xkbcommon as a proper replacement for Xlib + xkbfile for
keyboard support.

The X11 support must be enabled with --enable-x11 for now.
The functions are in xkbcommon/xkbcommon-x11.h. It depends on a recent
libxcb with xkb enabled. The functions are in a new libxkbcommon-x11.so,
with a new pkg-config file, etc. so that the packages may be split, and
libxkbcommon.so itself remains dependency-free.

Why not just use the RMLVO that the server puts in the _XKB_RULES_NAMES
property? This does not account for custom keymaps, on-the-fly keymap
modifications, remote clients, etc., so is not a proper solution in
practice. Also, some servers don't even set it. Now, the client just
needs to recreate the keymap in response to a change in the server's
keymap (as Xlib clients do with XRefreshKeyboardMapping() and friends).

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agobuild: error out on undefined symbols
Ran Benita [Mon, 13 Jan 2014 16:19:36 +0000 (18:19 +0200)]
build: error out on undefined symbols

This helps ensure we don't ship a library with undefined symbols, which
can easily happen with multiple inter-dependent DSOs.

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agocontext: split private functions to context-priv.c
Ran Benita [Mon, 13 Jan 2014 15:20:54 +0000 (17:20 +0200)]
context: split private functions to context-priv.c

(Same as keymap-priv.c).

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agokeymap: split private functions to keymap-priv.c
Ran Benita [Mon, 13 Jan 2014 15:07:41 +0000 (17:07 +0200)]
keymap: split private functions to keymap-priv.c

This makes it easier to share the private functions in other DSOs
without relying (too much) on dead code elimination, exported symbols,
etc.

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agokeymap: move XkbEscapeMapName() to keymap.c.
Ran Benita [Fri, 2 Aug 2013 07:19:01 +0000 (10:19 +0300)]
keymap: move XkbEscapeMapName() to keymap.c.

So we can use it outside src/xkbcomp; it is not really specific to it.

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agotest: rename test/interactive to interactive-evdev
Ran Benita [Tue, 30 Jul 2013 10:38:51 +0000 (13:38 +0300)]
test: rename test/interactive to interactive-evdev

And share the key-printing functions. In preparation for adding more
interactive-* variants.

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agocontext: remove mostly useless log wrappers
Ran Benita [Sun, 12 Jan 2014 12:37:39 +0000 (14:37 +0200)]
context: remove mostly useless log wrappers

Just use xkb_log directly.

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoparser: shutup some 'may be used uninitialized' warnings
Ran Benita [Sun, 12 Jan 2014 11:18:39 +0000 (13:18 +0200)]
parser: shutup some 'may be used uninitialized' warnings

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoaction, types: remove unused Report functions
Ran Benita [Sun, 12 Jan 2014 08:53:23 +0000 (10:53 +0200)]
action, types: remove unused Report functions

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoAdd a constant for NumLock
Hardening [Wed, 8 Jan 2014 20:22:45 +0000 (21:22 +0100)]
Add a constant for NumLock

This trivial patch adds the name of the Numlock modifier

10 years agotest/state: fix some *_{is,are}_active() tests
Ran Benita [Sat, 11 Jan 2014 14:56:20 +0000 (16:56 +0200)]
test/state: fix some *_{is,are}_active() tests

These functions also return -1 on invalid input. The original tests
didn't check that, but used !tests instead. Since then we've changed
them, but some were missed, and for some we forgot to remove the ! (or
you can say they were extra clever).

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoFix some cppcheck warnings
Ran Benita [Sat, 11 Jan 2014 14:40:42 +0000 (16:40 +0200)]
Fix some cppcheck warnings

Someone was nice enough to run this for us:

ftp://ftp.sunet.se/pub/Linux/distributions/Debian/debian/pool/main/libx/libxkbcommon/libxkbcommon_0.3.1.orig.tar.gz
[libxkbcommon-0.3.1/src/keymap.c:86]: (style) The scope of the variable 'j' can be reduced.
[libxkbcommon-0.3.1/src/keymap.c:87]: (style) The scope of the variable 'key' can be reduced.
[libxkbcommon-0.3.1/src/keysym-utf.c:843]: (style) The scope of the variable 'mid' can be reduced.
[libxkbcommon-0.3.1/src/state.c:992]: (style) The scope of the variable 'str' can be reduced.
[libxkbcommon-0.3.1/src/xkbcomp/action.c:467]: (style) The scope of the variable 'absolute' can be reduced.
[libxkbcommon-0.3.1/src/xkbcomp/rules.c:468]: (style) The scope of the variable 'consumed' can be reduced.
[libxkbcommon-0.3.1/src/xkbcomp/rules.c:862]: (style) The scope of the variable 'mlvo' can be reduced.
[libxkbcommon-0.3.1/src/xkbcomp/rules.c:863]: (style) The scope of the variable 'kccgst' can be reduced.
[libxkbcommon-0.3.1/src/xkbcomp/rules.c:865]: (style) The scope of the variable 'match_type' can be reduced.
[libxkbcommon-0.3.1/src/xkbcomp/symbols.c:753]: (style) The scope of the variable 'toAct' can be reduced.
[libxkbcommon-0.3.1/src/xkbcomp/symbols.c:1573]: (style) The scope of the variable 'key' can be reduced.
[libxkbcommon-0.3.1/test/common.c:80]: (warning) %d in format string (no. 1) requires 'int' but the argument type is 'unsigned int'.
[libxkbcommon-0.3.1/test/interactive.c:358]: (style) The scope of the variable 'nevs' can be reduced.
[libxkbcommon-0.3.1/test/interactive.c:236]: (style) Checking if unsigned variable 'nsyms' is less than zero.
[libxkbcommon-0.3.1/test/interactive.c:226]: (style) Unused variable: unicode

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agomakekeys: mark keysym_names as static
Ran Benita [Fri, 10 Jan 2014 22:26:58 +0000 (00:26 +0200)]
makekeys: mark keysym_names as static

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agokeysym: clarify slightly confusing comparison functions
Ran Benita [Wed, 1 Jan 2014 23:19:25 +0000 (01:19 +0200)]
keysym: clarify slightly confusing comparison functions

Make it clear what the search key type and array types are.

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agomakekeys: Add a gcc pragma to ignore -Woverlength-strings
Jasper St. Pierre [Wed, 1 Jan 2014 18:01:12 +0000 (13:01 -0500)]
makekeys: Add a gcc pragma to ignore -Woverlength-strings

10 years agomakekeys: Put a comment describing the origin of the file
Jasper St. Pierre [Wed, 17 Jul 2013 22:56:03 +0000 (18:56 -0400)]
makekeys: Put a comment describing the origin of the file

10 years agoks_tables: Put all keysym names in one giant block
Jasper St. Pierre [Wed, 17 Jul 2013 22:07:31 +0000 (18:07 -0400)]
ks_tables: Put all keysym names in one giant block

This makes the file take two segments instead of potentially many, causing
relocation issues.

10 years agomakekeys: Move all of the table generation to Python
Jasper St. Pierre [Wed, 17 Jul 2013 21:49:10 +0000 (17:49 -0400)]
makekeys: Move all of the table generation to Python

This makes it easier to run the Python script manually.

10 years agomakekeys: Remove some semis
Jasper St. Pierre [Wed, 17 Jul 2013 21:44:07 +0000 (17:44 -0400)]
makekeys: Remove some semis

Python doesn't have these

10 years agokeysyms: add German T3 layout keysyms from xproto
Ran Benita [Wed, 1 Jan 2014 08:40:09 +0000 (10:40 +0200)]
keysyms: add German T3 layout keysyms from xproto

Reference:
http://cgit.freedesktop.org/xorg/proto/xproto/commit/?id=6d4acb0e3a6568a8faaa651d4e3d32f917b9067b

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agokeysym: fix search for lexicographically larger strings
Ran Benita [Wed, 1 Jan 2014 08:36:54 +0000 (10:36 +0200)]
keysym: fix search for lexicographically larger strings

Probably a copy/paste error from a few lines above.

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoast: pack the ParseCommon struct
Ran Benita [Sat, 14 Dec 2013 15:39:11 +0000 (17:39 +0200)]
ast: pack the ParseCommon struct

This shows a measurable improvement in memory and performance for free,
on 64bit at least. Packing is (or should be) safe in this case.

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoatom: don't malloc every node separately
Ran Benita [Mon, 2 Dec 2013 15:13:50 +0000 (17:13 +0200)]
atom: don't malloc every node separately

Instead of having a darray of pointers to malloc'ed atom_node's, make it
a darray of atom_node's directly.

This makes the code a bit simpler, saves on some malloc's, and the
memory gain/loss even out.

Unfortunately, we are no longer Three Star Programmers ;(
http://c2.com/cgi/wiki?ThreeStarProgrammer

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agotest/atom: add test for atom table
Ran Benita [Mon, 2 Dec 2013 12:16:45 +0000 (14:16 +0200)]
test/atom: add test for atom table

Mostly a random test.

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoatom: tiny style fixes
Ran Benita [Mon, 2 Dec 2013 12:25:51 +0000 (14:25 +0200)]
atom: tiny style fixes

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoatom: allow passing NULLs to find_node_pointer()
Ran Benita [Mon, 2 Dec 2013 12:23:59 +0000 (14:23 +0200)]
atom: allow passing NULLs to find_node_pointer()

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoatom: allow interning empty string
Ran Benita [Mon, 2 Dec 2013 12:15:58 +0000 (14:15 +0200)]
atom: allow interning empty string

Which is different than XKB_ATOM_NONE, as in "" != NULL.

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoatom: drop {xkb_,}atom_strdup
Ran Benita [Mon, 2 Dec 2013 12:14:41 +0000 (14:14 +0200)]
atom: drop {xkb_,}atom_strdup

Even though in 112cccb18ad1bc877b3c4a87fa536ea085c761b5 I said it might
be useful, it's not. So remove it.

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoexpr: make Expr creation naming and file location consistent
Ran Benita [Sun, 1 Dec 2013 11:32:51 +0000 (13:32 +0200)]
expr: make Expr creation naming and file location consistent

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoexpr: add wrapper macro for ExprCreate
Ran Benita [Sun, 1 Dec 2013 11:29:30 +0000 (13:29 +0200)]
expr: add wrapper macro for ExprCreate

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoexpr: split expression types and allocate them separately
Ran Benita [Sun, 1 Dec 2013 10:08:47 +0000 (12:08 +0200)]
expr: split expression types and allocate them separately

Currently, we have one ExprDef type, which contains a tagged union with
the value of all expression types. Turns out, this union is quite
wasteful memory-wise. Instead, create separate types for all expressions
(e.g ExprBinary, ExprInteger) which embed the common fields
(ExprCommon), and malloc them per their size; ExprDef then becomes a
union of all these types, but is just used as a generic pointer.

[Instead of making ExprDef a union, another option is to use
ExprCommon as the generic pointer type and then do up-castings, like we
do with ParseCommon. But this makes the code much uglier.]

The diff is mostly straightforward mechanical adaptations. It could have
been much smaller with the help of C11 anonymous structs (which were
previously a gnu extension). This will have saved all of the 'op' ->
'expr->op', etc changes. But if we can be a bit more portable for a
little effort, we should.

Before (./test/rulescomp, x86 32 bit, -O2):
==12974==   total heap usage: 145,217 allocs, 145,217 frees, 10,476,238 bytes allocated

After:
==11145==   total heap usage: 145,217 allocs, 145,217 frees, 8,270,358 bytes allocated

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoparser, symbols: drop unnecessary casts
Ran Benita [Sun, 1 Dec 2013 08:45:52 +0000 (10:45 +0200)]
parser, symbols: drop unnecessary casts

It's casted into ExprDef and then uncasted for no reason.

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoexpr: use ExprCreate in more places
Ran Benita [Sun, 1 Dec 2013 08:31:27 +0000 (10:31 +0200)]
expr: use ExprCreate in more places

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoparser: remove 'uval' yylval type
Ran Benita [Sat, 30 Nov 2013 21:29:58 +0000 (23:29 +0200)]
parser: remove 'uval' yylval type

We don't care about DoodadType.

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoexpr: add constructor for boolean expressions
Ran Benita [Sat, 30 Nov 2013 21:24:18 +0000 (23:24 +0200)]
expr: add constructor for boolean expressions

Also add a 'bool set' to the ExprDef union, instead of using 'ival' as a
bool.

Signed-off-by: Ran Benita <ran234@gmail.com>
10 years agoexpr: add constructors for more expression types
Ran Benita [Sat, 30 Nov 2013 21:12:45 +0000 (23:12 +0200)]
expr: add constructors for more expression types

This makes the parser a bit more declarative. But really it might make
error handling easier.

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