|
d8a4f52c
|
2014-09-20T16:13:24
|
|
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>
|
|
d0c6fce2
|
2014-09-20T15:06:13
|
|
parser: use "atom" instead of "sval" in yylval
"sval" is already used for "struct sval".
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
1054962d
|
2014-09-11T02:55:51
|
|
symbols: use darray_foreach_from for nicer loop
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
f03dcf9f
|
2014-09-10T19:11:41
|
|
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>
|
|
a931740c
|
2014-09-10T13:29:52
|
|
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>
|
|
7a87c202
|
2014-09-10T13:10:33
|
|
ast-build: fix leak in error path
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
a1f0595a
|
2014-08-18T20:27:07
|
|
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>
|
|
99184f16
|
2012-11-24T13:29:54
|
|
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>
|
|
80ae8e61
|
2014-08-18T20:08:25
|
|
state: no need for loop in xkb_state_update_mask()
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
56de0115
|
2014-08-09T22:41:01
|
|
x11/keymap: handle private actions
Previously we treated them as NoAction().
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
ead816e5
|
2014-08-09T22:35:24
|
|
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>
|
|
d38ff018
|
2014-08-09T22:19:39
|
|
keymap: remove "flags" field of xkb_private_action
Private actions have no flags - only serialized data.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
f00e779a
|
2014-08-08T17:21:28
|
|
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>
|
|
01753c04
|
2014-08-08T16:36:42
|
|
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>
|
|
40f109af
|
2014-07-27T14:24:20
|
|
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>
|
|
37cf20c9
|
2014-07-26T22:49:30
|
|
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>
|
|
7ec00933
|
2014-07-26T22:34:05
|
|
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>
|
|
61fed8da
|
2014-07-26T00:19:34
|
|
Replace darray_mem with a new darray_steal
That's a more declarative interface.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
fbd92860
|
2014-07-26T00:13:54
|
|
ast-build: use cast instead of ->common
Missed in 1b2bb204e0baa2246a6232aea762c1edb00cd44a.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
5f5b960c
|
2014-07-25T23:40:40
|
|
types: refactor CopyKeyTypesToKeymap
So it's OOM-safe and doesn't clobber keymap on failure.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
320e5ffa
|
2014-07-25T23:24:46
|
|
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>
|
|
cb4bae71
|
2014-06-30T14:52:30
|
|
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>
|
|
9c30d6da
|
2014-06-15T15:30:51
|
|
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>
|
|
67d884ec
|
2014-06-01T15:24:10
|
|
Remove unnecessary !!(expressions)
_Bool already does that.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
d6f2d8ec
|
2014-05-28T20:32:16
|
|
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>
|
|
e3f751be
|
2014-05-14T11:44:29
|
|
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>
|
|
86cfef63
|
2014-05-11T09:47:56
|
|
ast-build: don't leak on OOM in BoolVarCreate
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
2e561c3f
|
2014-04-30T08:57:16
|
|
parser: show the keysym in "unrecognized keysym" messages
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
67323f41
|
2014-04-25T01:14:31
|
|
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>
|
|
07fb6a6c
|
2014-04-22T18:18:13
|
|
xkbcomp: don't align enum values
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
28a22ba2
|
2014-04-22T18:05:24
|
|
xkbcomp: use straight assignment instead of CopyModSet
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
9014cf8c
|
2014-04-22T13:15:21
|
|
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>
|
|
787faf36
|
2014-04-22T12:23:36
|
|
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>
|
|
0f6bca2b
|
2014-04-22T11:33:47
|
|
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>
|
|
9b1a68ec
|
2014-04-22T11:22:22
|
|
keymap: protect xkb_foreach_key macro params
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
decb2915
|
2014-04-22T12:29:22
|
|
darray: remove unused darray_foreach_reverse()
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
00f084b6
|
2014-04-22T14:34:57
|
|
utils: detect overflow in memdup()
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
6b1cdee1
|
2014-04-22T11:47:23
|
|
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>
|
|
95aabeec
|
2013-02-09T19:10:56
|
|
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>
|
|
f2cbeda9
|
2013-02-09T18:25:12
|
|
types: use xkb_mod_set instead of entire keymap
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
bf2878d2
|
2013-02-08T15:12:35
|
|
compat: use xkb_mod_set instead of entire keymap
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
b5655b3d
|
2013-02-08T14:39:38
|
|
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>
|
|
0b7c8d61
|
2013-02-08T14:32:47
|
|
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>
|
|
9fbcf6bb
|
2013-02-08T13:56:41
|
|
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>
|
|
edc0aef5
|
2013-02-08T13:21:27
|
|
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>
|
|
ca3170ad
|
2013-02-08T13:09:33
|
|
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>
|
|
3d7aff5f
|
2014-04-19T16:15:05
|
|
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>
|
|
51a1df2f
|
2014-04-19T15:56:27
|
|
keymap: move ModNameToIndex from text.c and use it in keymap.c
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
120c5c31
|
2013-02-08T00:28:49
|
|
symbols: separate ctx
Same as was done for compat and types.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
659eacc9
|
2013-02-08T00:22:38
|
|
compat: separate ctx
Same as was done for types.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
36cbecc5
|
2013-02-08T00:14:49
|
|
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>
|
|
999f3792
|
2014-04-16T22:43:30
|
|
action: convert a few missed unsigned -> enum xkb_action_type
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
9c8fcee1
|
2014-04-16T21:25:40
|
|
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>
|
|
54174409
|
2014-03-27T17:42:20
|
|
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>
|
|
3cfa7fda
|
2014-03-21T23:00:37
|
|
state: apply control transformation on utf8/utf32 keysym strings
This is required by the specification:
http://www.x.org/releases/current/doc/kbproto/xkbproto.html#Interpreting_the_Control_Modifier
and clients expect this to happen.
https://bugs.freedesktop.org/show_bug.cgi?id=75892
Reported-by: Gatis Paeglis <gatis.paeglis@digia.com>
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
b973d71e
|
2014-03-21T23:00:17
|
|
state: add xkb_state_key_get_{utf8,utf32}() API functions
These functions generally have the same effect as
xkb_state_key_get_syms() + xkb_keysym_to_utf{8,32}().
So why add them?
- They provide a slightly nicer interface, especially if the string is
the only interest.
- It makes the handling of multiple-keysyms-to-utf8 transparent. For the
designated use-case of multiple-keysyms (unicode combining
characters), this is a must. We also validate the UTF-8, which the
user might not otherwise do.
- We will need to apply some transformation on the resulting string
which depend on the xkb_state. This is not possible with the
xkb_keysym_* functions.
With these functions, the existing xkb_keysym_to_utf{8,32}() are not
expected to be used by a typical user; they are "raw" functions.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
2bbaf7c7
|
2014-02-09T13:50:21
|
|
Add utf8.{c,h} for common UTF-8 util functions
We need to validate some UTF-8, so this adds an is_valid_utf8()
function, which is probably pretty slow but should work correctly.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
3c14d233
|
2014-03-06T13:43:02
|
|
x11: relax XkbGetNames requirements
It is valid for a keymap to not have key aliases, group names and
various other things. But the current test requires all of them to be
present in the reply, which causes us the fail on such keymaps (as the
XQuartz one).
Instead, require only what we really need. The virtual-mods names may
not be strictly required, but it seems safer to leave it in for now.
https://bugs.freedesktop.org/show_bug.cgi?id=75798
Reported-by: Gatis Paeglis <gatis.paeglis@digia.com>
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
caf8f3be
|
2014-02-22T23:43:19
|
|
symbols, keycodes: fix int return type when bool is intended
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
09bcf0ff
|
2014-02-22T23:37:37
|
|
symbols: cleanup SetSymbolsField
Normalize the style and error message levels.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
35dea49b
|
2014-02-22T23:20:04
|
|
symbols: fix possible use of uninitialized value
Nothing bad can come out of it, but for some reason this error didn't
return early (inherited from xkbcomp).
Also promote the log message to an error, as it clearly is.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
4fb7b06b
|
2014-02-21T18:09:00
|
|
state: Add xkb_state_key_get_consumed_mods
This retrieves the mask of consumed modifiers for a given key and state,
which is helpful for toolkits without having them to do it one modifier
at a time, or pass in 0xFFFFFFFF to xkb_state_remove_consumed_mods to
"reverse-engineer" the consumed mods.
|
|
1fa7d6d3
|
2014-02-16T18:32:44
|
|
action: unify SetLatch and Lock handler functions
This is a little shorter and follows easier from the spec flag
description table.
Also a few were too permissive (like allowing LatchToLock in SetMods).
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
af75353a
|
2014-02-16T10:20:32
|
|
action: add a common CheckBooleanFlag function
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
18191702
|
2014-02-16T10:59:42
|
|
keymap: change action flag NO_ACCEL -> ACCEL
It's easier to deal with, but we need to set it as "factory default".
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
af261cb6
|
2014-02-16T10:22:32
|
|
action: fix SwitchScreen "same" field handling
This used to *unset* a flag called "SwitchApplication"; we changed the
flag to "same" but forgot to switch the cases.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
8d3db622
|
2014-02-15T23:50:21
|
|
keymap-dump: add missing support for NoLock and NoUnlock flags
Based on a libxkbfile patch by Andreas Wettstein.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
11a9f76b
|
2014-02-15T23:27:23
|
|
keymap-dump: don't print "affect=lock" in PtrLock
It's the same as no flags, so might as well not print it.
(In fact it is slightly harmful, because it actively *clears* the affect
flags, which might have been set in some other manner. But in practice
this cannot happen).
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
be27b603
|
2014-02-15T23:13:21
|
|
keymap-dump: unbreak some complex lines
It's very hard to read as-is. Apologies for those reading over a VT100.
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
b95df2a6
|
2014-02-15T22:59:12
|
|
expr: simplify ExprResolveButton
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
efe2880e
|
2014-02-15T22:28:41
|
|
action: don't pass a keymap where a ctx is sufficient
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
3acea3b3
|
2014-02-15T22:16:41
|
|
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>
|
|
477407f7
|
2014-02-15T21:55:36
|
|
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>
|
|
7c5e7915
|
2014-02-15T21:48:31
|
|
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>
|
|
1b2bb204
|
2014-02-13T23:57:22
|
|
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>
|
|
6248b09f
|
2014-02-13T23:11:31
|
|
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>
|
|
d3d55f1c
|
2014-02-12T11:07:39
|
|
darray: fix indentation
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
5bd273a7
|
2012-11-27T10:42:15
|
|
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>
|
|
e55a0cea
|
2013-10-27T20:10:15
|
|
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>
|
|
28d5f770
|
2014-02-10T20:33:34
|
|
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>
|
|
c4259ff2
|
2014-02-10T15:18:22
|
|
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>
|
|
2ecc0f83
|
2014-02-10T13:06:22
|
|
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>
|
|
c11f05e0
|
2014-02-10T11:16:37
|
|
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>
|
|
537564cb
|
2014-02-10T11:11:27
|
|
rules: include the path in failed-to-map error message
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
043eda87
|
2014-02-10T12:24:50
|
|
context: fix wrong VARIANT instead of LAYOUT getenv
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
16aab829
|
2014-02-09T23:21:19
|
|
ast: remove unneeded 'ctx' param to XkbFileCreate
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
8be2608a
|
2014-02-09T18:02:11
|
|
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>
|
|
27a24589
|
2014-02-09T17:49:30
|
|
keymap: reduce padding in struct xkb_sym_interpret
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
71a25931
|
2014-02-09T17:18:08
|
|
symbols: steal keys and modmaps when merging if possible
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
a7d753e4
|
2014-02-09T17:17:13
|
|
compat: steal interps and leds when merging if possible
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
35cab168
|
2014-02-09T16:49:45
|
|
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>
|
|
3923aa71
|
2014-02-09T11:27:34
|
|
doc: move some file comments into txt files in doc/
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
e89516e9
|
2014-02-09T13:51:38
|
|
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>
|
|
d53eef0d
|
2014-02-09T10:27:45
|
|
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>
|
|
3d56aa3e
|
2014-02-08T17:58:39
|
|
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>
|
|
68b03097
|
2014-02-08T17:22:14
|
|
scanner: make line and column unsigned
Signed-off-by: Ran Benita <ran234@gmail.com>
|
|
cf513f70
|
2014-02-08T17:15:37
|
|
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>
|
|
973b8fd4
|
2014-02-08T16:40:20
|
|
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>
|
|
8cc9434f
|
2014-02-08T16:38:18
|
|
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>
|
|
ac42103b
|
2014-02-08T16:25:22
|
|
x11: make some #defines unsigned
Signed-off-by: Ran Benita <ran234@gmail.com>
|