The bootmenu_conv_key() function is shared with expo subsystem for key
input. Adding alphanumeric-to-BKEY_SHORTCUT conversion there causes expo
to swallow typed characters instead of inserting them as text, since
BKEY_SHORTCUT falls in the range that expo treats as a command key
rather than passing through.
Move the shortcut-key detection into bootmenu_loop() where it is
only used in the bootmenu context.
Fixes: 8c986521c3c9 ("cmd: bootmenu: permit to select bootmenu entry with a shortcut")
Signed-off-by: Simon Glass <simon.glass@canonical.com>
Reviewed-by: Tom Rini <trini@konsulko.com>
case ' ':
key = BKEY_SPACE;
break;
- case 'A' ... 'Z':
- case 'a' ... 'z':
- case '0' ... '9':
- key = BKEY_SHORTCUT;
- break;
default:
key = BKEY_NONE;
break;
key = bootmenu_conv_key(c);
- if (key == BKEY_SHORTCUT)
+ if (key == BKEY_NONE && isalnum(c)) {
+ key = BKEY_SHORTCUT;
cch->shortcut_key = bootmenu_conv_shortcut_key(menu, c);
+ }
return key;
}