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

Signed-off-by: Heinrich Schuchardt <xypron.g...@gmx.de>
---
 lib/efi_loader/efi_console.c | 22 ++++++++++++++--------
 1 file changed, 14 insertions(+), 8 deletions(-)

diff --git a/lib/efi_loader/efi_console.c b/lib/efi_loader/efi_console.c
index 2fc25e118f..26c1a887f5 100644
--- a/lib/efi_loader/efi_console.c
+++ b/lib/efi_loader/efi_console.c
@@ -564,10 +564,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();
                        }
@@ -591,17 +594,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;
--
2.20.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to