/** @file\r
-Copyright (c) 2004 - 2007, Intel Corporation\r
+Copyright (c) 2004 - 2008, Intel Corporation\r
All rights reserved. This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
which accompanies this distribution. The full text of the license may be found at\r
\r
#include <Protocol/SimpleTextIn.h>\r
#include <Protocol/SimpleTextInEx.h>\r
-#include <Guid/HotPlugDevice.h>\r
+#include <Protocol/HiiDatabase.h>\r
#include <Protocol/UsbIo.h>\r
#include <Protocol/DevicePath.h>\r
+#include <Guid/HiiKeyBoardLayout.h>\r
+#include <Guid/HotPlugDevice.h>\r
\r
#include <Library/DebugLib.h>\r
#include <Library/ReportStatusCodeLib.h>\r
EFI_KEY_NOTIFY_FUNCTION KeyNotificationFn;\r
LIST_ENTRY NotifyEntry;\r
} KEYBOARD_CONSOLE_IN_EX_NOTIFY;\r
+\r
+#define USB_NS_KEY_SIGNATURE EFI_SIGNATURE_32 ('u', 'n', 's', 'k')\r
+\r
+typedef struct {\r
+ UINTN Signature;\r
+ LIST_ENTRY Link;\r
+\r
+ //\r
+ // The number of EFI_NS_KEY_MODIFIER children definitions\r
+ //\r
+ UINTN KeyCount;\r
+\r
+ //\r
+ // NsKey[0] : Non-spacing key\r
+ // NsKey[1] ~ NsKey[KeyCount] : Physical keys\r
+ //\r
+ EFI_KEY_DESCRIPTOR *NsKey;\r
+} USB_NS_KEY;\r
+\r
+#define USB_NS_KEY_FORM_FROM_LINK(a) CR (a, USB_NS_KEY, Link, USB_NS_KEY_SIGNATURE)\r
+\r
typedef struct {\r
UINTN Signature;\r
EFI_DEVICE_PATH_PROTOCOL *DevicePath;\r
UINT8 RightLogoOn; \r
UINT8 MenuKeyOn;\r
UINT8 SysReqOn;\r
+ UINT8 AltGrOn;\r
\r
EFI_KEY_STATE KeyState;\r
//\r
// Notification function list\r
//\r
LIST_ENTRY NotifyList;\r
+\r
+ //\r
+ // Non-spacing key list\r
+ //\r
+ LIST_ENTRY NsKeyList;\r
+ USB_NS_KEY *CurrentNsKey;\r
+ EFI_KEY_DESCRIPTOR *KeyConvertionTable;\r
+ EFI_EVENT KeyboardLayoutEvent;\r
} USB_KB_DEV;\r
\r
//\r
UINT8 Key;\r
} KB_MODIFIER;\r
\r
-#define USB_KEYCODE_MAX_MAKE 0x7E\r
+#define USB_KEYCODE_MAX_MAKE 0x62\r
\r
#define USBKBD_VALID_KEYCODE(key) ((UINT8) (key) > 3)\r
\r