From: Pawel Wojtalczyk <eyak@wp.pl>
To: grub-devel@gnu.org
Subject: Re: ctrl-x / ctrl-c may not work under GRUB2 with EFI
Date: Wed, 07 Aug 2013 05:17:36 +0200 [thread overview]
Message-ID: <5201BC50.90403@wp.pl> (raw)
In-Reply-To: <20130806203226.4105e402@opensuse.site>
Hello,
F10 works only for USB keyboard directly attached to the target, but not
on the redirected console (enabled in EFI) to the serial which I am
using for remote access the board.
Regards
Pawel
On 06.08.2013 18:32, Andrey Borzenkov wrote:
> В Tue, 06 Aug 2013 10:35:30 +0200
> Pawel Wojtalczyk <eyak@wp.pl> пишет:
>
>> 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.
>>
> Does F10 work?
>
>> 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
>
> _______________________________________________
> Grub-devel mailing list
> Grub-devel@gnu.org
> https://lists.gnu.org/mailman/listinfo/grub-devel
next prev parent reply other threads:[~2013-08-07 3:17 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-06 8:35 ctrl-x / ctrl-c may not work under GRUB2 with EFI Pawel Wojtalczyk
2013-08-06 16:32 ` Andrey Borzenkov
2013-08-07 3:17 ` Pawel Wojtalczyk [this message]
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=5201BC50.90403@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.