diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h b/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h index 7581cda18bab..61fbd808aeb5 100644 --- a/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h +++ b/MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h @@ -1216,8 +1216,8 @@ AnsiRawDataToUnicode ( Putty function key map: +=========+======+===========+=============+=============+=============+=========+ | | EFI | | | | | | - | | Scan | | | Normal | | | - | KEY | Code | VT100+ | Xterm R6 | VT400 | Linux | SCO | + | | Scan | VT100+ | | Normal | | | + | KEY | Code | VTUTF8 | Xterm R6 | VT400 | Linux | SCO | +=========+======+===========+=============+=============+=============+=========+ | F1 | 0x0B | ESC O P | ESC O P | ESC [ 1 1 ~ | ESC [ [ A | ESC [ M | | F2 | 0x0C | ESC O Q | ESC O Q | ESC [ 1 2 ~ | ESC [ [ B | ESC [ N | diff --git a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c index fa1038ed43c0..dd313474027c 100644 --- a/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c +++ b/MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c @@ -1317,8 +1317,8 @@ UnicodeToEfiKeyFlushState ( Putty function key map: +=========+======+===========+=============+=============+=============+=========+ | | EFI | | | | | | - | | Scan | | | Normal | | | - | KEY | Code | VT100+ | Xterm R6 | VT400 | Linux | SCO | + | | Scan | VT100+ | | Normal | | | + | KEY | Code | VTUTF8 | Xterm R6 | VT400 | Linux | SCO | +=========+======+===========+=============+=============+=============+=========+ | F1 | 0x0B | ESC O P | ESC O P | ESC [ 1 1 ~ | ESC [ [ A | ESC [ M | | F2 | 0x0C | ESC O Q | ESC O Q | ESC [ 1 2 ~ | ESC [ [ B | ESC [ N | @@ -1395,7 +1395,8 @@ UnicodeToEfiKey ( if ((UnicodeChar == 'O') && ((TerminalDevice->TerminalType == TerminalTypeVt100) || (TerminalDevice->TerminalType == TerminalTypeTtyTerm) || (TerminalDevice->TerminalType == TerminalTypeXtermR6) || - (TerminalDevice->TerminalType == TerminalTypeVt100Plus))) + (TerminalDevice->TerminalType == TerminalTypeVt100Plus) || + (TerminalDevice->TerminalType == TerminalTypeVtUtf8))) { TerminalDevice->InputState |= INPUT_STATE_O; TerminalDevice->ResetState = RESET_STATE_DEFAULT; @@ -1569,7 +1570,9 @@ UnicodeToEfiKey ( Key.ScanCode = SCAN_END; break; } - } else if (TerminalDevice->TerminalType == TerminalTypeVt100Plus) { + } else if ((TerminalDevice->TerminalType == TerminalTypeVt100Plus) || + (TerminalDevice->TerminalType == TerminalTypeVtUtf8)) + { switch (UnicodeChar) { case 'P': Key.ScanCode = SCAN_F1;