* grub-core/term/efi/console.c (grub_console_getkey): Accept VT100-style

codes.

	Also-By: Vladimir Serbinenko <phcoder@gmail.com>
This commit is contained in:
Pawel Wojtalczyk 2013-09-18 18:58:09 +02:00 committed by Vladimir 'phcoder' Serbinenko
parent 607319c9ab
commit 436ad5c3f4
2 changed files with 17 additions and 1 deletions

View file

@ -3,6 +3,12 @@
* docs/grub.texi (Networking commands): Add documentation for * docs/grub.texi (Networking commands): Add documentation for
network related commands. network related commands.
2013-09-18 Pawel Wojtalczyk <eyak@wp.pl>
2013-09-18 Vladimir Serbinenko <phcoder@gmail.com>
* grub-core/term/efi/console.c (grub_console_getkey): Accept VT100-style
codes.
2013-09-18 Colin Watson <cjwatson@ubuntu.com> 2013-09-18 Colin Watson <cjwatson@ubuntu.com>
* grub-core/disk/efi/efidisk.c (grub_efidisk_get_device_name_iter): * grub-core/disk/efi/efidisk.c (grub_efidisk_get_device_name_iter):

View file

@ -125,7 +125,17 @@ grub_console_getkey (struct grub_term_input *term __attribute__ ((unused)))
return GRUB_TERM_NO_KEY; return GRUB_TERM_NO_KEY;
if (key.scan_code == 0) if (key.scan_code == 0)
return key.unicode_char; {
/* Some firmware implementations use VT100-style codes against the spec.
This is especially likely if driven by serial.
*/
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
return key.unicode_char;
}
else if (key.scan_code < ARRAY_SIZE (efi_codes)) else if (key.scan_code < ARRAY_SIZE (efi_codes))
return efi_codes[key.scan_code]; return efi_codes[key.scan_code];