Commit Graph

1309 Commits (973b8fd47e885f1c80c715b317fa896f8d31a7a4)

Author SHA1 Message Date
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
Ran Benita 893f01301b symbols: reduce some loop iterators scope
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 00:19:12 +02:00
Ran Benita 5547a82f2a 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>
2014-02-08 00:11:44 +02:00
Ran Benita 5dbd136435 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>
2014-02-08 00:11:42 +02:00
Ran Benita fa87cdb8bd 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>
2014-02-08 00:10:56 +02:00
Ran Benita 6f2df7df8c ast: make symsMapIndex unsigned
It doesn't need to be signed.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-08 00:10:56 +02:00
Ran Benita e9e3993221 action: Use ResolveInteger for PtrBtn.count, not ResolveButton
It's not a button.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-07 18:51:35 +02:00
Ran Benita e0137caceb action: check range of MovePtr X,Y values
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-07 18:48:16 +02:00
Ran Benita b82a0a8650 scanner: avoid strlen in keyword lookup, we know the len
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-07 18:12:29 +02:00
Ran Benita 2abff2a098 state: use the XKB_MOD_MASK constant
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-07 17:29:34 +02:00
Ran Benita ed18f7dde6 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>
2014-02-07 17:13:03 +02:00
Ran Benita 125bb19ede x11: add explicit cast in mods conversion
Explicit is better and all.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-07 17:11:49 +02:00
Ran Benita 623602cb78 test: don't print control characters in interactive tests
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-07 01:35:56 +02:00
Ran Benita 779eec3b8b x11: add missing #ifdef __cplusplus to header
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-04 22:18:12 +02:00
Ran Benita 109fe7059c 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>
2014-02-04 02:53:05 +02:00
Ran Benita bdd8c113a5 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>
2014-02-04 02:52:31 +02:00
Ran Benita be16858c92 Bump version to 0.4.0
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-02 12:13:26 +02:00
Ran Benita a15b4a5535 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>
2014-02-02 12:08:43 +02:00
Ran Benita 87e0e47462 Update NEWS
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-02 12:05:35 +02:00
Ran Benita 70717c5686 build: add configure summary
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-02-02 11:21:18 +02:00
Ran Benita 2f93c78894 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>
2014-02-02 11:16:40 +02:00
Ran Benita eb34825560 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>
2014-02-02 11:16:40 +02:00
Ran Benita ddbefda383 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>
2014-01-13 18:24:24 +02:00
Ran Benita a9c56f643d context: split private functions to context-priv.c
(Same as keymap-priv.c).

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-01-13 17:22:15 +02:00
Ran Benita 7210497c63 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>
2014-01-13 17:22:02 +02:00
Ran Benita 4884a8e636 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>
2014-01-13 17:21:56 +02:00
Ran Benita d63e0ab838 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>
2014-01-13 17:21:56 +02:00
Ran Benita 917c751523 context: remove mostly useless log wrappers
Just use xkb_log directly.

Signed-off-by: Ran Benita <ran234@gmail.com>
2014-01-12 14:37:39 +02:00
Ran Benita 101720a2bc parser: shutup some 'may be used uninitialized' warnings
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-01-12 13:18:39 +02:00
Ran Benita bbc69b6342 action, types: remove unused Report functions
Signed-off-by: Ran Benita <ran234@gmail.com>
2014-01-12 11:26:16 +02:00
Hardening e77712bd27 Add a constant for NumLock
This trivial patch adds the name of the Numlock modifier
2014-01-11 17:29:02 +02:00
Ran Benita 4841ea0c29 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>
2014-01-11 17:01:39 +02:00