]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Usb/UsbKbDxe/KeyBoard.h
Install default keyboard layout package in USB keyboard driver.
[mirror_edk2.git] / MdeModulePkg / Bus / Usb / UsbKbDxe / KeyBoard.h
index 60ebee1daafcf47ccd374e80077238919d0a0a64..6463fab444e5448350b529c4990d8ef4ca94a25f 100644 (file)
@@ -18,6 +18,48 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 \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