1
0
mirror of https://xff.cz/git/u-boot/ synced 2025-09-01 16:52:14 +02:00

efi_loader: correct CTRL-A - CTRL-Z console input

In the extended text input protocol CTRL-A - CTRL-Z have to be signaled as
Unicode characters a-z or A-Z depending on the shift state and not as 0x01
to 0x1a.

Update Python unit test.

This patch is required for using the EFI shell `edit` command.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
Heinrich Schuchardt
2019-04-06 20:59:24 +02:00
parent fbe4c7df00
commit bfc2dd5381
2 changed files with 18 additions and 1 deletions

View File

@@ -797,9 +797,26 @@ static efi_status_t EFIAPI efi_cin_read_key_stroke_ex(
ret = EFI_NOT_READY;
goto out;
}
/*
* CTRL+A - CTRL+Z have to be signaled as a - z.
* SHIFT+CTRL+A - SHIFT+CTRL+Z have to be signaled as A - Z.
*/
switch (next_key.key.unicode_char) {
case 0x01 ... 0x07:
case 0x0b ... 0x0c:
case 0x0e ... 0x1a:
if (!(next_key.key_state.key_toggle_state &
EFI_CAPS_LOCK_ACTIVE) ^
!(next_key.key_state.key_shift_state &
(EFI_LEFT_SHIFT_PRESSED | EFI_RIGHT_SHIFT_PRESSED)))
next_key.key.unicode_char += 0x40;
else
next_key.key.unicode_char += 0x60;
}
*key_data = next_key;
key_available = false;
efi_con_in.wait_for_key->is_signaled = false;
out:
return EFI_EXIT(ret);
}