libxkbcommon: Changes to 'debian-experimental'
.gitignore | 5
.uncrustify.cfg | 228 +
Android.mk | 45
Makefile.am | 155 +
README | 117
autogen.sh | 2
configure.ac | 90
debian/changelog | 8
debian/control | 2
debian/libxkbcommon-dev.install | 4
include/Makefile.am | 1
include/X11/extensions/XKBcommon.h | 841 -----
makekeys/Makefile.am | 7
makekeys/makekeys.c | 315 --
src/Makefile.am | 30
src/XKBcommonint.h | 89
src/alloc.c | 342 --
src/atom.c | 318 +-
src/atom.h | 50
src/context.c | 363 ++
src/darray.h | 383 ++
src/galloc.c | 755 -----
src/geom.c | 182 -
src/keymap-dump.c | 808 +++++
src/keysym-utf.c | 960 ++++++
src/keysym.c | 258 +
src/list.h | 489 +++
src/malloc.c | 511 ---
src/map.c | 422 ++
src/maprules.c | 1041 -------
src/misc.c | 295 --
src/state.c | 911 ++++++
src/text.c | 337 +-
src/text.h | 62
src/utils.h | 93
src/xkb-priv.h | 517 +++
src/xkb.c | 143
src/xkballoc.h | 76
src/xkbcomp/.gitignore | 5
src/xkbcomp/Makefile.am | 38
src/xkbcomp/action.c | 2059 ++++++--------
src/xkbcomp/action.h | 127
src/xkbcomp/alias.c | 287 --
src/xkbcomp/alias.h | 56
src/xkbcomp/compat.c | 1864 ++++++++----
src/xkbcomp/compat.h | 7
src/xkbcomp/expr.c | 1426 ++++-----
src/xkbcomp/expr.h | 236 -
src/xkbcomp/geometry.c | 3730 --------------------------
src/xkbcomp/indicators.c | 571 ---
src/xkbcomp/indicators.h | 83
src/xkbcomp/keycodes.c | 1390 +++++----
src/xkbcomp/keycodes.h | 39
src/xkbcomp/keymap.c | 180 -
src/xkbcomp/keytypes.c | 1744 ++++--------
src/xkbcomp/listing.c | 520 ---
src/xkbcomp/misc.c | 355 --
src/xkbcomp/misc.h | 91
src/xkbcomp/parser.y | 759 +++++
src/xkbcomp/parseutils.c | 1061 +++----
src/xkbcomp/parseutils.h | 270 -
src/xkbcomp/path.c | 281 +
src/xkbcomp/path.h | 46
src/xkbcomp/rules.c | 1126 +++++++
src/xkbcomp/rules.h | 36
src/xkbcomp/scanner.l | 301 ++
src/xkbcomp/symbols.c | 3255 ++++++++++------------
src/xkbcomp/tokens.h | 105
src/xkbcomp/utils.c | 252 -
src/xkbcomp/utils.h | 163 -
src/xkbcomp/vmod.c | 366 +-
src/xkbcomp/vmod.h | 97
src/xkbcomp/xkbcomp-priv.h | 122
src/xkbcomp/xkbcomp.c | 514 +--
src/xkbcomp/xkbcomp.h | 423 +-
src/xkbcomp/xkbparse.y | 767 -----
src/xkbcomp/xkbpath.c | 441 ---
src/xkbcomp/xkbpath.h | 60
src/xkbcomp/xkbscan.l | 246 -
src/xkbgeom.h | 82
src/xkbmisc.h | 105
src/xkbrules.h | 161 -
test/.gitignore | 12
test/Makefile.am | 18
test/bad.xkb | 5
test/basic.xkb | 7
test/canonicalise.c | 87
test/canonicalise.sh | 57
test/common.c | 176 +
test/context.c | 45
test/data/compat/accessx | 52
test/data/compat/basic | 48
test/data/compat/caps | 12
test/data/compat/complete | 10
test/data/compat/default | 12
test/data/compat/iso9995 | 80
test/data/compat/ledcaps | 23
test/data/compat/lednum | 23
test/data/compat/ledscroll | 23
test/data/compat/level5 | 51
test/data/compat/misc | 122
test/data/compat/mousekeys | 202 +
test/data/compat/pc | 17
test/data/compat/xfree86 | 66
test/data/keycodes/aliases | 99
test/data/keycodes/evdev | 314 ++
test/data/keymaps/bad.xkb | 5
test/data/keymaps/basic.xkb | 6
test/data/keymaps/comprehensive-plus-geom.xkb | 1813 ++++++++++++
test/data/keymaps/default.xkb | 15
test/data/keymaps/divide-by-zero.xkb | 17
test/data/keymaps/no-types.xkb | 1025 +++++++
test/data/keymaps/stringcomp.data | 1927 +++++++++++++
test/data/rules/evdev | 1098 +++++++
test/data/rules/groups | 17
test/data/rules/index | 28
test/data/rules/multiple-options | 27
test/data/rules/simple | 21
test/data/symbols/altwin | 79
test/data/symbols/ca | 530 +++
test/data/symbols/capslock | 74
test/data/symbols/compose | 54
test/data/symbols/ctrl | 57
test/data/symbols/de | 627 ++++
test/data/symbols/eurosign | 23
test/data/symbols/group | 457 +++
test/data/symbols/il | 251 +
test/data/symbols/in | 1726 ++++++++++++
test/data/symbols/inet | 1873 +++++++++++++
test/data/symbols/keypad | 633 ++++
test/data/symbols/kpdl | 102
test/data/symbols/latin | 256 +
test/data/symbols/level3 | 196 +
test/data/symbols/level5 | 147 +
test/data/symbols/nbsp | 204 +
test/data/symbols/pc | 90
test/data/symbols/ru | 653 ++++
test/data/symbols/shift | 84
test/data/symbols/srvr_ctrl | 125
test/data/symbols/terminate | 7
test/data/symbols/us | 1337 +++++++++
test/data/types/basic | 29
test/data/types/complete | 9
test/data/types/extra | 161 +
test/data/types/iso9995 | 18
test/data/types/level5 | 213 +
test/data/types/mousekeys | 10
test/data/types/numpad | 67
test/data/types/pc | 115
test/default.xkb | 15
test/filecomp.c | 118
test/filecomp.sh | 34
test/interactive.c | 504 +++
test/keyseq.c | 278 +
test/keysym.c | 82
test/log.c | 120
test/named.xkb | 15
test/namescomp.c | 62
test/namescomp.sh | 36
test/rules-file.c | 186 +
test/rulescomp.c | 157 -
test/rulescomp.sh | 34
test/state.c | 287 ++
test/stringcomp.c | 81
test/test.h | 47
test/xkey.c | 51
test/xkey.sh | 49
xkbcommon-uninstalled.pc.in | 8
xkbcommon.pc.in | 1
xkbcommon/xkbcommon-keysyms.h | 2995 ++++++++++++++++++++
xkbcommon/xkbcommon-names.h | 39
xkbcommon/xkbcommon.h | 719 +++++
172 files changed, 39190 insertions(+), 21597 deletions(-)
New commits:
commit d43308d60c67e866c8420d4111cb9e2c9395656c
Author: Timo Aaltonen <tjaalton@ubuntu.com>
Date: Thu Aug 16 21:34:50 2012 +0300
control: Update Standards-Version, no changes.
diff --git a/debian/changelog b/debian/changelog
index 48492e2..a5d43dd 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -6,6 +6,7 @@ libxkbcommon (0.1.0~2-1) UNRELEASED; urgency=low
[ Timo Aaltonen ]
* Merge master up to f491285a5f.
* libxkbcommon-dev.install: Add new headers, rename existing.
+ * control: Update Standards-Version, no changes.
-- Cyril Brulebois <kibi@debian.org> Fri, 17 Jun 2011 16:21:08 +0200
diff --git a/debian/control b/debian/control
index 52f2b89..cc1e9bf 100644
--- a/debian/control
+++ b/debian/control
@@ -14,7 +14,7 @@ Build-Depends:
x11proto-core-dev,
x11proto-kb-dev (>= 1.0.5),
xkb-data,
-Standards-Version: 3.9.1
+Standards-Version: 3.9.3
Vcs-Git: git://git.debian.org/git/pkg-xorg/lib/libxkbcommon
Vcs-Browser: http://git.debian.org/?p=pkg-xorg/lib/libxkbcommon.git
commit c57263cad4ea5a9c07fc5b805ddd33449865d012
Author: Timo Aaltonen <tjaalton@ubuntu.com>
Date: Thu Aug 16 21:33:02 2012 +0300
libxkbcommon-dev.install: Add new headers, rename existing.
diff --git a/debian/changelog b/debian/changelog
index 7b4d49b..48492e2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -5,6 +5,7 @@ libxkbcommon (0.1.0~2-1) UNRELEASED; urgency=low
[ Timo Aaltonen ]
* Merge master up to f491285a5f.
+ * libxkbcommon-dev.install: Add new headers, rename existing.
-- Cyril Brulebois <kibi@debian.org> Fri, 17 Jun 2011 16:21:08 +0200
diff --git a/debian/libxkbcommon-dev.install b/debian/libxkbcommon-dev.install
index db79b23..55a9b31 100644
--- a/debian/libxkbcommon-dev.install
+++ b/debian/libxkbcommon-dev.install
@@ -1,5 +1,7 @@
# Use no wildcards to ensure we spot any update:
-usr/include/X11/extensions/XKBcommon.h
+usr/include/xkbcommon/xkbcommon.h
+usr/include/xkbcommon/xkbcommon-keysyms.h
+usr/include/xkbcommon/xkbcommon-names.h
usr/lib/libxkbcommon.a
usr/lib/libxkbcommon.so
usr/lib/pkgconfig/xkbcommon.pc
commit 1d051696a23fcd6636c8f75852dc4644aa884d8a
Author: Timo Aaltonen <tjaalton@ubuntu.com>
Date: Thu Aug 16 21:16:47 2012 +0300
bump the version
diff --git a/debian/changelog b/debian/changelog
index 621ca46..7b4d49b 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,10 +1,10 @@
-libxkbcommon (0.1.0~1-1) UNRELEASED; urgency=low
+libxkbcommon (0.1.0~2-1) UNRELEASED; urgency=low
[ Cyril Brulebois ]
* Fix short description for libxkbcommon-dev.
[ Timo Aaltonen ]
- * Merge master up to c19661b965.
+ * Merge master up to f491285a5f.
-- Cyril Brulebois <kibi@debian.org> Fri, 17 Jun 2011 16:21:08 +0200
commit f491285a5f4b5f680a87e9e3076e8499f3ed2a3b
Author: Daniel Stone <daniel@fooishbar.org>
Date: Thu Aug 9 16:47:53 2012 +0200
Move 'no symbols defined for ...' message to a warning
Shut up shut up shut up shut up shut up shut up.
Signed-off-by: Daniel Stone <daniel@fooishbar.org>
diff --git a/src/xkbcomp/symbols.c b/src/xkbcomp/symbols.c
index 7574520..bd1bfdc 100644
--- a/src/xkbcomp/symbols.c
+++ b/src/xkbcomp/symbols.c
@@ -1926,7 +1926,7 @@ CompileSymbols(XkbFile *file, struct xkb_keymap *keymap,
continue;
if (key->num_groups < 1)
- log_warn(info.keymap->ctx,
+ log_info(info.keymap->ctx,
"No symbols defined for %s (keycode %d)\n",
KeyNameText(key->name),
XkbKeyGetKeycode(keymap, key));
commit ec2172f31b25282f8c5a3ec6dd33453cc0acd320
Author: Ran Benita <ran234@gmail.com>
Date: Fri Aug 10 22:48:18 2012 +0300
Combine a couple of macros
Easier to see what it does without the trivial macros.
Signed-off-by: Ran Benita <ran234@gmail.com>
diff --git a/src/xkb-priv.h b/src/xkb-priv.h
index 61ba590..9c42aeb 100644
--- a/src/xkb-priv.h
+++ b/src/xkb-priv.h
@@ -418,23 +418,11 @@ XkbKeyNumSyms(struct xkb_key *key, xkb_group_index_t group,
}
static inline xkb_keysym_t *
-XkbKeySym(struct xkb_key *key, int ndx)
-{
- return &darray_item(key->syms, ndx);
-}
-
-static inline int
-XkbKeySymOffset(struct xkb_key *key, xkb_group_index_t group,
- xkb_level_index_t level)
-{
- return key->sym_index[group * key->width + level];
-}
-
-static inline xkb_keysym_t *
XkbKeySymEntry(struct xkb_key *key, xkb_group_index_t group,
xkb_level_index_t level)
{
- return XkbKeySym(key, XkbKeySymOffset(key, group, level));
+ return &darray_item(key->syms,
+ key->sym_index[group * key->width + level]);
}
static inline union xkb_action *
commit 4c34bda15a4f8c8a16fa03d40bcf989db23023dd
Author: Ran Benita <ran234@gmail.com>
Date: Fri Aug 10 22:38:07 2012 +0300
action: get rid of xkb_any_action
And use union xkb_action instead. We add xkb_private_action, which is
the same as xkb_any_action, but only used where the intention is clear.
This should take care of whatever sizing changes the action struct might
have.
Signed-off-by: Ran Benita <ran234@gmail.com>
diff --git a/src/keymap-dump.c b/src/keymap-dump.c
index f04f6cc..f406f31 100644
--- a/src/keymap-dump.c
+++ b/src/keymap-dump.c
@@ -397,9 +397,9 @@ write_action(struct xkb_keymap *keymap, struct buf *buf,
if (!suffix)
suffix = "";
- type = ActionTypeText(action->any.type);
+ type = ActionTypeText(action->type);
- switch (action->any.type) {
+ switch (action->type) {
case XkbSA_SetMods:
case XkbSA_LatchMods:
case XkbSA_LockMods:
@@ -408,10 +408,10 @@ write_action(struct xkb_keymap *keymap, struct buf *buf,
else
args = VModMaskText(keymap, action->mods.mods.mods);
write_buf(buf, "%s%s(modifiers=%s%s%s)%s", prefix, type, args,
- (action->any.type != XkbSA_LockGroup &&
+ (action->type != XkbSA_LockGroup &&
(action->mods.flags & XkbSA_ClearLocks)) ?
",clearLocks" : "",
- (action->any.type != XkbSA_LockGroup &&
+ (action->type != XkbSA_LockGroup &&
(action->mods.flags & XkbSA_LatchToLock)) ?
",latchToLock" : "",
suffix);
@@ -425,10 +425,10 @@ write_action(struct xkb_keymap *keymap, struct buf *buf,
action->group.group > 0) ? "+" : "",
(action->group.flags & XkbSA_GroupAbsolute) ?
action->group.group + 1 : action->group.group,
- (action->any.type != XkbSA_LockGroup &&
+ (action->type != XkbSA_LockGroup &&
(action->group.flags & XkbSA_ClearLocks)) ?
",clearLocks" : "",
- (action->any.type != XkbSA_LockGroup &&
+ (action->type != XkbSA_LockGroup &&
(action->group.flags & XkbSA_LatchToLock)) ?
",latchToLock" : "",
suffix);
@@ -521,10 +521,10 @@ write_action(struct xkb_keymap *keymap, struct buf *buf,
default:
write_buf(buf,
"%s%s(type=0x%02x,data[0]=0x%02x,data[1]=0x%02x,data[2]=0x%02x,data[3]=0x%02x,data[4]=0x%02x,data[5]=0x%02x,data[6]=0x%02x)%s",
- prefix, type, action->any.type, action->any.data[0],
- action->any.data[1], action->any.data[2],
- action->any.data[3], action->any.data[4],
- action->any.data[5], action->any.data[6],
+ prefix, type, action->type, action->priv.data[0],
+ action->priv.data[1], action->priv.data[2],
+ action->priv.data[3], action->priv.data[4],
+ action->priv.data[5], action->priv.data[6],
suffix);
break;
}
diff --git a/src/xkb-priv.h b/src/xkb-priv.h
index f53805f..61ba590 100644
--- a/src/xkb-priv.h
+++ b/src/xkb-priv.h
@@ -148,11 +148,6 @@ struct xkb_mods {
xkb_mod_mask_t mask; /* computed effective mask */
};
-struct xkb_any_action {
- uint8_t type;
- uint8_t data[7];
-};
-
struct xkb_mod_action {
uint8_t type;
uint8_t flags;
@@ -240,8 +235,12 @@ struct xkb_pointer_button_action {
int8_t button;
};
+struct xkb_private_action {
+ uint8_t type;
+ uint8_t data[7];
+};
+
union xkb_action {
- struct xkb_any_action any;
struct xkb_mod_action mods;
struct xkb_group_action group;
struct xkb_iso_action iso;
@@ -254,6 +253,7 @@ union xkb_action {
struct xkb_pointer_action ptr; /* XXX delete for DeviceValuator */
struct xkb_pointer_button_action btn; /* XXX delete for DeviceBtn */
struct xkb_message_action msg; /* XXX just delete */
+ struct xkb_private_action priv;
unsigned char type;
};
diff --git a/src/xkbcomp/action.c b/src/xkbcomp/action.c
index a2dd9ed..0d37688 100644
--- a/src/xkbcomp/action.c
+++ b/src/xkbcomp/action.c
@@ -219,7 +219,7 @@ ReportNotFound(struct xkb_keymap *keymap, unsigned action, unsigned field,
}
static bool
-HandleNoAction(struct xkb_keymap *keymap, struct xkb_any_action *action,
+HandleNoAction(struct xkb_keymap *keymap, union xkb_action *action,
unsigned field, const ExprDef *array_ndx, const ExprDef *value)
{
@@ -277,16 +277,15 @@ CheckModifierField(struct xkb_keymap *keymap, unsigned action,
}
static bool
-HandleSetLatchMods(struct xkb_keymap *keymap, struct xkb_any_action *action,
+HandleSetLatchMods(struct xkb_keymap *keymap, union xkb_action *action,
unsigned field, const ExprDef *array_ndx,
const ExprDef *value)
{
- struct xkb_mod_action *act;
+ struct xkb_mod_action *act = &action->mods;
unsigned rtrn;
unsigned t1;
xkb_mod_mask_t t2;
- act = (struct xkb_mod_action *) action;
if (array_ndx != NULL) {
switch (field) {
case F_ClearLocks:
@@ -318,14 +317,13 @@ HandleSetLatchMods(struct xkb_keymap *keymap, struct xkb_any_action *action,
}
static bool
-HandleLockMods(struct xkb_keymap *keymap, struct xkb_any_action *action,
+HandleLockMods(struct xkb_keymap *keymap, union xkb_action *action,
unsigned field, const ExprDef *array_ndx, const ExprDef *value)
{
- struct xkb_mod_action *act;
+ struct xkb_mod_action *act = &action->mods;
unsigned t1;
xkb_mod_mask_t t2;
- act = (struct xkb_mod_action *) action;
if ((array_ndx != NULL) && (field == F_Modifiers))
return ReportActionNotArray(keymap, action->type, field);
switch (field) {
@@ -370,16 +368,15 @@ CheckGroupField(struct xkb_keymap *keymap, unsigned action,
}
static bool
-HandleSetLatchGroup(struct xkb_keymap *keymap, struct xkb_any_action *action,
+HandleSetLatchGroup(struct xkb_keymap *keymap, union xkb_action *action,
unsigned field, const ExprDef *array_ndx,
const ExprDef *value)
{
- struct xkb_group_action *act;
+ struct xkb_group_action *act = &action->group;
unsigned rtrn;
unsigned t1;
xkb_group_index_t t2;
- act = (struct xkb_group_action *) action;
if (array_ndx != NULL) {
switch (field) {
case F_ClearLocks:
@@ -411,15 +408,14 @@ HandleSetLatchGroup(struct xkb_keymap *keymap, struct xkb_any_action *action,
}
static bool
-HandleLockGroup(struct xkb_keymap *keymap, struct xkb_any_action *action,
+HandleLockGroup(struct xkb_keymap *keymap, union xkb_action *action,
unsigned field, const ExprDef *array_ndx,
const ExprDef *value)
{
- struct xkb_group_action *act;
+ struct xkb_group_action *act = &action->group;
unsigned t1;
xkb_group_index_t t2;
- act = (struct xkb_group_action *) action;
if ((array_ndx != NULL) && (field == F_Group))
return ReportActionNotArray(keymap, action->type, field);
if (field == F_Group) {
@@ -435,13 +431,12 @@ HandleLockGroup(struct xkb_keymap *keymap, struct xkb_any_action *action,
}
static bool
-HandleMovePtr(struct xkb_keymap *keymap, struct xkb_any_action *action,
+HandleMovePtr(struct xkb_keymap *keymap, union xkb_action *action,
unsigned field, const ExprDef *array_ndx, const ExprDef *value)
{
- struct xkb_pointer_action *act;
+ struct xkb_pointer_action *act = &action->ptr;
bool absolute;
- act = (struct xkb_pointer_action *) action;
if ((array_ndx != NULL) && ((field == F_X) || (field == F_Y)))
return ReportActionNotArray(keymap, action->type, field);
@@ -493,12 +488,11 @@ static const LookupEntry lockWhich[] = {
};
static bool
-HandlePtrBtn(struct xkb_keymap *keymap, struct xkb_any_action *action,
+HandlePtrBtn(struct xkb_keymap *keymap, union xkb_action *action,
unsigned field, const ExprDef *array_ndx, const ExprDef *value)
{
- struct xkb_pointer_button_action *act;
+ struct xkb_pointer_button_action *act = &action->btn;
- act = (struct xkb_pointer_button_action *) action;
if (field == F_Button) {
int btn;
@@ -564,13 +558,12 @@ static const LookupEntry ptrDflts[] = {
};
static bool
-HandleSetPtrDflt(struct xkb_keymap *keymap, struct xkb_any_action *action,
+HandleSetPtrDflt(struct xkb_keymap *keymap, union xkb_action *action,
unsigned field, const ExprDef *array_ndx,
const ExprDef *value)
{
- struct xkb_pointer_default_action *act;
+ struct xkb_pointer_default_action *act = &action->dflt;
- act = (struct xkb_pointer_default_action *) action;
if (field == F_Affect) {
unsigned int val;
@@ -638,12 +631,11 @@ static const LookupEntry isoNames[] = {
};
static bool
-HandleISOLock(struct xkb_keymap *keymap, struct xkb_any_action *action,
+HandleISOLock(struct xkb_keymap *keymap, union xkb_action *action,
unsigned field, const ExprDef *array_ndx, const ExprDef *value)
{
- struct xkb_iso_action *act;
+ struct xkb_iso_action *act = &action->iso;
- act = (struct xkb_iso_action *) action;
if (field == F_Modifiers) {
unsigned flags;
xkb_mod_mask_t mods;
@@ -691,13 +683,12 @@ HandleISOLock(struct xkb_keymap *keymap, struct xkb_any_action *action,
}
static bool
-HandleSwitchScreen(struct xkb_keymap *keymap, struct xkb_any_action *action,
+HandleSwitchScreen(struct xkb_keymap *keymap, union xkb_action *action,
unsigned field, const ExprDef *array_ndx,
const ExprDef *value)
{
- struct xkb_switch_screen_action *act;
+ struct xkb_switch_screen_action *act = &action->screen;
- act = (struct xkb_switch_screen_action *) action;
if (field == F_Screen) {
const ExprDef *scrn;
int val;
@@ -771,13 +762,12 @@ const LookupEntry ctrlNames[] = {
static bool
HandleSetLockControls(struct xkb_keymap *keymap,
- struct xkb_any_action *action,
+ union xkb_action *action,
unsigned field, const ExprDef *array_ndx,
const ExprDef *value)
{
- struct xkb_controls_action *act;
+ struct xkb_controls_action *act = &action->ctrls;
- act = (struct xkb_controls_action *) action;
if (field == F_Controls) {
unsigned int mask;
@@ -806,13 +796,12 @@ static const LookupEntry evNames[] = {
};
static bool
-HandleActionMessage(struct xkb_keymap *keymap, struct xkb_any_action *action,
+HandleActionMessage(struct xkb_keymap *keymap, union xkb_action *action,
unsigned field, const ExprDef *array_ndx,
const ExprDef *value)
{
- struct xkb_message_action *act;
+ struct xkb_message_action *act = &action->msg;
- act = (struct xkb_message_action *) action;
if (field == F_Report) {
unsigned int mask;
@@ -896,12 +885,12 @@ HandleActionMessage(struct xkb_keymap *keymap, struct xkb_any_action *action,
}
static bool
-HandleRedirectKey(struct xkb_keymap *keymap, struct xkb_any_action *action,
+HandleRedirectKey(struct xkb_keymap *keymap, union xkb_action *action,
unsigned field, const ExprDef *array_ndx,
const ExprDef *value)
{
struct xkb_key *key;
- struct xkb_redirect_key_action *act;
+ struct xkb_redirect_key_action *act = &action->redirect;
unsigned t1;
xkb_mod_mask_t t2;
unsigned long tmp;
@@ -910,7 +899,6 @@ HandleRedirectKey(struct xkb_keymap *keymap, struct xkb_any_action *action,
if (array_ndx != NULL)
return ReportActionNotArray(keymap, action->type, field);
- act = (struct xkb_redirect_key_action *) action;
switch (field) {
case F_Keycode:
if (!ExprResolveKeyName(keymap->ctx, value, key_name))
@@ -948,13 +936,12 @@ HandleRedirectKey(struct xkb_keymap *keymap, struct xkb_any_action *action,
}
static bool
-HandleDeviceBtn(struct xkb_keymap *keymap, struct xkb_any_action *action,
+HandleDeviceBtn(struct xkb_keymap *keymap, union xkb_action *action,
unsigned field, const ExprDef *array_ndx,
const ExprDef *value)
{
- struct xkb_device_button_action *act;
+ struct xkb_device_button_action *act = &action->devbtn;
- act = (struct xkb_device_button_action *) action;
if (field == F_Button) {
int val;
@@ -1034,24 +1021,23 @@ HandleDeviceBtn(struct xkb_keymap *keymap, struct xkb_any_action *action,
}
static bool
-HandleDeviceValuator(struct xkb_keymap *keymap, struct xkb_any_action *action,
+HandleDeviceValuator(struct xkb_keymap *keymap, union xkb_action *action,
unsigned field, const ExprDef *array_ndx,
const ExprDef *value)
{
-#if 0
- ExprResult rtrn;
- struct xkb_device_valuator_action *act;
+ struct xkb_device_valuator_action *act = &action->devval;
+ (void) act;
- act = (struct xkb_device_valuator_action *) action;
/* XXX - Not yet implemented */
-#endif
return false;
}
static bool
-HandlePrivate(struct xkb_keymap *keymap, struct xkb_any_action *action,
+HandlePrivate(struct xkb_keymap *keymap, union xkb_action *action,
unsigned field, const ExprDef *array_ndx, const ExprDef *value)
{
+ struct xkb_private_action *act = &action->priv;
+
if (field == F_Type) {
int type;
@@ -1065,7 +1051,7 @@ HandlePrivate(struct xkb_keymap *keymap, struct xkb_any_action *action,
return false;
}
- action->type = (uint8_t) type;
+ act->type = (uint8_t) type;
return true;
}
else if (field == F_Data) {
@@ -1084,7 +1070,7 @@ HandlePrivate(struct xkb_keymap *keymap, struct xkb_any_action *action,
return false;
}
- strncpy((char *) action->data, str, sizeof(action->data));
+ strncpy((char *) act->data, str, sizeof(act->data));
return true;
}
else {
@@ -1097,16 +1083,16 @@ HandlePrivate(struct xkb_keymap *keymap, struct xkb_any_action *action,
return false;
}
- if (ndx < 0 || ndx >= sizeof(action->data)) {
+ if (ndx < 0 || ndx >= sizeof(act->data)) {
log_err(keymap->ctx,
"The data for a private action is %zu bytes long; "
"Attempt to use data[%d] ignored\n",
- sizeof(action->data), ndx);
+ sizeof(act->data), ndx);
return false;
}
if (!ExprResolveInteger(keymap->ctx, value, &datum))
- return ReportMismatch(keymap, action->type, field, "integer");
+ return ReportMismatch(keymap, act->type, field, "integer");
if (datum < 0 || datum > 255) {
log_err(keymap->ctx,
@@ -1115,7 +1101,7 @@ HandlePrivate(struct xkb_keymap *keymap, struct xkb_any_action *action,
return false;
}
- action->data[ndx] = (uint8_t) datum;
+ act->data[ndx] = (uint8_t) datum;
return true;
}
}
@@ -1124,7 +1110,7 @@ HandlePrivate(struct xkb_keymap *keymap, struct xkb_any_action *action,
}
typedef bool (*actionHandler)(struct xkb_keymap *keymap,
- struct xkb_any_action *action, unsigned field,
+ union xkb_action *action, unsigned field,
const ExprDef *array_ndx, const ExprDef *value);
static const actionHandler handleAction[XkbSA_NumActions + 1] = {
@@ -1170,7 +1156,7 @@ ApplyActionFactoryDefaults(union xkb_action * action)
int
HandleActionDef(ExprDef * def,
struct xkb_keymap *keymap,
- struct xkb_any_action *action, ActionInfo *info)
+ union xkb_action *action, ActionInfo *info)
{
ExprDef *arg;
const char *str;
diff --git a/src/xkbcomp/action.h b/src/xkbcomp/action.h
index 3d63468..5cf67d9 100644
--- a/src/xkbcomp/action.h
+++ b/src/xkbcomp/action.h
@@ -68,7 +68,7 @@ typedef struct _ActionInfo {
extern int
HandleActionDef(ExprDef *def, struct xkb_keymap *keymap,
- struct xkb_any_action *action,
+ union xkb_action *action,
ActionInfo *info);
extern int
diff --git a/src/xkbcomp/compat.c b/src/xkbcomp/compat.c
index 1fbf2b1..b00f64a 100644
--- a/src/xkbcomp/compat.c
+++ b/src/xkbcomp/compat.c
@@ -158,8 +158,6 @@ ClearIndicatorMapInfo(struct xkb_context *ctx, LEDInfo * info)
static void
InitCompatInfo(CompatInfo *info, struct xkb_keymap *keymap, unsigned file_id)
{
- unsigned int i;
-
info->keymap = keymap;
info->name = NULL;
info->file_id = file_id;
@@ -172,9 +170,8 @@ InitCompatInfo(CompatInfo *info, struct xkb_keymap *keymap, unsigned file_id)
info->dflt.merge = MERGE_OVERRIDE;
info->dflt.interp.flags = 0;
info->dflt.interp.virtual_mod = XkbNoModifier;
+ memset(&info->dflt.interp.act, 0, sizeof(info->dflt.interp.act));
info->dflt.interp.act.type = XkbSA_NoAction;
- for (i = 0; i < sizeof(info->dflt.interp.act.any.data); i++)
- info->dflt.interp.act.any.data[i] = 0;
ClearIndicatorMapInfo(keymap->ctx, &info->ledDflt);
info->ledDflt.file_id = file_id;
info->ledDflt.defined = 0;
@@ -188,7 +185,6 @@ InitCompatInfo(CompatInfo *info, struct xkb_keymap *keymap, unsigned file_id)
static void
ClearCompatInfo(CompatInfo *info)
{
- unsigned int i;
ActionInfo *next_act;
SymInterpInfo *si, *next_si;
LEDInfo *led, *next_led;
@@ -200,9 +196,8 @@ ClearCompatInfo(CompatInfo *info)
info->dflt.merge = MERGE_AUGMENT;
info->dflt.interp.flags = 0;
info->dflt.interp.virtual_mod = XkbNoModifier;
+ memset(&info->dflt.interp.act, 0, sizeof(info->dflt.interp.act));
info->dflt.interp.act.type = XkbSA_NoAction;
- for (i = 0; i < sizeof(info->dflt.interp.act.any.data); i++)
- info->dflt.interp.act.any.data[i] = 0;
ClearIndicatorMapInfo(keymap->ctx, &info->ledDflt);
info->nInterps = 0;
list_foreach_safe(si, next_si, &info->interps, entry)
@@ -640,7 +635,7 @@ SetInterpField(CompatInfo *info, SymInterpInfo *si, const char *field,
if (arrayNdx)
return ReportSINotArray(info, si, field);
- if (!HandleActionDef(value, keymap, &si->interp.act.any, info->act))
+ if (!HandleActionDef(value, keymap, &si->interp.act, info->act))
return false;
si->defined |= SI_FIELD_ACTION;
diff --git a/src/xkbcomp/symbols.c b/src/xkbcomp/symbols.c
index 5993a9a..7574520 100644
--- a/src/xkbcomp/symbols.c
+++ b/src/xkbcomp/symbols.c
@@ -925,7 +925,7 @@ AddActionsToKey(SymbolsInfo *info, KeyInfo *keyi, ExprDef *arrayNdx,
xkb_group_index_t ndx;
size_t nActs;
ExprDef *act;
- struct xkb_any_action *toAct;
+ union xkb_action *toAct;
if (!GetGroupIndex(info, keyi, arrayNdx, ACTIONS, &ndx))
return false;
@@ -970,7 +970,7 @@ AddActionsToKey(SymbolsInfo *info, KeyInfo *keyi, ExprDef *arrayNdx,
}
keyi->actsDefined |= (1 << ndx);
- toAct = (struct xkb_any_action *) darray_mem(keyi->acts[ndx], 0);
+ toAct = darray_mem(keyi->acts[ndx], 0);
act = value->value.child;
for (i = 0; i < nActs; i++, toAct++) {
if (!HandleActionDef(act, info->keymap, toAct, info->action)) {
commit 600caac33ade86607372e9cb326fe14c8c2b25d6
Author: Ran Benita <ran234@gmail.com>
Date: Fri Aug 10 22:06:12 2012 +0300
Remove XkbKeyTypeIndex and widen index type
We don't need the macro, and using char for the kt_index is imaginably
too small.
Signed-off-by: Ran Benita <ran234@gmail.com>
diff --git a/src/keymap-dump.c b/src/keymap-dump.c
index 7593068..f04f6cc 100644
--- a/src/keymap-dump.c
+++ b/src/keymap-dump.c
@@ -677,12 +677,12 @@ write_symbols(struct xkb_keymap *keymap, struct buf *buf)
if (key->explicit & XkbExplicitKeyTypesMask) {
bool multi_type = false;
- int type = XkbKeyTypeIndex(key, 0);
+ struct xkb_key_type *type = XkbKeyType(keymap, key, 0);
simple = false;
- for (group = 0; group < key->num_groups; group++) {
- if (XkbKeyTypeIndex(key, group) != type) {
+ for (group = 1; group < key->num_groups; group++) {
+ if (XkbKeyType(keymap, key, group) != type) {
multi_type = true;
break;
}
@@ -692,17 +692,15 @@ write_symbols(struct xkb_keymap *keymap, struct buf *buf)
for (group = 0; group < key->num_groups; group++) {
if (!(key->explicit & (1 << group)))
continue;
- type = XkbKeyTypeIndex(key, group);
+ type = XkbKeyType(keymap, key, group);
write_buf(buf, "\n\t\t\ttype[group%u]= \"%s\",",
group + 1,
- xkb_atom_text(keymap->ctx,
- keymap->types[type].name));
+ xkb_atom_text(keymap->ctx, type->name));
}
}
else {
write_buf(buf, "\n\t\t\ttype= \"%s\",",
- xkb_atom_text(keymap->ctx,
- keymap->types[type].name));
+ xkb_atom_text(keymap->ctx, type->name));
}
}
diff --git a/src/xkb-priv.h b/src/xkb-priv.h
index 630760a..f53805f 100644
--- a/src/xkb-priv.h
+++ b/src/xkb-priv.h
@@ -323,7 +323,7 @@ struct xkb_key {
union xkb_action *actions;
- unsigned char kt_index[XkbNumKbdGroups];
+ unsigned kt_index[XkbNumKbdGroups];
xkb_group_index_t num_groups;
/* How many levels the largest group has. */
@@ -396,17 +396,11 @@ XkbKeyGetKeycode(struct xkb_keymap *keymap, struct xkb_key *key)
#define xkb_foreach_key(iter, keymap) \
xkb_foreach_key_from(iter, keymap, keymap->min_key_code)
-static inline unsigned char
-XkbKeyTypeIndex(struct xkb_key *key, xkb_group_index_t group)
-{
- return key->kt_index[group & 0x3];
-}
-
static inline struct xkb_key_type *
XkbKeyType(struct xkb_keymap *keymap, struct xkb_key *key,
xkb_group_index_t group)
{
- return &keymap->types[XkbKeyTypeIndex(key, group)];
+ return &keymap->types[key->kt_index[group]];
}
static inline xkb_level_index_t
commit 87dff888abd107541bf232258793d0bcb162b37d
Author: Ran Benita <ran234@gmail.com>
Date: Fri Aug 10 18:14:35 2012 +0300
Store actions inside struct xkb_key
Cuts out a lot of useless redirection and space.
Signed-off-by: Ran Benita <ran234@gmail.com>
diff --git a/src/keymap-dump.c b/src/keymap-dump.c
index f1d11bd..7593068 100644
--- a/src/keymap-dump.c
+++ b/src/keymap-dump.c
@@ -732,7 +732,7 @@ write_symbols(struct xkb_keymap *keymap, struct buf *buf)
}
if (key->explicit & XkbExplicitInterpretMask)
- showActions = XkbKeyHasActions(key);
+ showActions = (key->actions != NULL);
else
showActions = false;
@@ -746,10 +746,8 @@ write_symbols(struct xkb_keymap *keymap, struct buf *buf)
write_buf(buf, " ] };\n");
}
else {
- union xkb_action *acts;
- int level;
+ xkb_level_index_t level;
- acts = XkbKeyActionsPtr(keymap, key);
for (group = 0; group < key->num_groups; group++) {
if (group != 0)
write_buf(buf, ",");
@@ -765,10 +763,11 @@ write_symbols(struct xkb_keymap *keymap, struct buf *buf)
level++) {
if (level != 0)
write_buf(buf, ", ");
- write_action(keymap, buf, &acts[level], NULL, NULL);
+ write_action(keymap, buf,
+ XkbKeyActionEntry(key, group, level),
+ NULL, NULL);
}
write_buf(buf, " ]");
- acts += key->width;
}
}
write_buf(buf, "\n\t\t};\n");
diff --git a/src/state.c b/src/state.c
index 758bbf7..c77365b 100644
--- a/src/state.c
+++ b/src/state.c
@@ -118,7 +118,7 @@ xkb_key_get_action(struct xkb_state *state, xkb_keycode_t kc)
if (XkbKeycodeInRange(state->keymap, kc))
key = XkbKey(state->keymap, kc);
- if (!key || !XkbKeyHasActions(key))
+ if (!key || !key->actions)
return &fake;
Reply to: