mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-28 15:41:40 +00:00
efi_loader: escape key handling
Up to now the escape key was not correctly detected in UEFI applications. We had to hit it twice for a single escape to be recognized. Use a 10 ms delay to detect if we are dealing with the escape key or an escape sequence. Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
parent
5f9b537531
commit
9abb01af74
1 changed files with 12 additions and 0 deletions
|
@ -14,6 +14,7 @@
|
||||||
#include <env.h>
|
#include <env.h>
|
||||||
#include <stdio_dev.h>
|
#include <stdio_dev.h>
|
||||||
#include <video_console.h>
|
#include <video_console.h>
|
||||||
|
#include <linux/delay.h>
|
||||||
|
|
||||||
#define EFI_COUT_MODE_2 2
|
#define EFI_COUT_MODE_2 2
|
||||||
#define EFI_MAX_COUT_MODE 3
|
#define EFI_MAX_COUT_MODE 3
|
||||||
|
@ -688,6 +689,17 @@ static efi_status_t efi_cin_read_key(struct efi_key_data *key)
|
||||||
|
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
case 0x1b:
|
case 0x1b:
|
||||||
|
/*
|
||||||
|
* If a second key is received within 10 ms, assume that we are
|
||||||
|
* dealing with an escape sequence. Otherwise consider this the
|
||||||
|
* escape key being hit. 10 ms is long enough to work fine at
|
||||||
|
* 1200 baud and above.
|
||||||
|
*/
|
||||||
|
udelay(10000);
|
||||||
|
if (!tstc()) {
|
||||||
|
pressed_key.scan_code = 23;
|
||||||
|
break;
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
* Xterm Control Sequences
|
* Xterm Control Sequences
|
||||||
* https://www.xfree86.org/4.8.0/ctlseqs.html
|
* https://www.xfree86.org/4.8.0/ctlseqs.html
|
||||||
|
|
Loading…
Reference in a new issue