Signed-off-by: Ran Benita <ran234@gmail.com>
ExprResolveKeySym(struct xkb_context *ctx, ExprDef *expr,
ExprResolveKeySym(struct xkb_context *ctx, ExprDef *expr,
+ xkb_keysym_t *sym_rtrn)
- int ok = 0;
- xkb_keysym_t sym;
+ bool ok = false;
+ ExprResult result;
if (expr->op == EXPR_IDENT) {
const char *str;
str = xkb_atom_text(ctx, expr->value.str);
if (expr->op == EXPR_IDENT) {
const char *str;
str = xkb_atom_text(ctx, expr->value.str);
- if (str) {
- sym = xkb_keysym_from_name(str);
- if (sym != XKB_KEY_NoSymbol) {
- val_rtrn->uval = sym;
- return true;
- }
- }
+ *sym_rtrn = xkb_keysym_from_name(str);
+ if (*sym_rtrn != XKB_KEY_NoSymbol)
+ return true;
- ok = ExprResolveInteger(ctx, expr, val_rtrn);
- if ((ok) && (val_rtrn->uval < 10))
- val_rtrn->uval += '0';
+
+ ok = ExprResolveInteger(ctx, expr, &result);
+ if (ok && result.uval < 10)
+ *sym_rtrn = result.uval + '0';
+
ExprResolveMask(struct xkb_context *ctx, ExprDef *expr, ExprResult *val_rtrn,
const LookupEntry *values);
ExprResolveMask(struct xkb_context *ctx, ExprDef *expr, ExprResult *val_rtrn,
const LookupEntry *values);
ExprResolveKeySym(struct xkb_context *ctx, ExprDef *expr,
ExprResolveKeySym(struct xkb_context *ctx, ExprDef *expr,
+ xkb_keysym_t *sym_rtrn);
ok = true;
tmp.modifier = rtrn.uval;
for (key = def->keys; key != NULL; key = (ExprDef *) key->common.next) {
ok = true;
tmp.modifier = rtrn.uval;
for (key = def->keys; key != NULL; key = (ExprDef *) key->common.next) {
if (key->op == EXPR_VALUE && key->value_type == EXPR_TYPE_KEYNAME) {
tmp.haveSymbol = false;
tmp.u.keyName = KeyNameToLong(key->value.keyName);
}
if (key->op == EXPR_VALUE && key->value_type == EXPR_TYPE_KEYNAME) {
tmp.haveSymbol = false;
tmp.u.keyName = KeyNameToLong(key->value.keyName);
}
- else if (ExprResolveKeySym(ctx, key, &rtrn)) {
+ else if (ExprResolveKeySym(ctx, key, &sym)) {
- tmp.u.keySym = rtrn.uval;
}
else {
log_err(info->keymap->ctx,
}
else {
log_err(info->keymap->ctx,