mirror of
https://xff.cz/git/u-boot/
synced 2025-09-07 19:52:15 +02: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:
@@ -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
|
||||||
|
Reference in New Issue
Block a user