mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-28 16:14:04 +02:00
MdeModulePkg/TerminalDxe: Replace macro with enum for terminal types
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com> Cc: Star Zeng <star.zeng@intel.com> Reviewed-by: Feng Tian <feng.tian@intel.com>
This commit is contained in:
parent
0772737347
commit
8ce87fffbf
@ -2,7 +2,7 @@
|
|||||||
Produces Simple Text Input Protocol, Simple Text Input Extended Protocol and
|
Produces Simple Text Input Protocol, Simple Text Input Extended Protocol and
|
||||||
Simple Text Output Protocol upon Serial IO Protocol.
|
Simple Text Output Protocol upon Serial IO Protocol.
|
||||||
|
|
||||||
Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -255,7 +255,7 @@ BuildTerminalDevpath (
|
|||||||
)
|
)
|
||||||
{
|
{
|
||||||
EFI_DEVICE_PATH_PROTOCOL *TerminalDevicePath;
|
EFI_DEVICE_PATH_PROTOCOL *TerminalDevicePath;
|
||||||
UINT8 TerminalType;
|
TERMINAL_TYPE TerminalType;
|
||||||
VENDOR_DEVICE_PATH *Node;
|
VENDOR_DEVICE_PATH *Node;
|
||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
|
|
||||||
@ -270,23 +270,23 @@ BuildTerminalDevpath (
|
|||||||
|
|
||||||
} else if (CompareGuid (&Node->Guid, &gEfiPcAnsiGuid)) {
|
} else if (CompareGuid (&Node->Guid, &gEfiPcAnsiGuid)) {
|
||||||
|
|
||||||
TerminalType = PCANSITYPE;
|
TerminalType = TerminalTypePcAnsi;
|
||||||
|
|
||||||
} else if (CompareGuid (&Node->Guid, &gEfiVT100Guid)) {
|
} else if (CompareGuid (&Node->Guid, &gEfiVT100Guid)) {
|
||||||
|
|
||||||
TerminalType = VT100TYPE;
|
TerminalType = TerminalTypeVt100;
|
||||||
|
|
||||||
} else if (CompareGuid (&Node->Guid, &gEfiVT100PlusGuid)) {
|
} else if (CompareGuid (&Node->Guid, &gEfiVT100PlusGuid)) {
|
||||||
|
|
||||||
TerminalType = VT100PLUSTYPE;
|
TerminalType = TerminalTypeVt100Plus;
|
||||||
|
|
||||||
} else if (CompareGuid (&Node->Guid, &gEfiVTUTF8Guid)) {
|
} else if (CompareGuid (&Node->Guid, &gEfiVTUTF8Guid)) {
|
||||||
|
|
||||||
TerminalType = VTUTF8TYPE;
|
TerminalType = TerminalTypeVtUtf8;
|
||||||
|
|
||||||
} else if (CompareGuid (&Node->Guid, &gEfiTtyTermGuid)) {
|
} else if (CompareGuid (&Node->Guid, &gEfiTtyTermGuid)) {
|
||||||
|
|
||||||
TerminalType = TTYTERMTYPE;
|
TerminalType = TerminalTypeTtyTerm;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -549,7 +549,7 @@ TerminalDriverBindingStart (
|
|||||||
EFI_SERIAL_IO_MODE *Mode;
|
EFI_SERIAL_IO_MODE *Mode;
|
||||||
UINTN SerialInTimeOut;
|
UINTN SerialInTimeOut;
|
||||||
TERMINAL_DEV *TerminalDevice;
|
TERMINAL_DEV *TerminalDevice;
|
||||||
UINT8 TerminalType;
|
TERMINAL_TYPE TerminalType;
|
||||||
EFI_OPEN_PROTOCOL_INFORMATION_ENTRY *OpenInfoBuffer;
|
EFI_OPEN_PROTOCOL_INFORMATION_ENTRY *OpenInfoBuffer;
|
||||||
UINTN EntryCount;
|
UINTN EntryCount;
|
||||||
UINTN Index;
|
UINTN Index;
|
||||||
@ -713,9 +713,9 @@ TerminalDriverBindingStart (
|
|||||||
if (RemainingDevicePath == NULL) {
|
if (RemainingDevicePath == NULL) {
|
||||||
TerminalType = PcdGet8 (PcdDefaultTerminalType);
|
TerminalType = PcdGet8 (PcdDefaultTerminalType);
|
||||||
//
|
//
|
||||||
// Must be between PCANSITYPE (0) and TTYTERMTYPE (4)
|
// Must be between TerminalTypePcAnsi (0) and TerminalTypeTtyTerm (4)
|
||||||
//
|
//
|
||||||
ASSERT (TerminalType <= TTYTERMTYPE);
|
ASSERT (TerminalType <= TerminalTypeTtyTerm);
|
||||||
} else if (!IsDevicePathEnd (RemainingDevicePath)) {
|
} else if (!IsDevicePathEnd (RemainingDevicePath)) {
|
||||||
//
|
//
|
||||||
// If RemainingDevicePath isn't the End of Device Path Node,
|
// If RemainingDevicePath isn't the End of Device Path Node,
|
||||||
@ -723,15 +723,15 @@ TerminalDriverBindingStart (
|
|||||||
//
|
//
|
||||||
Node = (VENDOR_DEVICE_PATH *)RemainingDevicePath;
|
Node = (VENDOR_DEVICE_PATH *)RemainingDevicePath;
|
||||||
if (CompareGuid (&Node->Guid, &gEfiPcAnsiGuid)) {
|
if (CompareGuid (&Node->Guid, &gEfiPcAnsiGuid)) {
|
||||||
TerminalType = PCANSITYPE;
|
TerminalType = TerminalTypePcAnsi;
|
||||||
} else if (CompareGuid (&Node->Guid, &gEfiVT100Guid)) {
|
} else if (CompareGuid (&Node->Guid, &gEfiVT100Guid)) {
|
||||||
TerminalType = VT100TYPE;
|
TerminalType = TerminalTypeVt100;
|
||||||
} else if (CompareGuid (&Node->Guid, &gEfiVT100PlusGuid)) {
|
} else if (CompareGuid (&Node->Guid, &gEfiVT100PlusGuid)) {
|
||||||
TerminalType = VT100PLUSTYPE;
|
TerminalType = TerminalTypeVt100Plus;
|
||||||
} else if (CompareGuid (&Node->Guid, &gEfiVTUTF8Guid)) {
|
} else if (CompareGuid (&Node->Guid, &gEfiVTUTF8Guid)) {
|
||||||
TerminalType = VTUTF8TYPE;
|
TerminalType = TerminalTypeVtUtf8;
|
||||||
} else if (CompareGuid (&Node->Guid, &gEfiTtyTermGuid)) {
|
} else if (CompareGuid (&Node->Guid, &gEfiTtyTermGuid)) {
|
||||||
TerminalType = TTYTERMTYPE;
|
TerminalType = TerminalTypeTtyTerm;
|
||||||
} else {
|
} else {
|
||||||
goto Error;
|
goto Error;
|
||||||
}
|
}
|
||||||
@ -863,7 +863,7 @@ TerminalDriverBindingStart (
|
|||||||
//
|
//
|
||||||
TerminalDevice->ControllerNameTable = NULL;
|
TerminalDevice->ControllerNameTable = NULL;
|
||||||
switch (TerminalDevice->TerminalType) {
|
switch (TerminalDevice->TerminalType) {
|
||||||
case PCANSITYPE:
|
case TerminalTypePcAnsi:
|
||||||
AddUnicodeString2 (
|
AddUnicodeString2 (
|
||||||
"eng",
|
"eng",
|
||||||
gTerminalComponentName.SupportedLanguages,
|
gTerminalComponentName.SupportedLanguages,
|
||||||
@ -881,7 +881,7 @@ TerminalDriverBindingStart (
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VT100TYPE:
|
case TerminalTypeVt100:
|
||||||
AddUnicodeString2 (
|
AddUnicodeString2 (
|
||||||
"eng",
|
"eng",
|
||||||
gTerminalComponentName.SupportedLanguages,
|
gTerminalComponentName.SupportedLanguages,
|
||||||
@ -899,7 +899,7 @@ TerminalDriverBindingStart (
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VT100PLUSTYPE:
|
case TerminalTypeVt100Plus:
|
||||||
AddUnicodeString2 (
|
AddUnicodeString2 (
|
||||||
"eng",
|
"eng",
|
||||||
gTerminalComponentName.SupportedLanguages,
|
gTerminalComponentName.SupportedLanguages,
|
||||||
@ -917,7 +917,7 @@ TerminalDriverBindingStart (
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VTUTF8TYPE:
|
case TerminalTypeVtUtf8:
|
||||||
AddUnicodeString2 (
|
AddUnicodeString2 (
|
||||||
"eng",
|
"eng",
|
||||||
gTerminalComponentName.SupportedLanguages,
|
gTerminalComponentName.SupportedLanguages,
|
||||||
@ -935,7 +935,7 @@ TerminalDriverBindingStart (
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TTYTERMTYPE:
|
case TerminalTypeTtyTerm:
|
||||||
AddUnicodeString2 (
|
AddUnicodeString2 (
|
||||||
"eng",
|
"eng",
|
||||||
gTerminalComponentName.SupportedLanguages,
|
gTerminalComponentName.SupportedLanguages,
|
||||||
@ -1456,7 +1456,7 @@ TerminalUpdateConsoleDevVariable (
|
|||||||
EFI_STATUS Status;
|
EFI_STATUS Status;
|
||||||
UINTN NameSize;
|
UINTN NameSize;
|
||||||
UINTN VariableSize;
|
UINTN VariableSize;
|
||||||
UINT8 TerminalType;
|
TERMINAL_TYPE TerminalType;
|
||||||
EFI_DEVICE_PATH_PROTOCOL *Variable;
|
EFI_DEVICE_PATH_PROTOCOL *Variable;
|
||||||
EFI_DEVICE_PATH_PROTOCOL *NewVariable;
|
EFI_DEVICE_PATH_PROTOCOL *NewVariable;
|
||||||
EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;
|
EFI_DEVICE_PATH_PROTOCOL *TempDevicePath;
|
||||||
@ -1473,7 +1473,7 @@ TerminalUpdateConsoleDevVariable (
|
|||||||
//
|
//
|
||||||
// Append terminal device path onto the variable.
|
// Append terminal device path onto the variable.
|
||||||
//
|
//
|
||||||
for (TerminalType = PCANSITYPE; TerminalType <= TTYTERMTYPE; TerminalType++) {
|
for (TerminalType = TerminalTypePcAnsi; TerminalType <= TerminalTypeTtyTerm; TerminalType++) {
|
||||||
SetTerminalDevicePath (TerminalType, ParentDevicePath, &TempDevicePath);
|
SetTerminalDevicePath (TerminalType, ParentDevicePath, &TempDevicePath);
|
||||||
NewVariable = AppendDevicePathInstance (Variable, TempDevicePath);
|
NewVariable = AppendDevicePathInstance (Variable, TempDevicePath);
|
||||||
ASSERT (NewVariable != NULL);
|
ASSERT (NewVariable != NULL);
|
||||||
@ -1548,7 +1548,7 @@ TerminalRemoveConsoleDevVariable (
|
|||||||
BOOLEAN Match;
|
BOOLEAN Match;
|
||||||
UINTN VariableSize;
|
UINTN VariableSize;
|
||||||
UINTN InstanceSize;
|
UINTN InstanceSize;
|
||||||
UINT8 TerminalType;
|
TERMINAL_TYPE TerminalType;
|
||||||
EFI_DEVICE_PATH_PROTOCOL *Instance;
|
EFI_DEVICE_PATH_PROTOCOL *Instance;
|
||||||
EFI_DEVICE_PATH_PROTOCOL *Variable;
|
EFI_DEVICE_PATH_PROTOCOL *Variable;
|
||||||
EFI_DEVICE_PATH_PROTOCOL *OriginalVariable;
|
EFI_DEVICE_PATH_PROTOCOL *OriginalVariable;
|
||||||
@ -1586,7 +1586,7 @@ TerminalRemoveConsoleDevVariable (
|
|||||||
// Loop through all the terminal types that this driver supports
|
// Loop through all the terminal types that this driver supports
|
||||||
//
|
//
|
||||||
Match = FALSE;
|
Match = FALSE;
|
||||||
for (TerminalType = PCANSITYPE; TerminalType <= TTYTERMTYPE; TerminalType++) {
|
for (TerminalType = TerminalTypePcAnsi; TerminalType <= TerminalTypeTtyTerm; TerminalType++) {
|
||||||
|
|
||||||
SetTerminalDevicePath (TerminalType, ParentDevicePath, &TempDevicePath);
|
SetTerminalDevicePath (TerminalType, ParentDevicePath, &TempDevicePath);
|
||||||
|
|
||||||
@ -1658,7 +1658,7 @@ TerminalRemoveConsoleDevVariable (
|
|||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
SetTerminalDevicePath (
|
SetTerminalDevicePath (
|
||||||
IN UINT8 TerminalType,
|
IN TERMINAL_TYPE TerminalType,
|
||||||
IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,
|
IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,
|
||||||
OUT EFI_DEVICE_PATH_PROTOCOL **TerminalDevicePath
|
OUT EFI_DEVICE_PATH_PROTOCOL **TerminalDevicePath
|
||||||
)
|
)
|
||||||
@ -1674,23 +1674,23 @@ SetTerminalDevicePath (
|
|||||||
//
|
//
|
||||||
switch (TerminalType) {
|
switch (TerminalType) {
|
||||||
|
|
||||||
case PCANSITYPE:
|
case TerminalTypePcAnsi:
|
||||||
CopyGuid (&Node.Guid, &gEfiPcAnsiGuid);
|
CopyGuid (&Node.Guid, &gEfiPcAnsiGuid);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VT100TYPE:
|
case TerminalTypeVt100:
|
||||||
CopyGuid (&Node.Guid, &gEfiVT100Guid);
|
CopyGuid (&Node.Guid, &gEfiVT100Guid);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VT100PLUSTYPE:
|
case TerminalTypeVt100Plus:
|
||||||
CopyGuid (&Node.Guid, &gEfiVT100PlusGuid);
|
CopyGuid (&Node.Guid, &gEfiVT100PlusGuid);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VTUTF8TYPE:
|
case TerminalTypeVtUtf8:
|
||||||
CopyGuid (&Node.Guid, &gEfiVTUTF8Guid);
|
CopyGuid (&Node.Guid, &gEfiVTUTF8Guid);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case TTYTERMTYPE:
|
case TerminalTypeTtyTerm:
|
||||||
CopyGuid (&Node.Guid, &gEfiTtyTermGuid);
|
CopyGuid (&Node.Guid, &gEfiTtyTermGuid);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Header file for Terminal driver.
|
Header file for Terminal driver.
|
||||||
|
|
||||||
Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||||
Copyright (C) 2016 Silicon Graphics, Inc. All rights reserved.<BR>
|
Copyright (C) 2016 Silicon Graphics, Inc. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -81,10 +81,19 @@ typedef struct _TERMINAL_CONSOLE_IN_EX_NOTIFY {
|
|||||||
EFI_KEY_NOTIFY_FUNCTION KeyNotificationFn;
|
EFI_KEY_NOTIFY_FUNCTION KeyNotificationFn;
|
||||||
LIST_ENTRY NotifyEntry;
|
LIST_ENTRY NotifyEntry;
|
||||||
} TERMINAL_CONSOLE_IN_EX_NOTIFY;
|
} TERMINAL_CONSOLE_IN_EX_NOTIFY;
|
||||||
|
|
||||||
|
typedef enum {
|
||||||
|
TerminalTypePcAnsi,
|
||||||
|
TerminalTypeVt100,
|
||||||
|
TerminalTypeVt100Plus,
|
||||||
|
TerminalTypeVtUtf8,
|
||||||
|
TerminalTypeTtyTerm
|
||||||
|
} TERMINAL_TYPE;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
UINTN Signature;
|
UINTN Signature;
|
||||||
EFI_HANDLE Handle;
|
EFI_HANDLE Handle;
|
||||||
UINT8 TerminalType;
|
TERMINAL_TYPE TerminalType;
|
||||||
EFI_SERIAL_IO_PROTOCOL *SerialIo;
|
EFI_SERIAL_IO_PROTOCOL *SerialIo;
|
||||||
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
EFI_DEVICE_PATH_PROTOCOL *DevicePath;
|
||||||
EFI_SIMPLE_TEXT_INPUT_PROTOCOL SimpleInput;
|
EFI_SIMPLE_TEXT_INPUT_PROTOCOL SimpleInput;
|
||||||
@ -139,12 +148,6 @@ typedef union {
|
|||||||
UINT8 Utf8_3[3];
|
UINT8 Utf8_3[3];
|
||||||
} UTF8_CHAR;
|
} UTF8_CHAR;
|
||||||
|
|
||||||
#define PCANSITYPE 0
|
|
||||||
#define VT100TYPE 1
|
|
||||||
#define VT100PLUSTYPE 2
|
|
||||||
#define VTUTF8TYPE 3
|
|
||||||
#define TTYTERMTYPE 4
|
|
||||||
|
|
||||||
#define LEFTOPENBRACKET 0x5b // '['
|
#define LEFTOPENBRACKET 0x5b // '['
|
||||||
#define ACAP 0x41
|
#define ACAP 0x41
|
||||||
#define BCAP 0x42
|
#define BCAP 0x42
|
||||||
@ -859,7 +862,7 @@ TerminalRemoveConsoleDevVariable (
|
|||||||
**/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
SetTerminalDevicePath (
|
SetTerminalDevicePath (
|
||||||
IN UINT8 TerminalType,
|
IN TERMINAL_TYPE TerminalType,
|
||||||
IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,
|
IN EFI_DEVICE_PATH_PROTOCOL *ParentDevicePath,
|
||||||
OUT EFI_DEVICE_PATH_PROTOCOL **TerminalDevicePath
|
OUT EFI_DEVICE_PATH_PROTOCOL **TerminalDevicePath
|
||||||
);
|
);
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
Implementation for EFI_SIMPLE_TEXT_INPUT_PROTOCOL protocol.
|
Implementation for EFI_SIMPLE_TEXT_INPUT_PROTOCOL protocol.
|
||||||
|
|
||||||
(C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR>
|
(C) Copyright 2014 Hewlett-Packard Development Company, L.P.<BR>
|
||||||
Copyright (c) 2006 - 2016, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||||
Copyright (C) 2016 Silicon Graphics, Inc. All rights reserved.<BR>
|
Copyright (C) 2016 Silicon Graphics, Inc. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -453,15 +453,15 @@ TranslateRawDataToEfiKey (
|
|||||||
{
|
{
|
||||||
switch (TerminalDevice->TerminalType) {
|
switch (TerminalDevice->TerminalType) {
|
||||||
|
|
||||||
case PCANSITYPE:
|
case TerminalTypePcAnsi:
|
||||||
case VT100TYPE:
|
case TerminalTypeVt100:
|
||||||
case VT100PLUSTYPE:
|
case TerminalTypeVt100Plus:
|
||||||
case TTYTERMTYPE:
|
case TerminalTypeTtyTerm:
|
||||||
AnsiRawDataToUnicode (TerminalDevice);
|
AnsiRawDataToUnicode (TerminalDevice);
|
||||||
UnicodeToEfiKey (TerminalDevice);
|
UnicodeToEfiKey (TerminalDevice);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VTUTF8TYPE:
|
case TerminalTypeVtUtf8:
|
||||||
//
|
//
|
||||||
// Process all the raw data in the RawFIFO,
|
// Process all the raw data in the RawFIFO,
|
||||||
// put the processed key into UnicodeFIFO.
|
// put the processed key into UnicodeFIFO.
|
||||||
@ -1405,8 +1405,8 @@ UnicodeToEfiKey (
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (UnicodeChar == 'O' && (TerminalDevice->TerminalType == VT100TYPE ||
|
if (UnicodeChar == 'O' && (TerminalDevice->TerminalType == TerminalTypeVt100 ||
|
||||||
TerminalDevice->TerminalType == TTYTERMTYPE)) {
|
TerminalDevice->TerminalType == TerminalTypeTtyTerm)) {
|
||||||
TerminalDevice->InputState |= INPUT_STATE_O;
|
TerminalDevice->InputState |= INPUT_STATE_O;
|
||||||
TerminalDevice->ResetState = RESET_STATE_DEFAULT;
|
TerminalDevice->ResetState = RESET_STATE_DEFAULT;
|
||||||
continue;
|
continue;
|
||||||
@ -1414,8 +1414,8 @@ UnicodeToEfiKey (
|
|||||||
|
|
||||||
Key.ScanCode = SCAN_NULL;
|
Key.ScanCode = SCAN_NULL;
|
||||||
|
|
||||||
if (TerminalDevice->TerminalType == VT100PLUSTYPE ||
|
if (TerminalDevice->TerminalType == TerminalTypeVt100Plus ||
|
||||||
TerminalDevice->TerminalType == VTUTF8TYPE) {
|
TerminalDevice->TerminalType == TerminalTypeVtUtf8) {
|
||||||
switch (UnicodeChar) {
|
switch (UnicodeChar) {
|
||||||
case '1':
|
case '1':
|
||||||
Key.ScanCode = SCAN_F1;
|
Key.ScanCode = SCAN_F1;
|
||||||
@ -1519,7 +1519,7 @@ UnicodeToEfiKey (
|
|||||||
|
|
||||||
Key.ScanCode = SCAN_NULL;
|
Key.ScanCode = SCAN_NULL;
|
||||||
|
|
||||||
if (TerminalDevice->TerminalType == VT100TYPE) {
|
if (TerminalDevice->TerminalType == TerminalTypeVt100) {
|
||||||
switch (UnicodeChar) {
|
switch (UnicodeChar) {
|
||||||
case 'P':
|
case 'P':
|
||||||
Key.ScanCode = SCAN_F1;
|
Key.ScanCode = SCAN_F1;
|
||||||
@ -1554,7 +1554,7 @@ UnicodeToEfiKey (
|
|||||||
default :
|
default :
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
} else if (TerminalDevice->TerminalType == TTYTERMTYPE) {
|
} else if (TerminalDevice->TerminalType == TerminalTypeTtyTerm) {
|
||||||
/* Also accept VT100 escape codes for F1-F4, HOME and END for TTY term */
|
/* Also accept VT100 escape codes for F1-F4, HOME and END for TTY term */
|
||||||
switch (UnicodeChar) {
|
switch (UnicodeChar) {
|
||||||
case 'P':
|
case 'P':
|
||||||
@ -1596,11 +1596,11 @@ UnicodeToEfiKey (
|
|||||||
|
|
||||||
Key.ScanCode = SCAN_NULL;
|
Key.ScanCode = SCAN_NULL;
|
||||||
|
|
||||||
if (TerminalDevice->TerminalType == PCANSITYPE ||
|
if (TerminalDevice->TerminalType == TerminalTypePcAnsi ||
|
||||||
TerminalDevice->TerminalType == VT100TYPE ||
|
TerminalDevice->TerminalType == TerminalTypeVt100 ||
|
||||||
TerminalDevice->TerminalType == VT100PLUSTYPE ||
|
TerminalDevice->TerminalType == TerminalTypeVt100Plus ||
|
||||||
TerminalDevice->TerminalType == VTUTF8TYPE ||
|
TerminalDevice->TerminalType == TerminalTypeVtUtf8 ||
|
||||||
TerminalDevice->TerminalType == TTYTERMTYPE) {
|
TerminalDevice->TerminalType == TerminalTypeTtyTerm) {
|
||||||
switch (UnicodeChar) {
|
switch (UnicodeChar) {
|
||||||
case 'A':
|
case 'A':
|
||||||
Key.ScanCode = SCAN_UP;
|
Key.ScanCode = SCAN_UP;
|
||||||
@ -1615,104 +1615,104 @@ UnicodeToEfiKey (
|
|||||||
Key.ScanCode = SCAN_LEFT;
|
Key.ScanCode = SCAN_LEFT;
|
||||||
break;
|
break;
|
||||||
case 'H':
|
case 'H':
|
||||||
if (TerminalDevice->TerminalType == PCANSITYPE ||
|
if (TerminalDevice->TerminalType == TerminalTypePcAnsi ||
|
||||||
TerminalDevice->TerminalType == VT100TYPE ||
|
TerminalDevice->TerminalType == TerminalTypeVt100 ||
|
||||||
TerminalDevice->TerminalType == TTYTERMTYPE) {
|
TerminalDevice->TerminalType == TerminalTypeTtyTerm) {
|
||||||
Key.ScanCode = SCAN_HOME;
|
Key.ScanCode = SCAN_HOME;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'F':
|
case 'F':
|
||||||
if (TerminalDevice->TerminalType == PCANSITYPE ||
|
if (TerminalDevice->TerminalType == TerminalTypePcAnsi ||
|
||||||
TerminalDevice->TerminalType == TTYTERMTYPE) {
|
TerminalDevice->TerminalType == TerminalTypeTtyTerm) {
|
||||||
Key.ScanCode = SCAN_END;
|
Key.ScanCode = SCAN_END;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'K':
|
case 'K':
|
||||||
if (TerminalDevice->TerminalType == VT100TYPE) {
|
if (TerminalDevice->TerminalType == TerminalTypeVt100) {
|
||||||
Key.ScanCode = SCAN_END;
|
Key.ScanCode = SCAN_END;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'L':
|
case 'L':
|
||||||
case '@':
|
case '@':
|
||||||
if (TerminalDevice->TerminalType == PCANSITYPE ||
|
if (TerminalDevice->TerminalType == TerminalTypePcAnsi ||
|
||||||
TerminalDevice->TerminalType == VT100TYPE) {
|
TerminalDevice->TerminalType == TerminalTypeVt100) {
|
||||||
Key.ScanCode = SCAN_INSERT;
|
Key.ScanCode = SCAN_INSERT;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'X':
|
case 'X':
|
||||||
if (TerminalDevice->TerminalType == PCANSITYPE) {
|
if (TerminalDevice->TerminalType == TerminalTypePcAnsi) {
|
||||||
Key.ScanCode = SCAN_DELETE;
|
Key.ScanCode = SCAN_DELETE;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'P':
|
case 'P':
|
||||||
if (TerminalDevice->TerminalType == VT100TYPE) {
|
if (TerminalDevice->TerminalType == TerminalTypeVt100) {
|
||||||
Key.ScanCode = SCAN_DELETE;
|
Key.ScanCode = SCAN_DELETE;
|
||||||
} else if (TerminalDevice->TerminalType == PCANSITYPE) {
|
} else if (TerminalDevice->TerminalType == TerminalTypePcAnsi) {
|
||||||
Key.ScanCode = SCAN_F4;
|
Key.ScanCode = SCAN_F4;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'I':
|
case 'I':
|
||||||
if (TerminalDevice->TerminalType == PCANSITYPE) {
|
if (TerminalDevice->TerminalType == TerminalTypePcAnsi) {
|
||||||
Key.ScanCode = SCAN_PAGE_UP;
|
Key.ScanCode = SCAN_PAGE_UP;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'V':
|
case 'V':
|
||||||
if (TerminalDevice->TerminalType == PCANSITYPE) {
|
if (TerminalDevice->TerminalType == TerminalTypePcAnsi) {
|
||||||
Key.ScanCode = SCAN_F10;
|
Key.ScanCode = SCAN_F10;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case '?':
|
case '?':
|
||||||
if (TerminalDevice->TerminalType == VT100TYPE) {
|
if (TerminalDevice->TerminalType == TerminalTypeVt100) {
|
||||||
Key.ScanCode = SCAN_PAGE_UP;
|
Key.ScanCode = SCAN_PAGE_UP;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'G':
|
case 'G':
|
||||||
if (TerminalDevice->TerminalType == PCANSITYPE) {
|
if (TerminalDevice->TerminalType == TerminalTypePcAnsi) {
|
||||||
Key.ScanCode = SCAN_PAGE_DOWN;
|
Key.ScanCode = SCAN_PAGE_DOWN;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'U':
|
case 'U':
|
||||||
if (TerminalDevice->TerminalType == PCANSITYPE) {
|
if (TerminalDevice->TerminalType == TerminalTypePcAnsi) {
|
||||||
Key.ScanCode = SCAN_F9;
|
Key.ScanCode = SCAN_F9;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case '/':
|
case '/':
|
||||||
if (TerminalDevice->TerminalType == VT100TYPE) {
|
if (TerminalDevice->TerminalType == TerminalTypeVt100) {
|
||||||
Key.ScanCode = SCAN_PAGE_DOWN;
|
Key.ScanCode = SCAN_PAGE_DOWN;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'M':
|
case 'M':
|
||||||
if (TerminalDevice->TerminalType == PCANSITYPE) {
|
if (TerminalDevice->TerminalType == TerminalTypePcAnsi) {
|
||||||
Key.ScanCode = SCAN_F1;
|
Key.ScanCode = SCAN_F1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'N':
|
case 'N':
|
||||||
if (TerminalDevice->TerminalType == PCANSITYPE) {
|
if (TerminalDevice->TerminalType == TerminalTypePcAnsi) {
|
||||||
Key.ScanCode = SCAN_F2;
|
Key.ScanCode = SCAN_F2;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'O':
|
case 'O':
|
||||||
if (TerminalDevice->TerminalType == PCANSITYPE) {
|
if (TerminalDevice->TerminalType == TerminalTypePcAnsi) {
|
||||||
Key.ScanCode = SCAN_F3;
|
Key.ScanCode = SCAN_F3;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'Q':
|
case 'Q':
|
||||||
if (TerminalDevice->TerminalType == PCANSITYPE) {
|
if (TerminalDevice->TerminalType == TerminalTypePcAnsi) {
|
||||||
Key.ScanCode = SCAN_F5;
|
Key.ScanCode = SCAN_F5;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'R':
|
case 'R':
|
||||||
if (TerminalDevice->TerminalType == PCANSITYPE) {
|
if (TerminalDevice->TerminalType == TerminalTypePcAnsi) {
|
||||||
Key.ScanCode = SCAN_F6;
|
Key.ScanCode = SCAN_F6;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'S':
|
case 'S':
|
||||||
if (TerminalDevice->TerminalType == PCANSITYPE) {
|
if (TerminalDevice->TerminalType == TerminalTypePcAnsi) {
|
||||||
Key.ScanCode = SCAN_F7;
|
Key.ScanCode = SCAN_F7;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'T':
|
case 'T':
|
||||||
if (TerminalDevice->TerminalType == PCANSITYPE) {
|
if (TerminalDevice->TerminalType == TerminalTypePcAnsi) {
|
||||||
Key.ScanCode = SCAN_F8;
|
Key.ScanCode = SCAN_F8;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1726,7 +1726,7 @@ UnicodeToEfiKey (
|
|||||||
* numeric codes, and there are no ambiguous prefixes shared with
|
* numeric codes, and there are no ambiguous prefixes shared with
|
||||||
* other terminal types.
|
* other terminal types.
|
||||||
*/
|
*/
|
||||||
if (TerminalDevice->TerminalType == TTYTERMTYPE &&
|
if (TerminalDevice->TerminalType == TerminalTypeTtyTerm &&
|
||||||
Key.ScanCode == SCAN_NULL &&
|
Key.ScanCode == SCAN_NULL &&
|
||||||
UnicodeChar >= '0' &&
|
UnicodeChar >= '0' &&
|
||||||
UnicodeChar <= '9') {
|
UnicodeChar <= '9') {
|
||||||
@ -1755,7 +1755,7 @@ UnicodeToEfiKey (
|
|||||||
* state is only used by the TTY terminal type.
|
* state is only used by the TTY terminal type.
|
||||||
*/
|
*/
|
||||||
Key.ScanCode = SCAN_NULL;
|
Key.ScanCode = SCAN_NULL;
|
||||||
if (TerminalDevice->TerminalType == TTYTERMTYPE) {
|
if (TerminalDevice->TerminalType == TerminalTypeTtyTerm) {
|
||||||
|
|
||||||
if (UnicodeChar == '~' && TerminalDevice->TtyEscapeIndex <= 2) {
|
if (UnicodeChar == '~' && TerminalDevice->TtyEscapeIndex <= 2) {
|
||||||
UINT16 EscCode;
|
UINT16 EscCode;
|
||||||
@ -1851,7 +1851,7 @@ UnicodeToEfiKey (
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (UnicodeChar == DEL) {
|
if (UnicodeChar == DEL) {
|
||||||
if (TerminalDevice->TerminalType == TTYTERMTYPE) {
|
if (TerminalDevice->TerminalType == TerminalTypeTtyTerm) {
|
||||||
Key.ScanCode = SCAN_NULL;
|
Key.ScanCode = SCAN_NULL;
|
||||||
Key.UnicodeChar = CHAR_BACKSPACE;
|
Key.UnicodeChar = CHAR_BACKSPACE;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/** @file
|
/** @file
|
||||||
Implementation for EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL protocol.
|
Implementation for EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL protocol.
|
||||||
|
|
||||||
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||||
Copyright (C) 2016 Silicon Graphics, Inc. All rights reserved.<BR>
|
Copyright (C) 2016 Silicon Graphics, Inc. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
@ -224,10 +224,10 @@ TerminalConOutOutputString (
|
|||||||
|
|
||||||
switch (TerminalDevice->TerminalType) {
|
switch (TerminalDevice->TerminalType) {
|
||||||
|
|
||||||
case PCANSITYPE:
|
case TerminalTypePcAnsi:
|
||||||
case VT100TYPE:
|
case TerminalTypeVt100:
|
||||||
case VT100PLUSTYPE:
|
case TerminalTypeVt100Plus:
|
||||||
case TTYTERMTYPE:
|
case TerminalTypeTtyTerm:
|
||||||
|
|
||||||
if (!TerminalIsValidTextGraphics (*WString, &GraphicChar, &AsciiChar)) {
|
if (!TerminalIsValidTextGraphics (*WString, &GraphicChar, &AsciiChar)) {
|
||||||
//
|
//
|
||||||
@ -253,7 +253,7 @@ TerminalConOutOutputString (
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TerminalDevice->TerminalType != PCANSITYPE) {
|
if (TerminalDevice->TerminalType != TerminalTypePcAnsi) {
|
||||||
GraphicChar = AsciiChar;
|
GraphicChar = AsciiChar;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -271,7 +271,7 @@ TerminalConOutOutputString (
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VTUTF8TYPE:
|
case TerminalTypeVtUtf8:
|
||||||
UnicodeToUtf8 (*WString, &Utf8Char, &ValidBytes);
|
UnicodeToUtf8 (*WString, &Utf8Char, &ValidBytes);
|
||||||
Length = ValidBytes;
|
Length = ValidBytes;
|
||||||
Status = TerminalDevice->SerialIo->Write (
|
Status = TerminalDevice->SerialIo->Write (
|
||||||
@ -317,7 +317,7 @@ TerminalConOutOutputString (
|
|||||||
Mode->CursorRow++;
|
Mode->CursorRow++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TerminalDevice->TerminalType == TTYTERMTYPE &&
|
if (TerminalDevice->TerminalType == TerminalTypeTtyTerm &&
|
||||||
!TerminalDevice->OutputEscChar) {
|
!TerminalDevice->OutputEscChar) {
|
||||||
//
|
//
|
||||||
// We've written the last character on the line. The
|
// We've written the last character on the line. The
|
||||||
@ -398,14 +398,14 @@ TerminalConOutTestString (
|
|||||||
|
|
||||||
switch (TerminalDevice->TerminalType) {
|
switch (TerminalDevice->TerminalType) {
|
||||||
|
|
||||||
case PCANSITYPE:
|
case TerminalTypePcAnsi:
|
||||||
case VT100TYPE:
|
case TerminalTypeVt100:
|
||||||
case VT100PLUSTYPE:
|
case TerminalTypeVt100Plus:
|
||||||
case TTYTERMTYPE:
|
case TerminalTypeTtyTerm:
|
||||||
Status = AnsiTestString (TerminalDevice, WString);
|
Status = AnsiTestString (TerminalDevice, WString);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case VTUTF8TYPE:
|
case TerminalTypeVtUtf8:
|
||||||
Status = VTUTF8TestString (TerminalDevice, WString);
|
Status = VTUTF8TestString (TerminalDevice, WString);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -791,7 +791,7 @@ TerminalConOutSetCursorPosition (
|
|||||||
// within the current line if possible, and don't output anyting if
|
// within the current line if possible, and don't output anyting if
|
||||||
// it isn't necessary.
|
// it isn't necessary.
|
||||||
//
|
//
|
||||||
if (TerminalDevice->TerminalType == TTYTERMTYPE &&
|
if (TerminalDevice->TerminalType == TerminalTypeTtyTerm &&
|
||||||
(UINTN)Mode->CursorRow == Row) {
|
(UINTN)Mode->CursorRow == Row) {
|
||||||
if ((UINTN)Mode->CursorColumn > Column) {
|
if ((UINTN)Mode->CursorColumn > Column) {
|
||||||
mCursorBackwardString[FW_BACK_OFFSET + 0] = (CHAR16) ('0' + ((Mode->CursorColumn - Column) / 10));
|
mCursorBackwardString[FW_BACK_OFFSET + 0] = (CHAR16) ('0' + ((Mode->CursorColumn - Column) / 10));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user