[PATCH] menu: Move shortcut-key handling to bootmenu_loop()

Simon Glass sjg at chromium.org
Fri Feb 13 14:39:09 CET 2026


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 at canonical.com>
---

 common/menu.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/common/menu.c b/common/menu.c
index ae5afa14766..02df3b8f133 100644
--- a/common/menu.c
+++ b/common/menu.c
@@ -556,11 +556,6 @@ enum bootmenu_key bootmenu_conv_key(int ichar)
 	case ' ':
 		key = BKEY_SPACE;
 		break;
-	case 'A' ... 'Z':
-	case 'a' ... 'z':
-	case '0' ... '9':
-		key = BKEY_SHORTCUT;
-		break;
 	default:
 		key = BKEY_NONE;
 		break;
@@ -591,8 +586,10 @@ enum bootmenu_key bootmenu_loop(struct bootmenu_data *menu,
 
 	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;
 }
-- 
2.43.0

base-commit: 9e6b66409a3235ae73f1937929fe025911165bbb
branch: menu-fix-us


More information about the U-Boot mailing list