efi_loader: alternative scan codes for F5, END, HOME

Depending on the key board alternative scan codes are used for F5, END, and
HOME.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
diff --git a/lib/efi_loader/efi_console.c b/lib/efi_loader/efi_console.c
index 706e6ad..a04cbf6 100644
--- a/lib/efi_loader/efi_console.c
+++ b/lib/efi_loader/efi_console.c
@@ -563,10 +563,13 @@
 		case cESC: /* ESC */
 			pressed_key.scan_code = 23;
 			break;
-		case 'O': /* F1 - F4 */
+		case 'O': /* F1 - F4, End */
 			ch = getc();
 			/* consider modifiers */
-			if (ch < 'P') {
+			if (ch == 'F') { /* End */
+				pressed_key.scan_code = 6;
+				break;
+			} else if (ch < 'P') {
 				set_shift_mask(ch - '0', &key->key_state);
 				ch = getc();
 			}
@@ -590,17 +593,20 @@
 				case '1'...'5': /* F1 - F5 */
 					pressed_key.scan_code = ch - '1' + 11;
 					break;
-				case '7'...'9': /* F6 - F8 */
-					pressed_key.scan_code = ch - '7' + 16;
+				case '6'...'9': /* F5 - F8 */
+					pressed_key.scan_code = ch - '6' + 15;
 					break;
 				case 'A'...'D': /* up, down right, left */
 					pressed_key.scan_code = ch - 'A' + 1;
 					break;
-				case 'F':
-					pressed_key.scan_code = 6; /* End */
+				case 'F': /* End */
+					pressed_key.scan_code = 6;
 					break;
-				case 'H':
-					pressed_key.scan_code = 5; /* Home */
+				case 'H': /* Home */
+					pressed_key.scan_code = 5;
+					break;
+				case '~': /* Home */
+					pressed_key.scan_code = 5;
 					break;
 				}
 				break;