From: Pawel Wojtalczyk <eyak@wp.pl>
To: grub-devel@gnu.org
Subject: ctrl-x / ctrl-c may not work under GRUB2 with EFI
Date: Tue, 06 Aug 2013 10:35:30 +0200 [thread overview]
Message-ID: <5200B552.4020705@wp.pl> (raw)
[-- Attachment #1: Type: text/plain, Size: 2055 bytes --]
Hello,
I run GRUB2 as 64-bit EFI application and I use gfxterm and serial as
output.
I would like to edit commands before boot by type 'e' command. Then I
would like to boot by press ctrl-x, but unfortunately the boot does not
appears.
The reason is that in AMI and Phoenix BIOSes when ctrl key is pressed
then EFI_SIMPLE_TEXT_INPUT_PROTOCOL protocol returns VT100 style
encoding of pressed unicode character (
http://www.vt100.net/docs/vt100-ug/table3-5.html).
I tried to use EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL to get the pressed key
modifier (ctrl, alt, etc), but in case when serial console redirection
enabled in Phoenix BIOS, none characters are received via serial with
EFI_SIMPLE_TEXT_INPUT_EX_PROTOCOL(with AMI BIOS characters are received
in VT100 encoding style).
So maybe we can do another way. Maybe we can explicitly set key modifier
(as in grub_terminfo_getkey() with
http://wiki.phoenix.com/wiki/index.php/Unicode_Control_Characters
restrictions) as following:
--- grub.orig/grub-core/term/efi/console.c 2013-07-31
07:50:52.000000000 +0200
+++ grub/grub-core/term/efi/console.c 2013-08-06 10:28:26.117499386 +0200
@@ -125,7 +125,12 @@
return GRUB_TERM_NO_KEY;
if (key.scan_code == 0)
- return key.unicode_char;
+#if defined (__i386__) || defined (__x86_64__)
+ if (key.unicode_char < 0x20 && key.unicode_char != 0 &&
key.unicode_char != '\t' && key.unicode_char != '\b' && key.unicode_char
!= '\n' && key.unicode_char != '\r')
+ return GRUB_TERM_CTRL | (key.unicode_char - 1 + 'a');
+ else
+#endif /* defined (__i386__) || defined (__x86_64__) */
+ return key.unicode_char;
else if (key.scan_code < ARRAY_SIZE (efi_codes))
return efi_codes[key.scan_code];
In some remote systems EFI serial redirection must be enabled and thus
we cannot use serial (as termianl_input) module in GRUB2 and in such
case it would be good to allow add support for ctrl-x/ctrl-c under GRUB2
via serial console redirection enabled in EFI and attached USB keyboard.
Regrads
Pawel Wojtalczyk
[-- Attachment #2: Type: text/html, Size: 2956 bytes --]
next reply other threads:[~2013-08-06 8:35 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-06 8:35 Pawel Wojtalczyk [this message]
2013-08-06 16:32 ` ctrl-x / ctrl-c may not work under GRUB2 with EFI Andrey Borzenkov
2013-08-07 3:17 ` Pawel Wojtalczyk
2013-08-12 10:02 ` Vladimir 'φ-coder/phcoder' Serbinenko
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=5200B552.4020705@wp.pl \
--to=eyak@wp.pl \
--cc=grub-devel@gnu.org \
/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.