alder_lake_bios/Insyde/InsydeModulePkg/Universal/UserInterface/SetupMouseDxe/KeyboardLayout.c

303 lines
12 KiB
C

/** @file
;******************************************************************************
;* Copyright (c) 2012 - 2014, Insyde Software Corp. All Rights Reserved.
;*
;* You may not reproduce, distribute, publish, display, perform, modify, adapt,
;* transmit, broadcast, present, recite, release, license or otherwise exploit
;* any part of this publication in any form, by any means, without the prior
;* written permission of Insyde Software Corporation.
;*
;******************************************************************************
*/
#include "SetupMouse.h"
#include "KeyboardLayout.h"
#include <Library/PcdLib.h>
typedef enum {
STYLE_NORMAL,
STYLE_LEFTSHIFT,
STYLE_RIGHTSHIFT,
STYLE_CLOSE,
STYLE_TAB,
STYLE_CAPS,
STYLE_ENTER,
STYLE_BACKSPACE
} KEY_STYLE;
//
// {font color:BGRA}, {Image Id}, {ScaleGrid}
//
KEY_STYLE_ARRAY mEnglishStyleList[] = {
{
{{0x00, 0x00, 0x00, 0xFF}, IMAGE_TOKEN (IMAGE_KB_NORMAL), {5,5,5,5}},
{{0x00, 0x00, 0x00, 0xFF}, IMAGE_TOKEN (IMAGE_KB_NORMAL), {5,5,5,5}},
{{0x00, 0x00, 0x00, 0xFF}, IMAGE_TOKEN (IMAGE_KB_PRESS), {5,5,5,5}}
},
{
{{0x00, 0x00, 0x00, 0xFF}, IMAGE_TOKEN (IMAGE_KB_LEFTSHIFT), {5,5,5,5}},
{{0x00, 0x00, 0x00, 0xFF}, IMAGE_TOKEN (IMAGE_KB_LEFTSHIFT), {5,5,5,5}},
{{0x00, 0x00, 0x00, 0xFF}, IMAGE_TOKEN (IMAGE_KB_LEFTSHIFT_PRESS), {5,5,5,5}}
},
{
{{0x00, 0x00, 0x00, 0xFF}, IMAGE_TOKEN (IMAGE_KB_RIGHTSHIFT), {5,5,5,5}},
{{0x00, 0x00, 0x00, 0xFF}, IMAGE_TOKEN (IMAGE_KB_RIGHTSHIFT), {5,5,5,5}},
{{0x00, 0x00, 0x00, 0xFF}, IMAGE_TOKEN (IMAGE_KB_RIGHTSHIFT_PRESS), {5,5,5,5}}
},
{
{{0x00, 0x00, 0x00, 0xFF}, IMAGE_TOKEN (IMAGE_KB_CLOSE), {5,5,5,5}},
{{0x00, 0x00, 0x00, 0xFF}, IMAGE_TOKEN (IMAGE_KB_CLOSE), {5,5,5,5}},
{{0x00, 0x00, 0x00, 0xFF}, IMAGE_TOKEN (IMAGE_KB_CLOSE_PRESS), {5,5,5,5}}
},
{
{{0x00, 0x00, 0x00, 0xFF}, IMAGE_TOKEN (IMAGE_KB_TAB), {5,5,5,5}},
{{0x00, 0x00, 0x00, 0xFF}, IMAGE_TOKEN (IMAGE_KB_TAB), {5,5,5,5}},
{{0x00, 0x00, 0x00, 0xFF}, IMAGE_TOKEN (IMAGE_KB_TAB_PRESS), {5,5,5,5}}
},
{
{{0x00, 0x00, 0x00, 0xFF}, IMAGE_TOKEN (IMAGE_KB_CAPS), {5,5,5,5}},
{{0x00, 0x00, 0x00, 0xFF}, IMAGE_TOKEN (IMAGE_KB_CAPS), {5,5,5,5}},
{{0x00, 0x00, 0x00, 0xFF}, IMAGE_TOKEN (IMAGE_KB_CAPS_PRESS), {5,5,5,5}}
},
{
{{0x00, 0x00, 0x00, 0xFF}, IMAGE_TOKEN (IMAGE_KB_ENTER), {5,5,5,5}},
{{0x00, 0x00, 0x00, 0xFF}, IMAGE_TOKEN (IMAGE_KB_ENTER), {5,5,5,5}},
{{0x00, 0x00, 0x00, 0xFF}, IMAGE_TOKEN (IMAGE_KB_ENTER_PRESS), {5,5,5,5}}
},
{
{{0x00, 0x00, 0x00, 0xFF}, IMAGE_TOKEN (IMAGE_KB_BACKSPACE), {5,5,5,5}},
{{0x00, 0x00, 0x00, 0xFF}, IMAGE_TOKEN (IMAGE_KB_BACKSPACE), {5,5,5,5}},
{{0x00, 0x00, 0x00, 0xFF}, IMAGE_TOKEN (IMAGE_KB_BACKSPACE_PRESS), {5,5,5,5}}
},
};
KEY_MAP_ENTRY mEnglishEntryList[] = {
{STYLE_BACKSPACE, 0X8 , { 800 , 64 , 885 , 115 }},
{STYLE_TAB, 0X9 , { 9 , 123 , 94 , 175 }},
{STYLE_ENTER, 0XD , { 783 , 183 , 884 , 235 }},
{STYLE_CAPS, 0X14 , { 8 , 183 , 110 , 235 }},
{STYLE_NORMAL, 0X1B , { 9 , 22 , 64 , 57 }},
{STYLE_NORMAL, 0X20 , { 265 , 302 , 625 , 364 }},
{STYLE_NORMAL, 0X30 , { 619 , 64 , 674 , 115 }},
{STYLE_NORMAL, 0X31 , { 68 , 64 , 123 , 115 }},
{STYLE_NORMAL, 0X32 , { 130 , 64 , 185 , 115 }},
{STYLE_NORMAL, 0X33 , { 193 , 64 , 247 , 115 }},
{STYLE_NORMAL, 0X34 , { 253 , 64 , 307 , 115 }},
{STYLE_NORMAL, 0X35 , { 314 , 64 , 369 , 115 }},
{STYLE_NORMAL, 0X36 , { 376 , 64 , 431 , 115 }},
{STYLE_NORMAL, 0X37 , { 436 , 64 , 491 , 115 }},
{STYLE_NORMAL, 0X38 , { 497 , 64 , 552 , 115 }},
{STYLE_NORMAL, 0X39 , { 558 , 64 , 613 , 115 }},
{STYLE_NORMAL, 0X41 , { 114 , 183 , 169 , 235 }},
{STYLE_NORMAL, 0X42 , { 386 , 243 , 441 , 295 }},
{STYLE_NORMAL, 0X43 , { 264 , 243 , 319 , 295 }},
{STYLE_NORMAL, 0X44 , { 236 , 183 , 291 , 235 }},
{STYLE_NORMAL, 0X45 , { 220 , 123 , 275 , 175 }},
{STYLE_NORMAL, 0X46 , { 297 , 183 , 352 , 235 }},
{STYLE_NORMAL, 0X47 , { 358 , 183 , 413 , 235 }},
{STYLE_NORMAL, 0X48 , { 419 , 183 , 474 , 235 }},
{STYLE_NORMAL, 0X49 , { 526 , 123 , 581 , 175 }},
{STYLE_NORMAL, 0X4A , { 481 , 183 , 536 , 235 }},
{STYLE_NORMAL, 0X4B , { 542 , 183 , 597 , 235 }},
{STYLE_NORMAL, 0X4C , { 602 , 183 , 657 , 235 }},
{STYLE_NORMAL, 0X4D , { 509 , 243 , 564 , 295 }},
{STYLE_NORMAL, 0X4E , { 449 , 243 , 504 , 295 }},
{STYLE_NORMAL, 0X4F , { 588 , 123 , 643 , 175 }},
{STYLE_NORMAL, 0X50 , { 648 , 123 , 703 , 175 }},
{STYLE_NORMAL, 0X51 , { 98 , 123 , 153 , 175 }},
{STYLE_NORMAL, 0X52 , { 281 , 123 , 336 , 175 }},
{STYLE_NORMAL, 0X53 , { 174 , 183 , 229 , 235 }},
{STYLE_NORMAL, 0X54 , { 342 , 123 , 397 , 175 }},
{STYLE_NORMAL, 0X55 , { 465 , 123 , 520 , 175 }},
{STYLE_NORMAL, 0X56 , { 323 , 243 , 378 , 295 }},
{STYLE_NORMAL, 0X57 , { 159 , 123 , 214 , 175 }},
{STYLE_NORMAL, 0X58 , { 203 , 243 , 258 , 295 }},
{STYLE_NORMAL, 0X59 , { 403 , 123 , 458 , 175 }},
{STYLE_NORMAL, 0X5A , { 142 , 243 , 197 , 295 }},
{STYLE_NORMAL, 0X70 , { 71 , 22 , 126 , 57 }},
{STYLE_NORMAL, 0X71 , { 134 , 22 , 189 , 57 }},
{STYLE_NORMAL, 0X72 , { 198 , 22 , 253 , 57 }},
{STYLE_NORMAL, 0X73 , { 261 , 22 , 316 , 57 }},
{STYLE_NORMAL, 0X74 , { 324 , 22 , 379 , 57 }},
{STYLE_NORMAL, 0X75 , { 387 , 22 , 442 , 57 }},
{STYLE_NORMAL, 0X76 , { 450 , 22 , 505 , 57 }},
{STYLE_NORMAL, 0X77 , { 515 , 22 , 570 , 57 }},
{STYLE_NORMAL, 0X78 , { 577 , 22 , 632 , 57 }},
{STYLE_NORMAL, 0X79 , { 641 , 22 , 696 , 57 }},
{STYLE_NORMAL, 0X7A , { 703 , 22 , 758 , 57 }},
{STYLE_NORMAL, 0X7B , { 767 , 22 , 822 , 57 }},
{STYLE_LEFTSHIFT, 0XA0 , { 8 , 243 , 139 , 295 }},
{STYLE_RIGHTSHIFT, 0XA1 , { 754 , 243 , 885 , 295 }},
{STYLE_NORMAL, 0XA2 , { 7 , 302 , 92 , 364 }},
{STYLE_NORMAL, 0XA3 , { 631 , 302 , 716 , 364 }},
{STYLE_NORMAL, 0XA4 , { 99 , 304 , 169 , 364 }},
{STYLE_NORMAL, 0XA5 , { 721 , 302 , 792 , 364 }},
{STYLE_NORMAL, 0XBA , { 664 , 183 , 719 , 235 }},
{STYLE_NORMAL, 0XBB , { 743 , 63 , 798 , 115 }},
{STYLE_NORMAL, 0XBC , { 570 , 243 , 625 , 295 }},
{STYLE_NORMAL, 0XBD , { 681 , 64 , 736 , 115 }},
{STYLE_NORMAL, 0XBE , { 631 , 243 , 686 , 295 }},
{STYLE_NORMAL, 0XBF , { 693 , 243 , 748 , 295 }},
{STYLE_NORMAL, 0XC0 , { 8 , 64 , 63 , 115 }},
{STYLE_CLOSE, 0XC3 , { 800 , 302 , 885 , 364 }},
{STYLE_NORMAL, 0XDB , { 709 , 123 , 764 , 175 }},
{STYLE_NORMAL, 0XDC , { 831 , 123 , 886 , 175 }},
{STYLE_NORMAL, 0XDD , { 771 , 123 , 826 , 175 }},
{STYLE_NORMAL, 0XDE , { 725 , 183 , 780 , 235 }},
{STYLE_NORMAL, 0x2D , { 831 , 22 , 886 , 57 }},
};
UINT8 mKeyConvertionTable[][4] = {
//
// WinKey, ScanCode, Unicode, Shift,
//
{0x08, SCAN_NULL, 0x08, 0x08}, // VK_BACK
{0x09, SCAN_NULL, 0x09, 0x09}, // VK_TAB
{0x0d, SCAN_NULL, 0x0d, 0x0d}, // VK_RETURN
{0x14, SCAN_NULL, 0x00, 0x00}, // VK_CAPITAL
{0x1b, SCAN_ESC, 0x00, 0x00}, // VK_ESC
{0x20, SCAN_NULL, ' ', ' '}, // VK_SPACE
{0x25, SCAN_LEFT, 0x00, 0x00}, // VK_LEFT
{0x26, SCAN_UP, 0x00, 0x00}, // VK_UP
{0x27, SCAN_RIGHT, 0x00, 0x00}, // VK_RIGHTT
{0x28, SCAN_DOWN, 0x00, 0x00}, // VK_DOWN
{0x2d, SCAN_INSERT, 0x00, 0x00}, // VK_INSERT
{0x2e, SCAN_DELETE, 0x00, 0x00}, // VK_DELETETE
{0x30, SCAN_NULL, '0', ')'}, // 0
{0x31, SCAN_NULL, '1', '!'}, // 1
{0x32, SCAN_NULL, '2', '@'}, // 2
{0x33, SCAN_NULL, '3', '#'}, // 3
{0x34, SCAN_NULL, '4', '$'}, // 4
{0x35, SCAN_NULL, '5', '%'}, // 5
{0x36, SCAN_NULL, '6', '^'}, // 6
{0x37, SCAN_NULL, '7', '&'}, // 7
{0x38, SCAN_NULL, '8', '*'}, // 8
{0x39, SCAN_NULL, '9', '('}, // 9
{0x41, SCAN_NULL, 'a', 'A'}, // A
{0x42, SCAN_NULL, 'b', 'B'}, // B
{0x43, SCAN_NULL, 'c', 'C'}, // C
{0x44, SCAN_NULL, 'd', 'D'}, // D
{0x45, SCAN_NULL, 'e', 'E'}, // E
{0x46, SCAN_NULL, 'f', 'F'}, // F
{0x47, SCAN_NULL, 'g', 'G'}, // G
{0x48, SCAN_NULL, 'h', 'H'}, // H
{0x49, SCAN_NULL, 'i', 'I'}, // I
{0x4a, SCAN_NULL, 'j', 'J'}, // J
{0x4b, SCAN_NULL, 'k', 'K'}, // K
{0x4c, SCAN_NULL, 'l', 'L'}, // L
{0x4d, SCAN_NULL, 'm', 'M'}, // M
{0x4e, SCAN_NULL, 'n', 'N'}, // N
{0x4f, SCAN_NULL, 'o', 'O'}, // O
{0x50, SCAN_NULL, 'p', 'P'}, // P
{0x51, SCAN_NULL, 'q', 'Q'}, // Q
{0x52, SCAN_NULL, 'r', 'R'}, // R
{0x53, SCAN_NULL, 's', 'S'}, // S
{0x54, SCAN_NULL, 't', 'T'}, // T
{0x55, SCAN_NULL, 'u', 'U'}, // U
{0x56, SCAN_NULL, 'v', 'V'}, // V
{0x57, SCAN_NULL, 'w', 'W'}, // W
{0x58, SCAN_NULL, 'x', 'X'}, // X
{0x59, SCAN_NULL, 'y', 'Y'}, // Y
{0x5a, SCAN_NULL, 'z', 'Z'}, // Z
{0x5b, SCAN_NULL, 0x00, 0x00}, // VK_LWIN
{0x5d, SCAN_NULL, 0x00, 0x00}, // VK_APP
{0xa0, SCAN_NULL, 0x00, 0x00}, // VK_LSHIFT
{0xa1, SCAN_NULL, 0x00, 0x00}, // VK_RSHIFT
{0xa2, SCAN_NULL, 0x00, 0x00}, // VK_LCONTROL
{0xa3, SCAN_NULL, 0x00, 0x00}, // VK_DstRcONTROL
{0xa4, SCAN_NULL, 0x00, 0x00}, // VK_LMENU
{0xa5, SCAN_NULL, 0x00, 0x00}, // VK_RMENU
{0xba, SCAN_NULL, ';', ':'}, // VK_OEM_1 ';:' for US
{0xbb, SCAN_NULL, '=', '+'}, // VK_OEM_PLUS '+' any country
{0xbc, SCAN_NULL, ',', '<'}, // VK_OEM_COMMA ',' any country
{0xbd, SCAN_NULL, '-', '_'}, // VK_OEM_MINUS '-' any country
{0xbe, SCAN_NULL, '.', '>'}, // VK_OEM_PERIOD '.' any country
{0xbf, SCAN_NULL, '/', '?'}, // VK_OEM_2 '/?' for US
{0xc0, SCAN_NULL, '`', '~'}, // VK_OEM_3 '`~' for US
{0xc3, SCAN_NULL, 0x00, 0x00}, // close
{0xdb, SCAN_NULL, '[', '{'}, // VK_OEM_4 '[{' for US
{0xdc, SCAN_NULL, '\\', '|'}, // VK_OEM_5 '\|' for US
{0xdd, SCAN_NULL, ']', '}'}, // VK_OEM_6 ']}' for US
{0xde, SCAN_NULL, '\'', '"'}, // VK_OEM_7 ''"' for US
{0xe8, SCAN_NULL, 0x00, 0x00}, // Fn
{0x70, SCAN_F1, CHAR_NULL, 0x00}, // VK_F1
{0x71, SCAN_F2, CHAR_NULL, 0x00}, // VK_F2
{0x72, SCAN_F3, CHAR_NULL, 0x00}, // VK_F3
{0x73, SCAN_F4, CHAR_NULL, 0x00}, // VK_F4
{0x74, SCAN_F5, CHAR_NULL, 0x00}, // VK_F5
{0x75, SCAN_F6, CHAR_NULL, 0x00}, // VK_F6
{0x76, SCAN_F7, CHAR_NULL, 0x00}, // VK_F7
{0x77, SCAN_F8, CHAR_NULL, 0x00}, // VK_F8
{0x78, SCAN_F9, CHAR_NULL, 0x00}, // VK_F9
{0x79, SCAN_F10, CHAR_NULL, 0x00}, // VK_F10
{0x7a, SCAN_F11, CHAR_NULL, 0x00}, // VK_F11
{0x7b, SCAN_F12, CHAR_NULL, 0x00}, // VK_F12
};
KEY_MAP_STR mConvertWinKeyToStr[] = {
{VK_ESCAPE, L"Esc"},
{VK_LCONTROL, L"Ctrl" },
{VK_RCONTROL, L"Ctrl" },
{VK_LMENU, L"Alt" },
{VK_RMENU, L"Alt" },
{VK_DELETE, L"Del" },
{VK_UP, L"^"},
{VK_DOWN, L"v"},
{VK_LEFT, L"<"},
{VK_RIGHT, L">"},
{VK_LWIN, L"Win"},
{VK_RWIN, L"Win"},
{VK_APPS, L"App"},
{VK_F1, L"F1"},
{VK_F2, L"F2"},
{VK_F3, L"F3"},
{VK_F4, L"F4"},
{VK_F5, L"F5"},
{VK_F6, L"F6"},
{VK_F7, L"F7"},
{VK_F8, L"F8"},
{VK_F9, L"F9"},
{VK_F10, L"F10"},
{VK_F11, L"F11"},
{VK_F12, L"F12"},
{0xE8, L"Fn"},
{VK_INSERT, L"Ins"},
{0, NULL},
};
KEYBOARD_LAYOUT mEnglishKeyboardLayout = {
900,
378,
0,
0,
IMAGE_TOKEN (IMAGE_KB_BACKGROUND),
{5, 5, 5, 5},
sizeof (mEnglishEntryList) / sizeof (mEnglishEntryList[0]),
mEnglishEntryList,
sizeof (mEnglishStyleList) / sizeof (mEnglishStyleList[0]),
mEnglishStyleList,
FixedPcdGet16 (PcdVirtualKeyboardFontSize)
};
KEYBOARD_LAYOUT *mKeyboardLayoutList[] = {
&mEnglishKeyboardLayout,
NULL,
};
UINTN mKeyboardLayoutCount = sizeof (mKeyboardLayoutList) / sizeof (mKeyboardLayoutList[0]);
UINT16 mKeyConvertionTableNumber = sizeof (mKeyConvertionTable) / sizeof (mKeyConvertionTable[0]);