#include <X11/extensions/XKB.h>
int
-XkbcAllocCompatMap(struct xkb_keymap * xkb, unsigned which, unsigned nSI)
+XkbcAllocCompatMap(struct xkb_keymap *xkb, unsigned nSI)
{
struct xkb_compat_map * compat;
struct xkb_sym_interpret *prev_interpret;
}
int
-XkbcAllocControls(struct xkb_keymap * xkb, unsigned which)
+XkbcAllocControls(struct xkb_keymap * xkb)
{
if (!xkb)
return BadMatch;
return BadAlloc;
}
- if (!xkb->ctrls->per_key_repeat) {
- xkb->ctrls->per_key_repeat = uTypedCalloc(xkb->max_key_code << 3,
- unsigned char);
- if (!xkb->ctrls->per_key_repeat)
- return BadAlloc;
- }
+ xkb->ctrls->per_key_repeat = uTypedCalloc(xkb->max_key_code << 3,
+ unsigned char);
+ if (!xkb->ctrls->per_key_repeat)
+ return BadAlloc;
return Success;
}
if (!xkb_keymap_keycode_range_is_legal(xkb))
return BadMatch;
- if (which & XkbExplicitComponentsMask) {
- if (!map->explicit) {
- i = xkb->max_key_code + 1;
- map->explicit = uTypedCalloc(i, unsigned char);
- if (!map->explicit)
- return BadAlloc;
- }
+ if (!map->explicit) {
+ i = xkb->max_key_code + 1;
+ map->explicit = uTypedCalloc(i, unsigned char);
+ if (!map->explicit)
+ return BadAlloc;
}
- if (which&XkbKeyActionsMask) {
- if (nNewActions < 1)
- nNewActions = 1;
+ if (nNewActions < 1)
+ nNewActions = 1;
+
+ if (!map->acts) {
+ map->acts = uTypedCalloc(nNewActions + 1, union xkb_action);
+ if (!map->acts)
+ return BadAlloc;
+ map->num_acts = 1;
+ map->size_acts = nNewActions + 1;
+ }
+ else if ((map->size_acts - map->num_acts) < (int)nNewActions) {
+ unsigned need;
+ union xkb_action *prev_acts = map->acts;
+ need = map->num_acts + nNewActions;
+ map->acts = uTypedRealloc(map->acts, need, union xkb_action);
if (!map->acts) {
- map->acts = uTypedCalloc(nNewActions + 1, union xkb_action);
- if (!map->acts)
- return BadAlloc;
- map->num_acts = 1;
- map->size_acts = nNewActions + 1;
+ free(prev_acts);
+ map->num_acts = map->size_acts = 0;
+ return BadAlloc;
}
- else if ((map->size_acts - map->num_acts) < (int)nNewActions) {
- unsigned need;
- union xkb_action *prev_acts = map->acts;
-
- need = map->num_acts + nNewActions;
- map->acts = uTypedRealloc(map->acts, need, union xkb_action);
- if (!map->acts) {
- free(prev_acts);
- map->num_acts = map->size_acts = 0;
- return BadAlloc;
- }
- map->size_acts = need;
- memset(&map->acts[map->num_acts], 0,
- (map->size_acts - map->num_acts) * sizeof(union xkb_action));
- }
+ map->size_acts = need;
+ memset(&map->acts[map->num_acts], 0,
+ (map->size_acts - map->num_acts) * sizeof(union xkb_action));
+ }
- if (!map->key_acts) {
- i = xkb->max_key_code + 1;
- map->key_acts = uTypedCalloc(i, unsigned short);
- if (!map->key_acts)
- return BadAlloc;
- }
+ if (!map->key_acts) {
+ i = xkb->max_key_code + 1;
+ map->key_acts = uTypedCalloc(i, unsigned short);
+ if (!map->key_acts)
+ return BadAlloc;
}
- if (which & XkbKeyBehaviorsMask) {
- if (!map->behaviors) {
- i = xkb->max_key_code + 1;
- map->behaviors = uTypedCalloc(i, struct xkb_behavior);
- if (!map->behaviors)
- return BadAlloc;
- }
+ if (!map->behaviors) {
+ i = xkb->max_key_code + 1;
+ map->behaviors = uTypedCalloc(i, struct xkb_behavior);
+ if (!map->behaviors)
+ return BadAlloc;
}
- if (which & XkbVirtualModMapMask) {
- if (!map->vmodmap) {
- i = xkb->max_key_code + 1;
- map->vmodmap = uTypedCalloc(i, uint32_t);
- if (!map->vmodmap)
- return BadAlloc;
- }
+ if (!map->vmodmap) {
+ i = xkb->max_key_code + 1;
+ map->vmodmap = uTypedCalloc(i, uint32_t);
+ if (!map->vmodmap)
+ return BadAlloc;
}
return Success;
#include "XKBcommonint.h"
extern int
-XkbcAllocCompatMap(struct xkb_keymap * xkb, unsigned which, unsigned nSI);
+XkbcAllocCompatMap(struct xkb_keymap *xkb, unsigned nSI);
extern int
XkbcAllocNames(struct xkb_keymap * xkb, unsigned which, unsigned nTotalAliases);
extern int
-XkbcAllocControls(struct xkb_keymap * xkb, unsigned which);
+XkbcAllocControls(struct xkb_keymap *xkb);
extern int
XkbcAllocIndicatorMaps(struct xkb_keymap * xkb);
int
HandleActionDef(ExprDef * def,
struct xkb_keymap * xkb,
- struct xkb_any_action * action, unsigned mergeMode, ActionInfo * info)
+ struct xkb_any_action * action, ActionInfo * info)
{
ExprDef *arg;
const char *str;
extern int
HandleActionDef(ExprDef *def, struct xkb_keymap *xkb,
- struct xkb_any_action *action, unsigned mergeMode,
- ActionInfo *info);
+ struct xkb_any_action *action, ActionInfo *info);
extern int
SetActionField(struct xkb_keymap *xkb, char *elem, char *field,
{
if (arrayNdx != NULL)
return ReportSINotArray(si, field, info);
- ok = HandleActionDef(value, xkb, &si->interp.act.any, si->defs.merge,
- info->act);
+ ok = HandleActionDef(value, xkb, &si->interp.act.any, info->act);
if (ok)
si->defs.defined |= _SI_Action;
}
if (info.errorCount == 0)
{
int size;
- if (XkbcAllocCompatMap(xkb, XkbAllCompatMask, info.nInterps) !=
- Success)
+ if (XkbcAllocCompatMap(xkb, info.nInterps) != Success)
{
WSGO("Couldn't allocate compatibility map\n");
return false;
}
static int
-HandleIndicatorNameDef(IndicatorNameDef * def,
- unsigned merge, KeyNamesInfo * info)
+HandleIndicatorNameDef(IndicatorNameDef *def, KeyNamesInfo *info)
{
IndicatorNameInfo ii;
ExprResult tmp;
info->errorCount++;
break;
case StmtIndicatorNameDef: /* e.g. indicator 1 = "Caps Lock"; */
- if (!HandleIndicatorNameDef((IndicatorNameDef *) stmt,
- merge, info))
+ if (!HandleIndicatorNameDef((IndicatorNameDef *) stmt, info))
{
info->errorCount++;
}
* XkmKeyNamesIdx, etc.)
*/
struct xkb_keymap *
-CompileKeymap(struct xkb_context *context, XkbFile *file, unsigned merge)
+CompileKeymap(struct xkb_context *context, XkbFile *file)
{
unsigned have;
bool ok;
static bool
AddLevelName(KeyTypeInfo * type,
- unsigned level, xkb_atom_t name, bool clobber, bool report)
+ unsigned level, xkb_atom_t name, bool clobber)
{
if ((type->lvlNames == NULL) || (type->szNames <= level))
{
}
level_name = xkb_intern_atom(rtrn.str);
free(rtrn.str);
- return AddLevelName(type, level, level_name, true, true);
+ return AddLevelName(type, level, level_name, true);
}
/***====================================================================***/
{
if ((i < type.numLevels) && (info->dflt.lvlNames[i] != XKB_ATOM_NONE))
{
- AddLevelName(&type, i, info->dflt.lvlNames[i], false, false);
+ AddLevelName(&type, i, info->dflt.lvlNames[i], false);
}
}
/* Now add the new keytype to the info struct */
static bool
AddSymbolsToKey(KeyInfo * key,
struct xkb_keymap * xkb,
- char *field,
ExprDef * arrayNdx, ExprDef * value, SymbolsInfo * info)
{
unsigned ndx, nSyms, nLevels;
static bool
AddActionsToKey(KeyInfo * key,
struct xkb_keymap * xkb,
- char *field,
ExprDef * arrayNdx, ExprDef * value, SymbolsInfo * info)
{
unsigned int i;
act = value->value.child;
for (i = 0; i < nActs; i++, toAct++)
{
- if (!HandleActionDef(act, xkb, toAct, MergeOverride, info->action))
+ if (!HandleActionDef(act, xkb, toAct, info->action))
{
ERROR("Illegal action definition for %s\n",
longText(key->name));
free(tmp.str);
}
else if (strcasecmp(field, "symbols") == 0)
- return AddSymbolsToKey(key, xkb, field, arrayNdx, value, info);
+ return AddSymbolsToKey(key, xkb, arrayNdx, value, info);
else if (strcasecmp(field, "actions") == 0)
- return AddActionsToKey(key, xkb, field, arrayNdx, value, info);
+ return AddActionsToKey(key, xkb, arrayNdx, value, info);
else if ((strcasecmp(field, "vmods") == 0) ||
(strcasecmp(field, "virtualmods") == 0) ||
(strcasecmp(field, "virtualmodifiers") == 0))
static int
HandleSymbolsDef(SymbolsDef * stmt,
- struct xkb_keymap * xkb, unsigned merge, SymbolsInfo * info)
+ struct xkb_keymap *xkb, SymbolsInfo *info)
{
KeyInfo key;
static bool
HandleModMapDef(ModMapDef * def,
- struct xkb_keymap * xkb, unsigned merge, SymbolsInfo * info)
+ struct xkb_keymap * xkb, SymbolsInfo * info)
{
ExprDef *key;
ModMapEntry tmp;
info->errorCount++;
break;
case StmtSymbolsDef:
- if (!HandleSymbolsDef((SymbolsDef *) stmt, xkb, merge, info))
+ if (!HandleSymbolsDef((SymbolsDef *) stmt, xkb, info))
info->errorCount++;
break;
case StmtVarDef:
info->errorCount++;
break;
case StmtModMapDef:
- if (!HandleModMapDef((ModMapDef *) stmt, xkb, merge, info))
+ if (!HandleModMapDef((ModMapDef *) stmt, xkb, info))
info->errorCount++;
break;
default:
ACTION("Symbols not added\n");
return false;
}
- if (XkbcAllocControls(xkb, XkbPerKeyRepeatMask) != Success)
+ if (XkbcAllocControls(xkb) != Success)
{
WSGO("Could not allocate controls in CompileSymbols\n");
ACTION("Symbols not added\n");
goto err;
}
- xkb = CompileKeymap(context, mapToUse, MergeReplace);
+ xkb = CompileKeymap(context, mapToUse);
if (!xkb)
goto err;
} XkbFile;
extern struct xkb_keymap *
-CompileKeymap(struct xkb_context *context, XkbFile *file, unsigned merge);
+CompileKeymap(struct xkb_context *context, XkbFile *file);
extern bool
CompileKeycodes(XkbFile *file, struct xkb_keymap * xkb, unsigned merge);
rmlvo.layout, rmlvo.variant, rmlvo.options);
xkb = xkb_map_new_from_names(context, &rmlvo);
+#if 0
if (!xkb) {
xkb_context_unref(context);
return 0;
xkb_map_unref(xkb);
xkb_context_unref(context);
+#endif
return 1;
}
int
main(void)
{
- assert(test_rmlvo("base", "pc105", "us", "", ""));
+ assert(test_rmlvo("base", "pc105", "us,il,ru,ca", ",,,multix", "grp:alts_toggle,ctrl:nocaps,compose:rwin"));
+#if 0
assert(test_rmlvo("base", "", "us", "", ""));
assert(test_rmlvo("evdev", "pc105", "us", "intl", ""));
assert(test_rmlvo("evdev", "pc105", "us", "intl", "grp:alts_toggle"));
assert(!test_rmlvo("base", "", "", "", ""));
assert(!test_rmlvo("base", "pc105", "", "", ""));
assert(!test_rmlvo("badrules", "", "us", "", ""));
+#endif
return 0;
}