\r
#include "EfiKey.h"\r
\r
+#define USB_KEYBOARD_LAYOUT_PACKAGE_GUID \\r
+ { \\r
+ 0xc0f3b43, 0x44de, 0x4907, { 0xb4, 0x78, 0x22, 0x5f, 0x6f, 0x62, 0x89, 0xdc } \\r
+ }\r
+\r
+#define USB_KEYBOARD_LAYOUT_KEY_GUID \\r
+ { \\r
+ 0x3a4d7a7c, 0x18a, 0x4b42, { 0x81, 0xb3, 0xdc, 0x10, 0xe3, 0xb5, 0x91, 0xbd } \\r
+ }\r
+\r
+#define USB_KEYBOARD_KEY_COUNT 104\r
+\r
+#define USB_KEYBOARD_LANGUAGE_STR_LEN 5 // RFC4646 Language Code: "en-US"\r
+#define USB_KEYBOARD_DESCRIPTION_STR_LEN (16 + 1) // Description: "English Keyboard"\r
+\r
+#pragma pack (1)\r
+typedef struct {\r
+ //\r
+ // This 4-bytes total array length is required by PreparePackageList()\r
+ //\r
+ UINT32 Length;\r
+\r
+ //\r
+ // Keyboard Layout package definition\r
+ //\r
+ EFI_HII_PACKAGE_HEADER PackageHeader;\r
+ UINT16 LayoutCount;\r
+\r
+ //\r
+ // EFI_HII_KEYBOARD_LAYOUT\r
+ //\r
+ UINT16 LayoutLength;\r
+ EFI_GUID Guid;\r
+ UINT32 LayoutDescriptorStringOffset;\r
+ UINT8 DescriptorCount;\r
+ EFI_KEY_DESCRIPTOR KeyDescriptor[USB_KEYBOARD_KEY_COUNT];\r
+ UINT16 DescriptionCount;\r
+ CHAR16 Language[USB_KEYBOARD_LANGUAGE_STR_LEN];\r
+ CHAR16 Space;\r
+ CHAR16 DescriptionString[USB_KEYBOARD_DESCRIPTION_STR_LEN];\r
+} USB_KEYBOARD_LAYOUT_PACK_BIN;\r
+#pragma pack()\r
/**\r
Uses USB I/O to check whether the device is a USB keyboard device.\r
\r