@@ -411,14 +411,30 @@ static efi_status_t EFIAPI efi_cin_read_key_stroke(
pressed_key.scan_code = getc() - '0' + 11;
getc();
break;
- case '2': /* F9 - F12 */
- pressed_key.scan_code = getc() - '0' + 19;
- getc();
+ case '2':
+ ch = getc();
+ switch (ch) {
+ case '~': /* INS */
+ pressed_key.scan_code = 7;
+ break;
+ case '1'...'4': /* F9 - F12 */
+ pressed_key.scan_code = ch - '0' + 19;
+ getc();
+ break;
+ }
break;
case '3': /* DEL */
pressed_key.scan_code = 8;
getc();
break;
+ case '5': /* PG UP */
+ pressed_key.scan_code = 9;
+ getc();
+ break;
+ case '6': /* PG DOWN */
+ pressed_key.scan_code = 10;
+ getc();
+ break;
}
break;
}
@@ -426,7 +442,8 @@ static efi_status_t EFIAPI efi_cin_read_key_stroke(
/* Backspace */
ch = 0x08;
}
- pressed_key.unicode_char = ch;
+ if (!pressed_key.scan_code)
+ pressed_key.unicode_char = ch;
*key = pressed_key;
return EFI_EXIT(EFI_SUCCESS);
Don't set unicode_char if scan_code is set. Without this correction navigation in the iPXE menu is not possible. Add support for page up, page down, and insert. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de> --- lib/efi_loader/efi_console.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-)