All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Glass <sjg@chromium.org>
To: U-Boot Mailing List <u-boot@lists.denx.de>
Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>,
	Christian Melki <christian.melki@t2data.com>,
	Bin Meng <bmeng.cn@gmail.com>, Tom Rini <trini@konsulko.com>,
	Heinrich Schuchardt <xypron.glpk@gmx.de>,
	Simon Glass <sjg@chromium.org>, Alexander Graf <agraf@csgraf.de>
Subject: [PATCH v3 18/35] efi: serial: Support arrow keys
Date: Mon, 25 Oct 2021 21:30:41 -0600	[thread overview]
Message-ID: <20211026033058.430010-7-sjg@chromium.org> (raw)
In-Reply-To: <20211026033058.430010-1-sjg@chromium.org>

At present only the backspace key is supported in U-Boot, when running as
an EFI app. Add support for arrows, home and end as well, to make the CLI
more friendly.

Signed-off-by: Simon Glass <sjg@chromium.org>
---

(no changes since v1)

 drivers/serial/serial_efi.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/serial/serial_efi.c b/drivers/serial/serial_efi.c
index 33ddbd6080c..0067576389d 100644
--- a/drivers/serial/serial_efi.c
+++ b/drivers/serial/serial_efi.c
@@ -24,6 +24,9 @@ struct serial_efi_priv {
 	bool have_key;
 };
 
+/* Convert a lower-case character to its ctrl-char equivalent */
+#define CTL_CH(c)		((c) - 'a' + 1)
+
 int serial_efi_setbrg(struct udevice *dev, int baudrate)
 {
 	return 0;
@@ -49,6 +52,7 @@ static int serial_efi_get_key(struct serial_efi_priv *priv)
 static int serial_efi_getc(struct udevice *dev)
 {
 	struct serial_efi_priv *priv = dev_get_priv(dev);
+	char conv_scan[10] = {0, 'p', 'n', 'f', 'b', 'a', 'e', 0, 8};
 	int ret, ch;
 
 	ret = serial_efi_get_key(priv);
@@ -63,8 +67,11 @@ static int serial_efi_getc(struct udevice *dev)
 	 * key scan code of 8. Handle this so that backspace works correctly
 	 * in the U-Boot command line.
 	 */
-	if (!ch && priv->key.scan_code == 8)
-		ch = 8;
+	if (!ch && priv->key.scan_code < sizeof(conv_scan)) {
+		ch = conv_scan[priv->key.scan_code];
+		if (ch >= 'a')
+			ch -= 'a' - 1;
+	}
 	debug(" [%x %x %x] ", ch, priv->key.unicode_char, priv->key.scan_code);
 
 	return ch;
-- 
2.33.0.1079.g6e70778dc9-goog


  parent reply	other threads:[~2021-10-26  3:35 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-26  3:30 [PATCH v3 00/35] efi: Improvements to U-Boot running on top of UEFI Simon Glass
2021-10-26  3:30 ` [PATCH v3 01/35] efi: Add a script for building and testing U-Boot on UEFI Simon Glass
2021-10-28  5:33   ` Heinrich Schuchardt
2021-10-28 14:19     ` Simon Glass
2021-10-28 15:27       ` Heinrich Schuchardt
2021-10-28 15:38         ` Simon Glass
2021-10-26  3:30 ` [PATCH v3 02/35] efi: Enable DM_ETH for the app Simon Glass
2021-10-28  5:40   ` Heinrich Schuchardt
2021-11-04  2:12     ` Simon Glass
2021-10-26  3:30 ` [PATCH v3 03/35] efi: Drop the OF_EMBED warning for EFI Simon Glass
2021-10-28  5:43   ` Heinrich Schuchardt
2021-10-26  3:30 ` [PATCH v3 04/35] x86: Create a 32/64-bit selection for the app Simon Glass
2021-10-26  3:30 ` [PATCH v3 05/35] efi: Create a 64-bit app Simon Glass
2021-10-28  5:53   ` Heinrich Schuchardt
2021-10-28 14:19     ` Simon Glass
2021-10-26  3:30 ` [PATCH v3 06/35] x86: Don't duplicate global_ptr in 64-bit EFI app Simon Glass
2021-10-26  3:30 ` [PATCH v3 07/35] efi: Add a way to obtain boot services in the app Simon Glass
2021-10-26  3:30 ` [PATCH v3 08/35] efi: Add video support to " Simon Glass
2021-10-26  3:30 ` [PATCH v3 09/35] efi: Add EFI uclass for media Simon Glass
2021-10-26  3:30 ` [PATCH v3 10/35] efi: Add a media/block driver for EFI block devices Simon Glass
2021-10-26  3:30 ` [PATCH v3 11/35] efi: Locate all block devices in the app Simon Glass
2021-10-26  3:30 ` [PATCH v3 12/35] patman: Use a ValueError exception if tools.Run() fails Simon Glass
2021-10-26  3:30 ` [PATCH v3 13/35] binman: Report an error if test files fail to compile Simon Glass
2021-10-26  3:30 ` [PATCH v3 14/35] binman: Support reading the offset of an ELF-file symbol Simon Glass
2021-10-26  3:30 ` [PATCH v3 15/35] binman: Allow timeout to occur in the image or its section Simon Glass
2021-10-26  3:30 ` [PATCH v3 16/35] binman: Tidy up comments on _DoTestFile() Simon Glass
2021-10-26  3:30 ` [PATCH v3 17/35] binman: Support updating the dtb in an ELF file Simon Glass
2021-10-26  3:30 ` Simon Glass [this message]
2021-10-26  3:30 ` [PATCH v3 19/35] bloblist: Support allocating the bloblist Simon Glass
2021-10-26  3:30 ` [PATCH v3 20/35] x86: Allow booting a kernel from the EFI app Simon Glass
2021-10-26  3:30 ` [PATCH v3 21/35] x86: Don't process the kernel command line unless enabled Simon Glass
2021-10-26  3:30 ` [PATCH v3 22/35] x86: efi: Add room for the binman definition in the dtb Simon Glass
2021-10-26  3:30 ` [PATCH v3 23/35] efi: Drop device_path from struct efi_priv Simon Glass
2021-10-26  3:30 ` [PATCH v3 24/35] efi: Add comments to " Simon Glass
2021-10-26  3:30 ` [PATCH v3 25/35] efi: Fix ll_boot_init() operation with the app Simon Glass
2021-10-26  3:30 ` [PATCH v3 26/35] efi: Add a few comments to the stub Simon Glass
2021-10-26  3:30 ` [PATCH v3 27/35] efi: Share struct efi_priv between the app and stub code Simon Glass
2021-10-26  3:30 ` [PATCH v3 28/35] efi: Move exit_boot_services into a function Simon Glass
2021-10-26  3:30 ` [PATCH v3 29/35] efi: Check for failure when initing the app Simon Glass
2021-10-26  3:30 ` [PATCH v3 30/35] efi: Mention that efi_info_get() is only used in the stub Simon Glass
2021-10-26  3:30 ` [PATCH v3 31/35] efi: Show when allocated pages are used Simon Glass
2021-10-26  3:30 ` [PATCH v3 32/35] efi: Allow easy selection of serial-only operation Simon Glass
2021-10-26  3:30 ` [PATCH v3 33/35] efi: Update efi_get_next_mem_desc() to avoid needing a map Simon Glass
2021-10-26  3:30 ` [PATCH v3 34/35] efi: Support the efi command in the app Simon Glass
2021-10-26  3:30 ` [PATCH v3 35/35] efi: Show the system-table revision Simon Glass

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20211026033058.430010-7-sjg@chromium.org \
    --to=sjg@chromium.org \
    --cc=agraf@csgraf.de \
    --cc=bmeng.cn@gmail.com \
    --cc=christian.melki@t2data.com \
    --cc=ilias.apalodimas@linaro.org \
    --cc=trini@konsulko.com \
    --cc=u-boot@lists.denx.de \
    --cc=xypron.glpk@gmx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.