]> xenbits.xensource.com Git - people/aperard/ovmf.git/commitdiff
MdeModulePkg/TerminalDxe: Add VTUTF8 to Putty function key map
authorPhil Noh <Phil.Noh@amd.com>
Fri, 13 Sep 2024 20:43:57 +0000 (15:43 -0500)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Wed, 18 Sep 2024 03:42:47 +0000 (03:42 +0000)
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4848

This patch is to support VTUTF8 type for Putty function key map.
In Putty, it is required for translating a stream of Unicode characters
for function keys on UTF8 correctly.

Signed-off-by: Phil Noh <Phil.Noh@amd.com>
MdeModulePkg/Universal/Console/TerminalDxe/Terminal.h
MdeModulePkg/Universal/Console/TerminalDxe/TerminalConIn.c

index 7581cda18bababb5895d6306fd9592b4a33fe9e8..61fbd808aeb520ece6133b3c04e116646c2c3826 100644 (file)
@@ -1216,8 +1216,8 @@ AnsiRawDataToUnicode (
 Putty function key map:\r
   +=========+======+===========+=============+=============+=============+=========+\r
   |         | EFI  |           |             |             |             |         |\r
-  |         | Scan |           |             |  Normal     |             |         |\r
-  |   KEY   | Code |  VT100+   | Xterm R6    |  VT400      | Linux       | SCO     |\r
+  |         | Scan |  VT100+   |             |  Normal     |             |         |\r
+  |   KEY   | Code |  VTUTF8   | Xterm R6    |  VT400      | Linux       | SCO     |\r
   +=========+======+===========+=============+=============+=============+=========+\r
   | F1      | 0x0B | ESC O P   | ESC O P     | ESC [ 1 1 ~ | ESC [ [ A   | ESC [ M |\r
   | F2      | 0x0C | ESC O Q   | ESC O Q     | ESC [ 1 2 ~ | ESC [ [ B   | ESC [ N |\r
index fa1038ed43c0b62037f9f37e2b7700b20ad049cc..dd313474027cc900729de8cd3c9468d3c9a53524 100644 (file)
@@ -1317,8 +1317,8 @@ UnicodeToEfiKeyFlushState (
 Putty function key map:\r
   +=========+======+===========+=============+=============+=============+=========+\r
   |         | EFI  |           |             |             |             |         |\r
-  |         | Scan |           |             |  Normal     |             |         |\r
-  |   KEY   | Code |  VT100+   | Xterm R6    |  VT400      | Linux       | SCO     |\r
+  |         | Scan |  VT100+   |             |  Normal     |             |         |\r
+  |   KEY   | Code |  VTUTF8   | Xterm R6    |  VT400      | Linux       | SCO     |\r
   +=========+======+===========+=============+=============+=============+=========+\r
   | F1      | 0x0B | ESC O P   | ESC O P     | ESC [ 1 1 ~ | ESC [ [ A   | ESC [ M |\r
   | F2      | 0x0C | ESC O Q   | ESC O Q     | ESC [ 1 2 ~ | ESC [ [ B   | ESC [ N |\r
@@ -1395,7 +1395,8 @@ UnicodeToEfiKey (
         if ((UnicodeChar == 'O') && ((TerminalDevice->TerminalType == TerminalTypeVt100) ||\r
                                      (TerminalDevice->TerminalType == TerminalTypeTtyTerm) ||\r
                                      (TerminalDevice->TerminalType == TerminalTypeXtermR6) ||\r
-                                     (TerminalDevice->TerminalType == TerminalTypeVt100Plus)))\r
+                                     (TerminalDevice->TerminalType == TerminalTypeVt100Plus) ||\r
+                                     (TerminalDevice->TerminalType == TerminalTypeVtUtf8)))\r
         {\r
           TerminalDevice->InputState |= INPUT_STATE_O;\r
           TerminalDevice->ResetState  = RESET_STATE_DEFAULT;\r
@@ -1569,7 +1570,9 @@ UnicodeToEfiKey (
               Key.ScanCode = SCAN_END;\r
               break;\r
           }\r
-        } else if (TerminalDevice->TerminalType == TerminalTypeVt100Plus) {\r
+        } else if ((TerminalDevice->TerminalType == TerminalTypeVt100Plus) ||\r
+                   (TerminalDevice->TerminalType == TerminalTypeVtUtf8))\r
+        {\r
           switch (UnicodeChar) {\r
             case 'P':\r
               Key.ScanCode = SCAN_F1;\r