compat: ignore "index" field in indicator statements
The current code allows to set the "index" field in an indicator statment's body. This would bind the indicator to the specified index, instead of by name (which was declared previously in xkb_keycodes). Doing this is a bad idea, for the same reasons as in 3cd9704, and is also happily not used anywhere. Signed-off-by: Ran Benita <ran234@gmail.com>master
parent
65c4a71731
commit
02de2a3e74
|
@ -152,12 +152,11 @@ typedef struct _SymInterpInfo {
|
||||||
} SymInterpInfo;
|
} SymInterpInfo;
|
||||||
|
|
||||||
enum led_field {
|
enum led_field {
|
||||||
LED_FIELD_INDEX = (1 << 0),
|
LED_FIELD_MODS = (1 << 0),
|
||||||
LED_FIELD_MODS = (1 << 1),
|
LED_FIELD_GROUPS = (1 << 1),
|
||||||
LED_FIELD_GROUPS = (1 << 2),
|
LED_FIELD_CTRLS = (1 << 2),
|
||||||
LED_FIELD_CTRLS = (1 << 3),
|
LED_FIELD_EXPLICIT = (1 << 3),
|
||||||
LED_FIELD_EXPLICIT = (1 << 4),
|
LED_FIELD_DRIVES_KBD = (1 << 4),
|
||||||
LED_FIELD_DRIVES_KBD = (1 << 5),
|
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct _LEDInfo {
|
typedef struct _LEDInfo {
|
||||||
|
@ -551,11 +550,6 @@ AddIndicatorMap(CompatInfo *info, LEDInfo *new)
|
||||||
}
|
}
|
||||||
|
|
||||||
collide = 0;
|
collide = 0;
|
||||||
if (UseNewLEDField(LED_FIELD_INDEX, old, new, verbosity,
|
|
||||||
&collide)) {
|
|
||||||
old->indicator = new->indicator;
|
|
||||||
old->defined |= LED_FIELD_INDEX;
|
|
||||||
}
|
|
||||||
if (UseNewLEDField(LED_FIELD_MODS, old, new, verbosity,
|
if (UseNewLEDField(LED_FIELD_MODS, old, new, verbosity,
|
||||||
&collide)) {
|
&collide)) {
|
||||||
old->which_mods = new->which_mods;
|
old->which_mods = new->which_mods;
|
||||||
|
@ -921,26 +915,10 @@ SetIndicatorMapField(CompatInfo *info, LEDInfo *led,
|
||||||
led->defined |= LED_FIELD_DRIVES_KBD;
|
led->defined |= LED_FIELD_DRIVES_KBD;
|
||||||
}
|
}
|
||||||
else if (istreq(field, "index")) {
|
else if (istreq(field, "index")) {
|
||||||
int ndx;
|
/* Users should see this, it might cause unexpected behavior. */
|
||||||
|
|
||||||
if (arrayNdx)
|
|
||||||
return ReportIndicatorNotArray(info, led, field);
|
|
||||||
|
|
||||||
if (!ExprResolveInteger(keymap->ctx, value, &ndx))
|
|
||||||
return ReportIndicatorBadType(info, led, field,
|
|
||||||
"indicator index");
|
|
||||||
|
|
||||||
if (ndx < 1 || ndx > XkbNumIndicators) {
|
|
||||||
log_err(info->keymap->ctx,
|
log_err(info->keymap->ctx,
|
||||||
"Illegal indicator index %d (range 1..%d); "
|
"The \"index\" field in indicator statements is unsupported; "
|
||||||
"Index definition for %s indicator ignored\n",
|
"Ignored\n");
|
||||||
ndx, XkbNumIndicators,
|
|
||||||
xkb_atom_text(keymap->ctx, led->name));
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
led->indicator = (xkb_led_index_t) ndx;
|
|
||||||
led->defined |= LED_FIELD_INDEX;
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
log_err(info->keymap->ctx,
|
log_err(info->keymap->ctx,
|
||||||
|
|
Loading…
Reference in New Issue