| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
From my analysis these values cannot be null, but the analyzer cannot
see this. So assert it.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
xproto recently has been extended with 4 new keysyms:
XF86XK_Keyboard
XF86XK_WWAN
XF86XK_RFKill
XF86XK_AudioPreset
This commit is the result of running "make update-keysyms" on a system
with the updated xproto installed.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
|
|
|
|
|
| |
Makes it a little easier to understand the filters.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
| |
xkb_filter_new() cannot return NULL.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
| |
So that they may be read more naturally in chronological order.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
|
| |
When we fall through to another label in a case, add an explicit comment
noting so, to quiet GCC 7's warnings.
Signed-off-by: Daniel Stone <daniels@collabora.com>
|
|
|
|
|
|
|
|
|
|
| |
The hit rate is high, but either the cache is slow or the function is
not fast enough -- the cache no longer holds its weight, leading only to
very modest improvements. If it's the former, it can definitely be
improved, the code is very dumb (though it worked just as well as any
other I tried back then). But instead, let's just kill it.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We currently use strcasecmp, which is locale-dependent. In particular,
one well-known surprise even if restricted just ASCII input is found in
the tr_TR (Turkish) locale, see e.g.
https://msdn.microsoft.com/en-us/library/ms973919.aspx#stringsinnet20_topic5
We have known to avoid locale-dependent functions before, but in this
case, we forgot.
Fix it by implementing our own simple ASCII-only strcasecmp/strncasecmp.
Might have been possible to use strcasecmp_l() with the C locale, but
went the easy route.
Side advantage is that even this non-optimized version is faster than
the optimized libc one (__strcasecmp_l_sse42) since it doesn't need to
do the locale stuff. xkb_keysym_from_name(), which uses strcasecmp
heavily, becomes faster, and so for example Compose file parsing, which
uses xkb_keysym_from_name() heavily, becomes ~20% faster.
Resolves https://github.com/xkbcommon/libxkbcommon/issues/42
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
| |
Resolves https://github.com/xkbcommon/libxkbcommon/issues/41
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is more or less what is implemented here:
https://git.gnome.org/browse/gtk+/tree/gdk/x11/gdkkeys-x11.c?h=3.19.10#n1131
The implementation here is more technically correct but should provide
the same results.
Try it out with ./test/interactive-evdev -g (modifiers prefixed with "-"
are consumed).
https://bugzilla.gnome.org/show_bug.cgi?id=754110
https://github.com/xkbcommon/libxkbcommon/issues/17
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The current functions dealing with consumed modifiers use the
traditional XKB definition of consumed modifiers (see description in the
added documentation). However, for several users of the library (e.g.
GTK) this definition is unsuitable or too eager. This is exacerbated by
some less-than-ideal xkeyboard-config type definitions (CTRL+ALT seems
to cause most grief...).
So, because we
- want to enable alternative interpretations, but
- don't want to expose too much internal details, and
- want to keep things simple for all library users,
we add a high-level "mode" parameter which selects the desired
interpretation. New ones can be added as long as they make some sense.
All of the old consumed-modifiers functions keep using the traditional
("XKB") mode. I mark xkb_state_mod_mask_remove_consumed() and as
deprecated without adding a *2 variant because I don't it is very useful
(or used) in practice.
Alternative modes are added in subsequent commits (this commit only adds
a mode for the existing behavior).
https://github.com/xkbcommon/libxkbcommon/issues/17
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
| |
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
| |
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
| |
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
fileno() can fail, if called on e.g. fmemopen() FILEs which are not
backed by a file descriptor. This functions uses mmap to map the entire
file to memory, so using such FILEs will not work.
(There is actually no change of behavior here, since the following fstat
would have already failed with EBADF. But lets make it clear.)
Another possibility is to fall back to the !HAVE_MMAP case; but it
sounds like a better idea to leave it to the programmer to use the
new_from_string/new_from_buffer functions instead, instead of doing
double allocation behind their back.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
| |
The function is generic enough.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
| |
Will be useful later.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
|
| |
Makes the code slightly cleaner and I plan to use the function in
another place.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
xkb_keymap_key_by_name() allows finding a keycode from a given keyname and
is useful for generating keyboard events to use in regression tests
during CI
xkb_keymap_key_get_name() is the inverse of xkb_keymap_key_by_name()
Signed-off-by: Mike Blumenkrantz <zmike@osg.samsung.com>
[ran: some stylistic tweaks + another test case]
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
|
|
|
| |
map_file() uses PROT_READ, so const seems fitting; however unmap_file
calls munmap/free, which do not take const, so an UNCONSTIFY is needed.
To avoid the UNCONSTIFY hack, which is likely undefined behavior or some
such, just remove the const.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
| |
See 725ae134d434bab6c999121d55dbc3582c4acb65.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
| |
Also rename to "dummy" as I think it is a nicer name.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
| |
The XKB_CONFIG_ROOT environment allows overrding the build time
DFLT_XKB_CONFIG_ROOT path.
|
|
|
|
|
|
|
| |
As described in:
http://cgit.freedesktop.org/xorg/lib/libX11/commit/?id=ddf3b09bb262d01b56fbaade421ac85b0e60a69f
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
| |
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
| |
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
|
| |
We don't do so anywhere else, so until we have something comprehensive,
let's not so here.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
| |
It is useless.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
| |
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
| |
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
| |
This reduces a lot of strcmp's, and allows to use a faster memcmp.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The current test is incorrect, since 'map[None]' is entirely valid. In
most cases this doesn't cause any problems, since the default fallback
is Level1, and it's almost always 'map[None] = Level1' anyway. But in
one case in xkeyboard-config it isn't, in types/numpad(mac):
type "KEYPAD" {
modifiers = None;
map[None] = Level2;
level_name[Level2] = "Number";
};
So before checking if no modifiers were mapped, make sure there *were*
any modifiers at all.
https://bugs.freedesktop.org/show_bug.cgi?id=85092
Reported-by: Gatis Paeglis <gatis.paeglis@digia.com>
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
| |
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
| |
Using the same format as xkbcomp.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
| |
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
|
| |
We don't actually do anything with them. But if someone uses them we can
at least not choke.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
| |
It will become context-sensitive.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
| |
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
| |
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
|
|
| |
The keysym cache for the new scanner was not initialized.
To avoid such errors also in the future, require passing the priv
argument in scanner_init(), instead of initializing it separately.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
| |
We have used some portions of it, so add the notice.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
| |
Compose files have a lot of those.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
| |
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
| |
For when a user of the scanner wants to pass something along with it.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
|
| |
If we have a big array which can be finalized, on average we can give
back 1/4 of its size, which the allocator might be able to use.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
| |
Needed for compose.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
| |
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
| |
Like the already existing oct.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Replace the dog-slow unneeded strncasecmp() with an inlineable memcmp().
Before:
compiled 2500 keymaps in 8.348715629s
After:
compiled 2500 keymaps in 7.872640338s
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
|
|
|
|
|
|
| |
The "width" terminology comes from the group*width+level layout of the
keysyms in a key, as used in the old implementations. We don't keep all
the keysyms of a key in one array so change it to a more accurate name.
Signed-off-by: Ran Benita <ran234@gmail.com>
|