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>
This commit is contained in:
Heinrich Schuchardt 2019-06-16 21:41:13 +02:00
parent db311f0675
commit 3b2b2de8ee

View 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':
pressed_key.scan_code = 5; /* Home */
case 'H': /* Home */
pressed_key.scan_code = 5;
break;
case '~': /* Home */
pressed_key.scan_code = 5;
break;
}
break;