diff options
Diffstat (limited to 'Core/EM/Terminal/TerminalBoard.h')
-rw-r--r-- | Core/EM/Terminal/TerminalBoard.h | 404 |
1 files changed, 404 insertions, 0 deletions
diff --git a/Core/EM/Terminal/TerminalBoard.h b/Core/EM/Terminal/TerminalBoard.h new file mode 100644 index 0000000..36a78ef --- /dev/null +++ b/Core/EM/Terminal/TerminalBoard.h @@ -0,0 +1,404 @@ +//********************************************************************** +//********************************************************************** +//** ** +//** (C)Copyright 1985-2009, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Pkwy, Suite 200, Norcross, GA 30093 ** +//** ** +//** Phone: (770)-246-8600 ** +//** ** +//********************************************************************** +//********************************************************************** +// $Header: /Alaska/BIN/Modules/Terminal/TerminalBoard.h 4 12/08/11 6:30a Jittenkumarp $ +// +// $Revision: 4 $ +// +// $Date: 12/08/11 6:30a $ +//********************************************************************** +// Revision History +// ---------------- +// $Log: /Alaska/BIN/Modules/Terminal/TerminalBoard.h $ +// +// 4 12/08/11 6:30a Jittenkumarp +// [TAG] EIP74239 +// [Category] New Feature +// [Description] Added "Intel Key" ESC sequence support for Serial +// Redirection. +// [Files] Terminal.sdl, TerminalBoard.h +// +// 3 7/13/11 2:51a Rajeshms +// [TAG]- EIP 36616 +// [Category]- New Feature +// [Description]- Add Setup option for Various Putty keyPad support in +// Terminal driver. +// [Files]- Terminal.c, Terminal.h, Terminal.sd, Terminal.sdl, +// Terminal.uni, TerminalBoard.h, TerminalSetup.c, TerminalSimpleTextIn.c +// +// 2 4/12/11 4:31a Rameshr +// [TAG]- EIP 57688 +// [Category]- New Feature +// [Description]- Add Setup option for Vt-UTF8 combo key support in +// terminal driver +// [Files]- Terminal.c, Terminal.h, Terminal.sd, Terminal.sdl , +// Terminal.uni, Terminalboard.h, TerminalSetup.c, TerminalSimpletextin.c +// +// 1 7/17/09 2:54p Rameshr +// Initial check-in +// +// +//********************************************************************** + +//<AMI_FHDR_START> +//-------------------------------------------------------------------------- +// +// Name: TerminalBoard.h +// +// Description: Board file for the Terminal Module. +// +//-------------------------------------------------------------------------- +//<AMI_FHDR_END> + +#ifndef _TERMINAL_BOARD_H__ +#define _TERMINAL_BOARD_H__ + +#include <Protocol\SimpleTextIn.h> +#include <Protocol\SimpleTextInEx.h> +#include <Protocol\AmiKeycode.h> + + +#define ESC_SEQ_STATE_ARRAY_END_MARKER {0,0,0,0,0} +#define RESET 0xFFFF +#define ASCII_ESC 0x1B + +#define GLOBAL_ALL PUTTY_VT100 | PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_SCO | PUTTY_ESCN | PUTTY_VT400 + + +typedef struct _STATE_DESCRIPTION STATE_DESCRIPTION; + +// +// Esc Sequence defination. +// +struct _STATE_DESCRIPTION{ + CHAR16 InputChar; + STATE_DESCRIPTION *NextEscSeqState; + UINT16 EfiInputKeyScanCode; + CHAR16 EfiInputKeyUnicodeChar; + UINT8 KeyPad; +}; + +STATE_DESCRIPTION EscSeqStateArrayEndMarker = ESC_SEQ_STATE_ARRAY_END_MARKER; +STATE_DESCRIPTION *EscSeqStateArrayEndMarkerPtr = &EscSeqStateArrayEndMarker; + +STATE_DESCRIPTION PuttyLinuxEscSeq[] = +{ + {'A', NULL, EFI_SCAN_F1, 0, PUTTY_LINUX}, + {'B', NULL, EFI_SCAN_F2, 0, PUTTY_LINUX}, + {'C', NULL, EFI_SCAN_F3, 0, PUTTY_LINUX}, + {'D', NULL, EFI_SCAN_F4, 0, PUTTY_LINUX}, + {'E', NULL, EFI_SCAN_F5, 0, PUTTY_LINUX}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + +STATE_DESCRIPTION PuttyLinuxF6[] = +{ + {'~', NULL, EFI_SCAN_F6, 0, PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN | PUTTY_VT400}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + +STATE_DESCRIPTION PuttyLinuxF7[] = +{ + {'~', NULL, EFI_SCAN_F7, 0, PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN | PUTTY_VT400}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + +STATE_DESCRIPTION PuttyLinuxF8[] = +{ + {'~', NULL, EFI_SCAN_F8, 0, PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN | PUTTY_VT400}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + +STATE_DESCRIPTION PuttyLinuxF9[] = +{ + {'~', NULL, EFI_SCAN_F9, 0, PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN | PUTTY_VT400}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + +STATE_DESCRIPTION PuttyLinuxF10[] = +{ + {'~', NULL, EFI_SCAN_F10, 0, PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN | PUTTY_VT400}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + +STATE_DESCRIPTION PuttyLinuxF11[] = +{ + {'~', NULL, EFI_SCAN_F11, 0, PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN | PUTTY_VT400}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + +STATE_DESCRIPTION PuttyLinuxF12[] = +{ + {'~', NULL, EFI_SCAN_F12, 0, PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN | PUTTY_VT400}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + + +STATE_DESCRIPTION PuttyXterm86F5[] = +{ + {'~', NULL, EFI_SCAN_F5, 0, PUTTY_XTERMR6 | PUTTY_ESCN | PUTTY_VT400}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + +STATE_DESCRIPTION PuttyEscNF1[] = +{ + {'~', NULL, EFI_SCAN_F1, 0, PUTTY_ESCN | PUTTY_VT400}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; +STATE_DESCRIPTION PuttyEscNF2[] = +{ + {'~', NULL, EFI_SCAN_F2, 0, PUTTY_ESCN | PUTTY_VT400}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; +STATE_DESCRIPTION PuttyEscNF3[] = +{ + {'~', NULL, EFI_SCAN_F3, 0, PUTTY_ESCN | PUTTY_VT400}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; +STATE_DESCRIPTION PuttyEscNF4[] = +{ + {'~', NULL, EFI_SCAN_F4, 0, PUTTY_ESCN | PUTTY_VT400}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + +STATE_DESCRIPTION PuttyVt100EscSeq1[] = +{ + {'~', NULL, EFI_SCAN_HOME, 0, PUTTY_VT100 | PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN }, + {'~', NULL, EFI_SCAN_INS, 0, PUTTY_VT400}, + {'7', PuttyLinuxF6, 0, 0, PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN | PUTTY_VT400}, + {'8', PuttyLinuxF7, 0, 0, PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN | PUTTY_VT400}, + {'9', PuttyLinuxF8, 0, 0, PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN | PUTTY_VT400}, + {'5', PuttyXterm86F5, 0, 0, PUTTY_XTERMR6 | PUTTY_ESCN | PUTTY_VT400}, + {'1', PuttyEscNF1, 0, 0, PUTTY_ESCN | PUTTY_VT400}, + {'2', PuttyEscNF2, 0, 0, PUTTY_ESCN | PUTTY_VT400}, + {'3', PuttyEscNF3, 0, 0, PUTTY_ESCN | PUTTY_VT400}, + {'4', PuttyEscNF4, 0, 0, PUTTY_ESCN | PUTTY_VT400}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + +STATE_DESCRIPTION PuttyVt100EscSeq2[] = +{ + {'~', NULL, EFI_SCAN_INS, 0, PUTTY_VT100 | PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN}, + {'~', NULL, EFI_SCAN_HOME, 0, PUTTY_VT400}, + {'0', PuttyLinuxF9, 0, 0, PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN | PUTTY_VT400}, + {'1', PuttyLinuxF10, 0, 0, PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN | PUTTY_VT400}, + {'3', PuttyLinuxF11, 0, 0, PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN | PUTTY_VT400}, + {'4', PuttyLinuxF12, 0, 0, PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN | PUTTY_VT400}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + +STATE_DESCRIPTION PuttyVt100EscSeq3[] = +{ + {'~', NULL, EFI_SCAN_DEL, 0, PUTTY_VT100 | PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN | PUTTY_VT400}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + +STATE_DESCRIPTION PuttyVt100EscSeq4[] = +{ + {'~', NULL, EFI_SCAN_END, 0, PUTTY_VT100 | PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN | PUTTY_VT400}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + +STATE_DESCRIPTION PuttyVt100EscSeq5[] = +{ + {'~', NULL, EFI_SCAN_PGUP, 0, PUTTY_VT100 | PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN | PUTTY_VT400}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + +STATE_DESCRIPTION PuttyVt100EscSeq6[] = +{ + {'~', NULL, EFI_SCAN_PGDN, 0, PUTTY_VT100 | PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN | PUTTY_VT400}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + +STATE_DESCRIPTION PuttyVt400EscSeq3[] = +{ + {'~', NULL, EFI_SCAN_PGUP, 0, PUTTY_VT400}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + +STATE_DESCRIPTION PuttyVt400EscSeq4[] = +{ + {'~', NULL, EFI_SCAN_DEL, 0, PUTTY_VT400}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + +STATE_DESCRIPTION PuttyVt400EscSeq5[] = +{ + {'~', NULL, EFI_SCAN_END, 0, PUTTY_VT400}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + +STATE_DESCRIPTION PuttyVt400EscSeq6[] = +{ + {'~', NULL, EFI_SCAN_PGDN, 0, PUTTY_VT400}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + + +STATE_DESCRIPTION OemEscSeqStateArray[]= +{ + {'P', NULL, EFI_SCAN_F1, 0, GLOBAL_ALL}, + {'Q', NULL, EFI_SCAN_F2, 0, GLOBAL_ALL}, + {'w', NULL, EFI_SCAN_F3, 0, GLOBAL_ALL}, + {'x', NULL, EFI_SCAN_F4, 0, GLOBAL_ALL}, + {'t', NULL, EFI_SCAN_F5, 0, GLOBAL_ALL}, + {'u', NULL, EFI_SCAN_F6, 0, GLOBAL_ALL}, + {'q', NULL, EFI_SCAN_F7, 0, GLOBAL_ALL}, + {'r', NULL, EFI_SCAN_F8, 0, GLOBAL_ALL}, + {'p', NULL, EFI_SCAN_F9, 0, GLOBAL_ALL}, + {'M', NULL, EFI_SCAN_F10,0, GLOBAL_ALL}, + ESC_SEQ_STATE_ARRAY_END_MARKER + +}; + +STATE_DESCRIPTION CursorPositionEscSeqStateArray[] = +{ + {'C', NULL, EFI_SCAN_RIGHT, 0, GLOBAL_ALL}, + {'D', NULL, EFI_SCAN_LEFT, 0, GLOBAL_ALL}, + {'A', NULL, EFI_SCAN_UP, 0, GLOBAL_ALL}, + {'B', NULL, EFI_SCAN_DN, 0, GLOBAL_ALL}, + {'H', NULL, EFI_SCAN_HOME, 0, GLOBAL_ALL}, + {'K', NULL, EFI_SCAN_END, 0, GLOBAL_ALL}, + {'1', PuttyVt100EscSeq1, 0, 0, PUTTY_VT100 | PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN | PUTTY_VT400 }, + {'2', PuttyVt100EscSeq2, 0, 0, PUTTY_VT100 | PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN | PUTTY_VT400 }, + {'3', PuttyVt100EscSeq3, 0, 0, PUTTY_VT100 | PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN }, + {'4', PuttyVt100EscSeq4, 0, 0, PUTTY_VT100 | PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN }, + {'5', PuttyVt100EscSeq5, 0, 0, PUTTY_VT100 | PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN }, + {'6', PuttyVt100EscSeq6, 0, 0, PUTTY_VT100 | PUTTY_LINUX | PUTTY_XTERMR6 | PUTTY_ESCN }, + {'3', PuttyVt400EscSeq3, 0, 0, PUTTY_VT400}, + {'4', PuttyVt400EscSeq4, 0, 0, PUTTY_VT400}, + {'5', PuttyVt400EscSeq5, 0, 0, PUTTY_VT400}, + {'6', PuttyVt400EscSeq6, 0, 0, PUTTY_VT400}, + {'[', PuttyLinuxEscSeq, 0, 0, PUTTY_LINUX}, + {'M', NULL, EFI_SCAN_F1, 0, PUTTY_SCO}, + {'N', NULL, EFI_SCAN_F2, 0, PUTTY_SCO}, +#if OEM_ESC_SEQUENCES + {'O', OemEscSeqStateArray, 0, 0, GLOBAL_ALL}, +#else + {'O', NULL, EFI_SCAN_F3, 0, PUTTY_SCO}, +#endif + {'P', NULL, EFI_SCAN_F4, 0, PUTTY_SCO}, + {'Q', NULL, EFI_SCAN_F5, 0, PUTTY_SCO}, + {'R', NULL, EFI_SCAN_F6, 0, PUTTY_SCO}, + {'S', NULL, EFI_SCAN_F7, 0, PUTTY_SCO}, + {'T', NULL, EFI_SCAN_F8, 0, PUTTY_SCO}, + {'U', NULL, EFI_SCAN_F9, 0, PUTTY_SCO}, + {'V', NULL, EFI_SCAN_F10, 0, PUTTY_SCO}, + {'W', NULL, EFI_SCAN_F11, 0, PUTTY_SCO}, + {'X', NULL, EFI_SCAN_F12, 0, PUTTY_SCO}, + {'I', NULL, EFI_SCAN_PGUP, 0, PUTTY_SCO}, + {'G', NULL, EFI_SCAN_PGDN, 0, PUTTY_SCO}, + {'F', NULL, EFI_SCAN_END, 0, PUTTY_SCO}, + {'L', NULL, EFI_SCAN_INS, 0, PUTTY_SCO}, + {0x7F, NULL, EFI_SCAN_DEL, 0, PUTTY_SCO}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + +STATE_DESCRIPTION FunctionKeyEscSeqStateArray[] = +{ + {'P', NULL, EFI_SCAN_F1, 0, GLOBAL_ALL}, + {'Q', NULL, EFI_SCAN_F2, 0, GLOBAL_ALL}, + {'R', NULL, EFI_SCAN_F3, 0, GLOBAL_ALL}, + {'S', NULL, EFI_SCAN_F4, 0, GLOBAL_ALL}, + {'T', NULL, EFI_SCAN_F5, 0, PUTTY_VT100}, + {'U', NULL, EFI_SCAN_F6, 0, PUTTY_VT100}, + {'V', NULL, EFI_SCAN_F7, 0, PUTTY_VT100}, + {'W', NULL, EFI_SCAN_F8, 0, PUTTY_VT100}, + {'X', NULL, EFI_SCAN_F9, 0, PUTTY_VT100}, + {'Y', NULL, EFI_SCAN_F10, 0, PUTTY_VT100}, + {'Z', NULL, EFI_SCAN_F11, 0, PUTTY_VT100}, + {'[', NULL, EFI_SCAN_F12, 0, PUTTY_VT100}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + + +STATE_DESCRIPTION ResetSequenceState5[] = +{ + {'R', NULL, RESET, 0, GLOBAL_ALL}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + +STATE_DESCRIPTION ResetSequenceState4[] = +{ + {ASCII_ESC, ResetSequenceState5, 0, 0, GLOBAL_ALL}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + +STATE_DESCRIPTION ResetSequenceState3[] = +{ + {'r', ResetSequenceState4, 0, 0, GLOBAL_ALL}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + +STATE_DESCRIPTION ResetSequenceState2[] = +{ + {ASCII_ESC, ResetSequenceState3, 0, 0, GLOBAL_ALL}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + +STATE_DESCRIPTION EscSeqStateArray[] = +{ + {'[', CursorPositionEscSeqStateArray, + 0, 0, GLOBAL_ALL}, + {'O', FunctionKeyEscSeqStateArray, + 0, 0, GLOBAL_ALL}, + {'R', ResetSequenceState2, + 0, 0, GLOBAL_ALL}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + +STATE_DESCRIPTION Vtutf8EscSeqStateArray[] = +{ + {'[', CursorPositionEscSeqStateArray, + 0, 0, GLOBAL_ALL}, + {'O', FunctionKeyEscSeqStateArray, + 0, 0, GLOBAL_ALL}, + {'h', NULL, EFI_SCAN_HOME, 0, GLOBAL_ALL}, + {'k', NULL, EFI_SCAN_END, 0, GLOBAL_ALL}, + {'+', NULL, EFI_SCAN_INS, 0, GLOBAL_ALL}, + {'-', NULL, EFI_SCAN_DEL, 0, GLOBAL_ALL}, + {'?', NULL, EFI_SCAN_PGUP, 0, GLOBAL_ALL}, + {'/', NULL, EFI_SCAN_PGDN, 0, GLOBAL_ALL}, + {'1', NULL, EFI_SCAN_F1, 0, GLOBAL_ALL}, + {'2', NULL, EFI_SCAN_F2, 0, GLOBAL_ALL}, + {'3', NULL, EFI_SCAN_F3, 0, GLOBAL_ALL}, + {'4', NULL, EFI_SCAN_F4, 0, GLOBAL_ALL}, + {'5', NULL, EFI_SCAN_F5, 0, GLOBAL_ALL}, + {'6', NULL, EFI_SCAN_F6, 0, GLOBAL_ALL}, + {'7', NULL, EFI_SCAN_F7, 0, GLOBAL_ALL}, + {'8', NULL, EFI_SCAN_F8, 0, GLOBAL_ALL}, + {'9', NULL, EFI_SCAN_F9, 0, GLOBAL_ALL}, + {'0', NULL, EFI_SCAN_F10, 0, GLOBAL_ALL}, + {'!', NULL, EFI_SCAN_F11, 0, GLOBAL_ALL}, + {'@', NULL, EFI_SCAN_F12, 0, GLOBAL_ALL}, + {'R', ResetSequenceState2, + 0, 0, GLOBAL_ALL}, + ESC_SEQ_STATE_ARRAY_END_MARKER +}; + +#endif + +//**************************************************************************** +//**************************************************************************** +//** ** +//** (C)Copyright 1985-2008, American Megatrends, Inc. ** +//** ** +//** All Rights Reserved. ** +//** ** +//** 5555 Oakbrook Pkwy, Norcross, GA 30093 ** +//** ** +//** Phone (770)-246-8600 ** +//** ** +//**************************************************************************** +//****************************************************************************
\ No newline at end of file |