efi_loader: alternative scan codes for F5, END, HOME
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Sun, 16 Jun 2019 19:41:13 +0000 (21:41 +0200)
committerHeinrich Schuchardt <xypron.glpk@gmx.de>
Thu, 20 Jun 2019 22:26:18 +0000 (22:26 +0000)
Depending on the key board alternative scan codes are used for F5, END, and
HOME.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
lib/efi_loader/efi_console.c

index 706e6ad..a04cbf6 100644 (file)
@@ -563,10 +563,13 @@ static efi_status_t efi_cin_read_key(struct efi_key_data *key)
                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 @@ static efi_status_t efi_cin_read_key(struct efi_key_data *key)
                                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': /* Home */
+                                       pressed_key.scan_code = 5;
                                        break;
-                               case 'H':
-                                       pressed_key.scan_code = 5; /* Home */
+                               case '~': /* Home */
+                                       pressed_key.scan_code = 5;
                                        break;
                                }
                                break;