From: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Date: Thu, 1 Sep 2022 22:49:12 +0000 (+0200)
Subject: efi_loader: support CTRL+\ - CTRL+_
X-Git-Tag: v2025.01-rc5-pxa1908~1297^2~4
X-Git-Url: http://git.dujemihanovic.xyz/img/login.html?a=commitdiff_plain;h=e053a144ca85ffbc8649bc3e170c408b42f92536;p=u-boot.git

efi_loader: support CTRL+\ - CTRL+_

In the extended text input protocol support input of control letters
0x1c - 0x1f.

Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
---

diff --git a/lib/efi_loader/efi_console.c b/lib/efi_loader/efi_console.c
index 1fcaabe1c4..ee9dc6bbd8 100644
--- a/lib/efi_loader/efi_console.c
+++ b/lib/efi_loader/efi_console.c
@@ -994,6 +994,7 @@ static efi_status_t EFIAPI efi_cin_read_key_stroke_ex(
 	/*
 	 * CTRL+A - CTRL+Z have to be signaled as a - z.
 	 * SHIFT+CTRL+A - SHIFT+CTRL+Z have to be signaled as A - Z.
+	 * CTRL+\ - CTRL+_ have to be signaled as \ - _.
 	 */
 	switch (next_key.key.unicode_char) {
 	case 0x01 ... 0x07:
@@ -1006,6 +1007,9 @@ static efi_status_t EFIAPI efi_cin_read_key_stroke_ex(
 			next_key.key.unicode_char += 0x40;
 		else
 			next_key.key.unicode_char += 0x60;
+		break;
+	case 0x1c ... 0x1f:
+			next_key.key.unicode_char += 0x40;
 	}
 	*key_data = next_key;
 	key_available = false;