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:
parent
fbe4c7df00
commit
bfc2dd5381
@ -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);
|
||||
}
|
||||
|
@ -141,7 +141,7 @@ def test_efi_selftest_text_input_ex(u_boot_console):
|
||||
u_boot_console.run_command(cmd=chr(4), wait_for_echo=False,
|
||||
send_nl=False, wait_for_prompt=False)
|
||||
m = u_boot_console.p.expect(
|
||||
['Unicode char 4 \(unknown\), scan code 0 \(CTRL\+Null\)'])
|
||||
['Unicode char 100 \\(\'d\'\\), scan code 0 \\(CTRL\\+Null\\)'])
|
||||
if m != 0:
|
||||
raise Exception('EOT failed in \'text input\' test')
|
||||
u_boot_console.drain_console()
|
||||
|
Loading…
Reference in New Issue
Block a user