2 This file defines the encoding for the VFR (Visual Form Representation) language.
3 IFR is primarily consumed by the EFI presentation engine, and produced by EFI
4 internal application and drivers as well as all add-in card option-ROM drivers
6 Copyright (c) 2006 - 2008, Intel Corporation
7 All rights reserved. This program and the accompanying materials
8 are licensed and made available under the terms and conditions of the BSD License
9 which accompanies this distribution. The full text of the license may be found at
10 http://opensource.org/licenses/bsd-license.php
12 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
13 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
15 @par Revision Reference:
16 These definitions are from UEFI2.1.
20 #ifndef __UEFI_INTERNAL_FORMREPRESENTATION_H__
21 #define __UEFI_INTERNAL_FORMREPRESENTATION_H__
24 /// The following types are currently defined:
26 typedef VOID
* EFI_HII_HANDLE
;
27 typedef CHAR16
* EFI_STRING
;
28 typedef UINT16 EFI_IMAGE_ID
;
29 typedef UINT16 EFI_QUESTION_ID
;
30 typedef UINT16 EFI_STRING_ID
;
31 typedef UINT16 EFI_FORM_ID
;
32 typedef UINT16 EFI_VARSTORE_ID
;
34 typedef UINT16 EFI_DEFAULT_ID
;
36 typedef UINT32 EFI_HII_FONT_STYLE
;
43 // Definitions for Package Lists and Package Headers
48 /// The header found at the start of each package list.
51 EFI_GUID PackageListGuid
;
53 } EFI_HII_PACKAGE_LIST_HEADER
;
56 /// The header found at the start of each package.
62 } EFI_HII_PACKAGE_HEADER
;
65 // Value of HII package type
67 #define EFI_HII_PACKAGE_TYPE_ALL 0x00
68 #define EFI_HII_PACKAGE_TYPE_GUID 0x01
69 #define EFI_HII_PACKAGE_FORMS 0x02
70 #define EFI_HII_PACKAGE_STRINGS 0x04
71 #define EFI_HII_PACKAGE_FONTS 0x05
72 #define EFI_HII_PACKAGE_IMAGES 0x06
73 #define EFI_HII_PACKAGE_SIMPLE_FONTS 0x07
74 #define EFI_HII_PACKAGE_DEVICE_PATH 0x08
75 #define EFI_HII_PACKAGE_KEYBOARD_LAYOUT 0x09
76 #define EFI_HII_PACKAGE_END 0xDF
77 #define EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN 0xE0
78 #define EFI_HII_PACKAGE_TYPE_SYSTEM_END 0xFF
81 // Definitions for Simplified Font Package
86 // Contents of EFI_NARROW_GLYPH.Attributes
88 #define EFI_GLYPH_NON_SPACING 0x01
89 #define EFI_GLYPH_WIDE 0x02
90 #define EFI_GLYPH_HEIGHT 19
91 #define EFI_GLYPH_WIDTH 8
96 UINT8 GlyphCol1
[EFI_GLYPH_HEIGHT
];
100 CHAR16 UnicodeWeight
;
102 UINT8 GlyphCol1
[EFI_GLYPH_HEIGHT
];
103 UINT8 GlyphCol2
[EFI_GLYPH_HEIGHT
];
108 /// A simplified font package consists of a font header
109 /// followed by a series of glyph structures.
111 typedef struct _EFI_HII_SIMPLE_FONT_PACKAGE_HDR
{
112 EFI_HII_PACKAGE_HEADER Header
;
113 UINT16 NumberOfNarrowGlyphs
;
114 UINT16 NumberOfWideGlyphs
;
115 // EFI_NARROW_GLYPH NarrowGlyphs[];
116 // EFI_WIDE_GLYPH WideGlyphs[];
117 } EFI_HII_SIMPLE_FONT_PACKAGE_HDR
;
120 // Definitions for Font Package
125 // Value for font style
127 #define EFI_HII_FONT_STYLE_NORMAL 0x00000000
128 #define EFI_HII_FONT_STYLE_BOLD 0x00000001
129 #define EFI_HII_FONT_STYLE_ITALIC 0x00000002
130 #define EFI_HII_FONT_STYLE_EMBOSS 0x00010000
131 #define EFI_HII_FONT_STYLE_OUTLINE 0x00020000
132 #define EFI_HII_FONT_STYLE_SHADOW 0x00040000
133 #define EFI_HII_FONT_STYLE_UNDERLINE 0x00080000
134 #define EFI_HII_FONT_STYLE_DBL_UNDER 0x00100000
136 typedef struct _EFI_HII_GLYPH_INFO
{
142 } EFI_HII_GLYPH_INFO
;
145 /// The fixed header consists of a standard record header and
146 /// then the character values in this section, the flags
147 /// (including the encoding method) and the offsets of the glyph
148 /// information, the glyph bitmaps and the character map.
150 typedef struct _EFI_HII_FONT_PACKAGE_HDR
{
151 EFI_HII_PACKAGE_HEADER Header
;
153 UINT32 GlyphBlockOffset
;
154 EFI_HII_GLYPH_INFO Cell
;
155 EFI_HII_FONT_STYLE FontStyle
;
156 CHAR16 FontFamily
[1];
157 } EFI_HII_FONT_PACKAGE_HDR
;
160 // Value of different glyph info block types
162 #define EFI_HII_GIBT_END 0x00
163 #define EFI_HII_GIBT_GLYPH 0x10
164 #define EFI_HII_GIBT_GLYPHS 0x11
165 #define EFI_HII_GIBT_GLYPH_DEFAULT 0x12
166 #define EFI_HII_GIBT_GLYPHS_DEFAULT 0x13
167 #define EFI_HII_GIBT_DUPLICATE 0x20
168 #define EFI_HII_GIBT_SKIP2 0x21
169 #define EFI_HII_GIBT_SKIP1 0x22
170 #define EFI_HII_GIBT_DEFAULTS 0x23
171 #define EFI_HII_GIBT_EXT1 0x30
172 #define EFI_HII_GIBT_EXT2 0x31
173 #define EFI_HII_GIBT_EXT4 0x32
175 typedef struct _EFI_HII_GLYPH_BLOCK
{
177 } EFI_HII_GLYPH_BLOCK
;
180 // Definition of different glyph info block types
183 typedef struct _EFI_HII_GIBT_DEFAULTS_BLOCK
{
184 EFI_HII_GLYPH_BLOCK Header
;
185 EFI_HII_GLYPH_INFO Cell
;
186 } EFI_HII_GIBT_DEFAULTS_BLOCK
;
188 typedef struct _EFI_HII_GIBT_DUPLICATE_BLOCK
{
189 EFI_HII_GLYPH_BLOCK Header
;
191 } EFI_HII_GIBT_DUPLICATE_BLOCK
;
193 typedef struct _EFI_GLYPH_GIBT_END_BLOCK
{
194 EFI_HII_GLYPH_BLOCK Header
;
195 } EFI_GLYPH_GIBT_END_BLOCK
;
197 typedef struct _EFI_HII_GIBT_EXT1_BLOCK
{
198 EFI_HII_GLYPH_BLOCK Header
;
201 } EFI_HII_GIBT_EXT1_BLOCK
;
203 typedef struct _EFI_HII_GIBT_EXT2_BLOCK
{
204 EFI_HII_GLYPH_BLOCK Header
;
207 } EFI_HII_GIBT_EXT2_BLOCK
;
209 typedef struct _EFI_HII_GIBT_EXT4_BLOCK
{
210 EFI_HII_GLYPH_BLOCK Header
;
213 } EFI_HII_GIBT_EXT4_BLOCK
;
215 typedef struct _EFI_HII_GIBT_GLYPH_BLOCK
{
216 EFI_HII_GLYPH_BLOCK Header
;
217 EFI_HII_GLYPH_INFO Cell
;
219 } EFI_HII_GIBT_GLYPH_BLOCK
;
221 typedef struct _EFI_HII_GIBT_GLYPHS_BLOCK
{
222 EFI_HII_GLYPH_BLOCK Header
;
223 EFI_HII_GLYPH_INFO Cell
;
226 } EFI_HII_GIBT_GLYPHS_BLOCK
;
228 typedef struct _EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK
{
229 EFI_HII_GLYPH_BLOCK Header
;
231 } EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK
;
233 typedef struct _EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK
{
234 EFI_HII_GLYPH_BLOCK Header
;
237 } EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK
;
239 typedef struct _EFI_HII_GIBT_SKIP1_BLOCK
{
240 EFI_HII_GLYPH_BLOCK Header
;
242 } EFI_HII_GIBT_SKIP1_BLOCK
;
244 typedef struct _EFI_HII_GIBT_SKIP2_BLOCK
{
245 EFI_HII_GLYPH_BLOCK Header
;
247 } EFI_HII_GIBT_SKIP2_BLOCK
;
250 // Definitions for Device Path Package
255 /// The device path package is used to carry a device path
256 /// associated with the package list.
258 typedef struct _EFI_HII_DEVICE_PATH_PACKAGE
{
259 EFI_HII_PACKAGE_HEADER Header
;
260 // EFI_DEVICE_PATH_PROTOCOL DevicePath[];
261 } EFI_HII_DEVICE_PATH_PACKAGE
;
264 // Definitions for GUID Package
269 /// The GUID package is used to carry data where the format is defined by a GUID.
271 typedef struct _EFI_HII_GUID_PACKAGE_HDR
{
272 EFI_HII_PACKAGE_HEADER Header
;
274 // Data per GUID definition may follow
275 } EFI_HII_GUID_PACKAGE_HDR
;
278 // Definitions for String Package
282 #define UEFI_CONFIG_LANG L"x-UEFI"
283 #define UEFI_CONFIG_LANG2 L"x-i-UEFI"
286 /// The fixed header consists of a standard record header and then the string identifiers
287 /// contained in this section and the offsets of the string and language information.
289 typedef struct _EFI_HII_STRING_PACKAGE_HDR
{
290 EFI_HII_PACKAGE_HEADER Header
;
292 UINT32 StringInfoOffset
;
293 CHAR16 LanguageWindow
[16];
294 EFI_STRING_ID LanguageName
;
296 } EFI_HII_STRING_PACKAGE_HDR
;
300 } EFI_HII_STRING_BLOCK
;
303 // Value of different string information block types
305 #define EFI_HII_SIBT_END 0x00
306 #define EFI_HII_SIBT_STRING_SCSU 0x10
307 #define EFI_HII_SIBT_STRING_SCSU_FONT 0x11
308 #define EFI_HII_SIBT_STRINGS_SCSU 0x12
309 #define EFI_HII_SIBT_STRINGS_SCSU_FONT 0x13
310 #define EFI_HII_SIBT_STRING_UCS2 0x14
311 #define EFI_HII_SIBT_STRING_UCS2_FONT 0x15
312 #define EFI_HII_SIBT_STRINGS_UCS2 0x16
313 #define EFI_HII_SIBT_STRINGS_UCS2_FONT 0x17
314 #define EFI_HII_SIBT_DUPLICATE 0x20
315 #define EFI_HII_SIBT_SKIP2 0x21
316 #define EFI_HII_SIBT_SKIP1 0x22
317 #define EFI_HII_SIBT_EXT1 0x30
318 #define EFI_HII_SIBT_EXT2 0x31
319 #define EFI_HII_SIBT_EXT4 0x32
320 #define EFI_HII_SIBT_FONT 0x40
323 // Definition of different string information block types
326 typedef struct _EFI_HII_SIBT_DUPLICATE_BLOCK
{
327 EFI_HII_STRING_BLOCK Header
;
328 EFI_STRING_ID StringId
;
329 } EFI_HII_SIBT_DUPLICATE_BLOCK
;
331 typedef struct _EFI_HII_SIBT_END_BLOCK
{
332 EFI_HII_STRING_BLOCK Header
;
333 } EFI_HII_SIBT_END_BLOCK
;
335 typedef struct _EFI_HII_SIBT_EXT1_BLOCK
{
336 EFI_HII_STRING_BLOCK Header
;
339 } EFI_HII_SIBT_EXT1_BLOCK
;
341 typedef struct _EFI_HII_SIBT_EXT2_BLOCK
{
342 EFI_HII_STRING_BLOCK Header
;
345 } EFI_HII_SIBT_EXT2_BLOCK
;
347 typedef struct _EFI_HII_SIBT_EXT4_BLOCK
{
348 EFI_HII_STRING_BLOCK Header
;
351 } EFI_HII_SIBT_EXT4_BLOCK
;
353 typedef struct _EFI_HII_SIBT_FONT_BLOCK
{
354 EFI_HII_SIBT_EXT2_BLOCK Header
;
357 EFI_HII_FONT_STYLE FontStyle
;
359 } EFI_HII_SIBT_FONT_BLOCK
;
361 typedef struct _EFI_HII_SIBT_SKIP1_BLOCK
{
362 EFI_HII_STRING_BLOCK Header
;
364 } EFI_HII_SIBT_SKIP1_BLOCK
;
366 typedef struct _EFI_HII_SIBT_SKIP2_BLOCK
{
367 EFI_HII_STRING_BLOCK Header
;
369 } EFI_HII_SIBT_SKIP2_BLOCK
;
371 typedef struct _EFI_HII_SIBT_STRING_SCSU_BLOCK
{
372 EFI_HII_STRING_BLOCK Header
;
374 } EFI_HII_SIBT_STRING_SCSU_BLOCK
;
376 typedef struct _EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK
{
377 EFI_HII_STRING_BLOCK Header
;
378 UINT8 FontIdentifier
;
380 } EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK
;
382 typedef struct _EFI_HII_SIBT_STRINGS_SCSU_BLOCK
{
383 EFI_HII_STRING_BLOCK Header
;
386 } EFI_HII_SIBT_STRINGS_SCSU_BLOCK
;
388 typedef struct _EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK
{
389 EFI_HII_STRING_BLOCK Header
;
390 UINT8 FontIdentifier
;
393 } EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK
;
395 typedef struct _EFI_HII_SIBT_STRING_UCS2_BLOCK
{
396 EFI_HII_STRING_BLOCK Header
;
397 CHAR16 StringText
[1];
398 } EFI_HII_SIBT_STRING_UCS2_BLOCK
;
400 typedef struct _EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK
{
401 EFI_HII_STRING_BLOCK Header
;
402 UINT8 FontIdentifier
;
403 CHAR16 StringText
[1];
404 } EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK
;
406 typedef struct _EFI_HII_SIBT_STRINGS_UCS2_BLOCK
{
407 EFI_HII_STRING_BLOCK Header
;
409 CHAR16 StringText
[1];
410 } EFI_HII_SIBT_STRINGS_UCS2_BLOCK
;
412 typedef struct _EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK
{
413 EFI_HII_STRING_BLOCK Header
;
414 UINT8 FontIdentifier
;
416 CHAR16 StringText
[1];
417 } EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK
;
420 // Definitions for Image Package
424 typedef struct _EFI_HII_IMAGE_PACKAGE_HDR
{
425 EFI_HII_PACKAGE_HEADER Header
;
426 UINT32 ImageInfoOffset
;
427 UINT32 PaletteInfoOffset
;
428 } EFI_HII_IMAGE_PACKAGE_HDR
;
430 typedef struct _EFI_HII_IMAGE_BLOCK
{
432 } EFI_HII_IMAGE_BLOCK
;
435 // Value of different image information block types
437 #define EFI_HII_IIBT_END 0x00
438 #define EFI_HII_IIBT_IMAGE_1BIT 0x10
439 #define EFI_HII_IIBT_IMAGE_1BIT_TRANS 0x11
440 #define EFI_HII_IIBT_IMAGE_4BIT 0x12
441 #define EFI_HII_IIBT_IMAGE_4BIT_TRANS 0x13
442 #define EFI_HII_IIBT_IMAGE_8BIT 0x14
443 #define EFI_HII_IIBT_IMAGE_8BIT_TRANS 0x15
444 #define EFI_HII_IIBT_IMAGE_24BIT 0x16
445 #define EFI_HII_IIBT_IMAGE_24BIT_TRANS 0x17
446 #define EFI_HII_IIBT_IMAGE_JPEG 0x18
447 #define EFI_HII_IIBT_DUPLICATE 0x20
448 #define EFI_HII_IIBT_SKIP2 0x21
449 #define EFI_HII_IIBT_SKIP1 0x22
450 #define EFI_HII_IIBT_EXT1 0x30
451 #define EFI_HII_IIBT_EXT2 0x31
452 #define EFI_HII_IIBT_EXT4 0x32
455 // Definition of different image information block types
458 typedef struct _EFI_HII_IIBT_END_BLOCK
{
459 EFI_HII_IMAGE_BLOCK Header
;
460 } EFI_HII_IIBT_END_BLOCK
;
462 typedef struct _EFI_HII_IIBT_EXT1_BLOCK
{
463 EFI_HII_IMAGE_BLOCK Header
;
466 } EFI_HII_IIBT_EXT1_BLOCK
;
468 typedef struct _EFI_HII_IIBT_EXT2_BLOCK
{
469 EFI_HII_IMAGE_BLOCK Header
;
472 } EFI_HII_IIBT_EXT2_BLOCK
;
474 typedef struct _EFI_HII_IIBT_EXT4_BLOCK
{
475 EFI_HII_IMAGE_BLOCK Header
;
478 } EFI_HII_IIBT_EXT4_BLOCK
;
480 typedef struct _EFI_HII_IIBT_IMAGE_1BIT_BASE
{
484 } EFI_HII_IIBT_IMAGE_1BIT_BASE
;
486 typedef struct _EFI_HII_IIBT_IMAGE_1BIT_BLOCK
{
487 EFI_HII_IMAGE_BLOCK Header
;
489 EFI_HII_IIBT_IMAGE_1BIT_BASE Bitmap
;
490 } EFI_HII_IIBT_IMAGE_1BIT_BLOCK
;
492 typedef struct _EFI_HII_IIBT_IMAGE_1BIT_TRANS_BLOCK
{
493 EFI_HII_IMAGE_BLOCK Header
;
495 EFI_HII_IIBT_IMAGE_1BIT_BASE Bitmap
;
496 } EFI_HII_IIBT_IMAGE_1BIT_TRANS_BLOCK
;
498 typedef struct _EFI_HII_RGB_PIXEL
{
504 typedef struct _EFI_HII_IIBT_IMAGE_24BIT_BASE
{
507 EFI_HII_RGB_PIXEL Bitmap
[1];
508 } EFI_HII_IIBT_IMAGE_24BIT_BASE
;
510 typedef struct _EFI_HII_IIBT_IMAGE_24BIT_BLOCK
{
511 EFI_HII_IMAGE_BLOCK Header
;
512 EFI_HII_IIBT_IMAGE_24BIT_BASE Bitmap
;
513 } EFI_HII_IIBT_IMAGE_24BIT_BLOCK
;
515 typedef struct _EFI_HII_IIBT_IMAGE_24BIT_TRANS_BLOCK
{
516 EFI_HII_IMAGE_BLOCK Header
;
517 EFI_HII_IIBT_IMAGE_24BIT_BASE Bitmap
;
518 } EFI_HII_IIBT_IMAGE_24BIT_TRANS_BLOCK
;
520 typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BASE
{
524 } EFI_HII_IIBT_IMAGE_4BIT_BASE
;
526 typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BLOCK
{
527 EFI_HII_IMAGE_BLOCK Header
;
529 EFI_HII_IIBT_IMAGE_4BIT_BASE Bitmap
;
530 } EFI_HII_IIBT_IMAGE_4BIT_BLOCK
;
532 typedef struct _EFI_HII_IIBT_IMAGE_4BIT_TRANS_BLOCK
{
533 EFI_HII_IMAGE_BLOCK Header
;
535 EFI_HII_IIBT_IMAGE_4BIT_BASE Bitmap
;
536 } EFI_HII_IIBT_IMAGE_4BIT_TRANS_BLOCK
;
538 typedef struct _EFI_HII_IIBT_IMAGE_8BIT_BASE
{
542 } EFI_HII_IIBT_IMAGE_8BIT_BASE
;
544 typedef struct _EFI_HII_IIBT_IMAGE_8BIT_PALETTE_BLOCK
{
545 EFI_HII_IMAGE_BLOCK Header
;
547 EFI_HII_IIBT_IMAGE_8BIT_BASE Bitmap
;
548 } EFI_HII_IIBT_IMAGE_8BIT_BLOCK
;
550 typedef struct _EFI_HII_IIBT_IMAGE_8BIT_TRANS_BLOCK
{
551 EFI_HII_IMAGE_BLOCK Header
;
553 EFI_HII_IIBT_IMAGE_8BIT_BASE Bitmap
;
554 } EFI_HII_IIBT_IMAGE_8BIT_TRAN_BLOCK
;
556 typedef struct _EFI_HII_IIBT_DUPLICATE_BLOCK
{
557 EFI_HII_IMAGE_BLOCK Header
;
558 EFI_IMAGE_ID ImageId
;
559 } EFI_HII_IIBT_DUPLICATE_BLOCK
;
561 typedef struct _EFI_HII_IIBT_JPEG_BLOCK
{
562 EFI_HII_IMAGE_BLOCK Header
;
565 } EFI_HII_IIBT_JPEG_BLOCK
;
567 typedef struct _EFI_HII_IIBT_SKIP1_BLOCK
{
568 EFI_HII_IMAGE_BLOCK Header
;
570 } EFI_HII_IIBT_SKIP1_BLOCK
;
572 typedef struct _EFI_HII_IIBT_SKIP2_BLOCK
{
573 EFI_HII_IMAGE_BLOCK Header
;
575 } EFI_HII_IIBT_SKIP2_BLOCK
;
578 // Definitions for Palette Information
581 typedef struct _EFI_HII_IMAGE_PALETTE_INFO_HEADER
{
583 } EFI_HII_IMAGE_PALETTE_INFO_HEADER
;
585 typedef struct _EFI_HII_IMAGE_PALETTE_INFO
{
587 EFI_HII_RGB_PIXEL PaletteValue
[1];
588 } EFI_HII_IMAGE_PALETTE_INFO
;
591 // Definitions for Forms Package
596 /// The Forms package is used to carry forms-based encoding data.
598 typedef struct _EFI_HII_FORM_PACKAGE
{
599 EFI_HII_PACKAGE_HEADER Header
;
600 // EFI_IFR_OP_HEADER OpCodeHeader;
601 // More op-codes follow
602 } EFI_HII_FORM_PACKAGE
;
624 EFI_STRING_ID string
;
625 } EFI_IFR_TYPE_VALUE
;
630 #define EFI_IFR_FORM_OP 0x01
631 #define EFI_IFR_SUBTITLE_OP 0x02
632 #define EFI_IFR_TEXT_OP 0x03
633 #define EFI_IFR_IMAGE_OP 0x04
634 #define EFI_IFR_ONE_OF_OP 0x05
635 #define EFI_IFR_CHECKBOX_OP 0x06
636 #define EFI_IFR_NUMERIC_OP 0x07
637 #define EFI_IFR_PASSWORD_OP 0x08
638 #define EFI_IFR_ONE_OF_OPTION_OP 0x09
639 #define EFI_IFR_SUPPRESS_IF_OP 0x0A
640 #define EFI_IFR_LOCKED_OP 0x0B
641 #define EFI_IFR_ACTION_OP 0x0C
642 #define EFI_IFR_RESET_BUTTON_OP 0x0D
643 #define EFI_IFR_FORM_SET_OP 0x0E
644 #define EFI_IFR_REF_OP 0x0F
645 #define EFI_IFR_NO_SUBMIT_IF_OP 0x10
646 #define EFI_IFR_INCONSISTENT_IF_OP 0x11
647 #define EFI_IFR_EQ_ID_VAL_OP 0x12
648 #define EFI_IFR_EQ_ID_ID_OP 0x13
649 #define EFI_IFR_EQ_ID_LIST_OP 0x14
650 #define EFI_IFR_AND_OP 0x15
651 #define EFI_IFR_OR_OP 0x16
652 #define EFI_IFR_NOT_OP 0x17
653 #define EFI_IFR_RULE_OP 0x18
654 #define EFI_IFR_GRAY_OUT_IF_OP 0x19
655 #define EFI_IFR_DATE_OP 0x1A
656 #define EFI_IFR_TIME_OP 0x1B
657 #define EFI_IFR_STRING_OP 0x1C
658 #define EFI_IFR_REFRESH_OP 0x1D
659 #define EFI_IFR_DISABLE_IF_OP 0x1E
660 #define EFI_IFR_TO_LOWER_OP 0x20
661 #define EFI_IFR_TO_UPPER_OP 0x21
662 #define EFI_IFR_ORDERED_LIST_OP 0x23
663 #define EFI_IFR_VARSTORE_OP 0x24
664 #define EFI_IFR_VARSTORE_NAME_VALUE_OP 0x25
665 #define EFI_IFR_VARSTORE_EFI_OP 0x26
666 #define EFI_IFR_VARSTORE_DEVICE_OP 0x27
667 #define EFI_IFR_VERSION_OP 0x28
668 #define EFI_IFR_END_OP 0x29
669 #define EFI_IFR_MATCH_OP 0x2A
670 #define EFI_IFR_EQUAL_OP 0x2F
671 #define EFI_IFR_NOT_EQUAL_OP 0x30
672 #define EFI_IFR_GREATER_THAN_OP 0x31
673 #define EFI_IFR_GREATER_EQUAL_OP 0x32
674 #define EFI_IFR_LESS_THAN_OP 0x33
675 #define EFI_IFR_LESS_EQUAL_OP 0x34
676 #define EFI_IFR_BITWISE_AND_OP 0x35
677 #define EFI_IFR_BITWISE_OR_OP 0x36
678 #define EFI_IFR_BITWISE_NOT_OP 0x37
679 #define EFI_IFR_SHIFT_LEFT_OP 0x38
680 #define EFI_IFR_SHIFT_RIGHT_OP 0x39
681 #define EFI_IFR_ADD_OP 0x3A
682 #define EFI_IFR_SUBTRACT_OP 0x3B
683 #define EFI_IFR_MULTIPLY_OP 0x3C
684 #define EFI_IFR_DIVIDE_OP 0x3D
685 #define EFI_IFR_MODULO_OP 0x3E
686 #define EFI_IFR_RULE_REF_OP 0x3F
687 #define EFI_IFR_QUESTION_REF1_OP 0x40
688 #define EFI_IFR_QUESTION_REF2_OP 0x41
689 #define EFI_IFR_UINT8_OP 0x42
690 #define EFI_IFR_UINT16_OP 0x43
691 #define EFI_IFR_UINT32_OP 0x44
692 #define EFI_IFR_UINT64_OP 0x45
693 #define EFI_IFR_TRUE_OP 0x46
694 #define EFI_IFR_FALSE_OP 0x47
695 #define EFI_IFR_TO_UINT_OP 0x48
696 #define EFI_IFR_TO_STRING_OP 0x49
697 #define EFI_IFR_TO_BOOLEAN_OP 0x4A
698 #define EFI_IFR_MID_OP 0x4B
699 #define EFI_IFR_FIND_OP 0x4C
700 #define EFI_IFR_TOKEN_OP 0x4D
701 #define EFI_IFR_STRING_REF1_OP 0x4E
702 #define EFI_IFR_STRING_REF2_OP 0x4F
703 #define EFI_IFR_CONDITIONAL_OP 0x50
704 #define EFI_IFR_QUESTION_REF3_OP 0x51
705 #define EFI_IFR_ZERO_OP 0x52
706 #define EFI_IFR_ONE_OP 0x53
707 #define EFI_IFR_ONES_OP 0x54
708 #define EFI_IFR_UNDEFINED_OP 0x55
709 #define EFI_IFR_LENGTH_OP 0x56
710 #define EFI_IFR_DUP_OP 0x57
711 #define EFI_IFR_THIS_OP 0x58
712 #define EFI_IFR_SPAN_OP 0x59
713 #define EFI_IFR_VALUE_OP 0x5A
714 #define EFI_IFR_DEFAULT_OP 0x5B
715 #define EFI_IFR_DEFAULTSTORE_OP 0x5C
716 #define EFI_IFR_CATENATE_OP 0x5E
717 #define EFI_IFR_GUID_OP 0x5F
720 // Definitions of IFR Standard Headers
724 typedef struct _EFI_IFR_OP_HEADER
{
730 typedef struct _EFI_IFR_STATEMENT_HEADER
{
731 EFI_STRING_ID Prompt
;
733 } EFI_IFR_STATEMENT_HEADER
;
735 typedef struct _EFI_IFR_QUESTION_HEADER
{
736 EFI_IFR_STATEMENT_HEADER Header
;
737 EFI_QUESTION_ID QuestionId
;
738 EFI_VARSTORE_ID VarStoreId
;
740 EFI_STRING_ID VarName
;
744 } EFI_IFR_QUESTION_HEADER
;
747 // Flag values of EFI_IFR_QUESTION_HEADER
749 #define EFI_IFR_FLAG_READ_ONLY 0x01
750 #define EFI_IFR_FLAG_CALLBACK 0x04
751 #define EFI_IFR_FLAG_RESET_REQUIRED 0x10
752 #define EFI_IFR_FLAG_OPTIONS_ONLY 0x80
755 // Definition for Opcode Reference
758 typedef struct _EFI_IFR_DEFAULTSTORE
{
759 EFI_IFR_OP_HEADER Header
;
760 EFI_STRING_ID DefaultName
;
762 } EFI_IFR_DEFAULTSTORE
;
765 // Default Identifier of default store
767 #define EFI_HII_DEFAULT_CLASS_STANDARD 0x0000
768 #define EFI_HII_DEFAULT_CLASS_MANUFACTURING 0x0001
769 #define EFI_HII_DEFAULT_CLASS_SAFE 0x0002
770 #define EFI_HII_DEFAULT_CLASS_PLATFORM_BEGIN 0x4000
771 #define EFI_HII_DEFAULT_CLASS_PLATFORM_END 0x7fff
772 #define EFI_HII_DEFAULT_CLASS_HARDWARE_BEGIN 0x8000
773 #define EFI_HII_DEFAULT_CLASS_HARDWARE_END 0xbfff
774 #define EFI_HII_DEFAULT_CLASS_FIRMWARE_BEGIN 0xc000
775 #define EFI_HII_DEFAULT_CLASS_FIRMWARE_END 0xffff
777 typedef struct _EFI_IFR_VARSTORE
{
778 EFI_IFR_OP_HEADER Header
;
780 EFI_VARSTORE_ID VarStoreId
;
785 typedef struct _EFI_IFR_VARSTORE_EFI
{
786 EFI_IFR_OP_HEADER Header
;
787 EFI_VARSTORE_ID VarStoreId
;
790 } EFI_IFR_VARSTORE_EFI
;
792 typedef struct _EFI_IFR_VARSTORE_NAME_VALUE
{
793 EFI_IFR_OP_HEADER Header
;
794 EFI_VARSTORE_ID VarStoreId
;
796 } EFI_IFR_VARSTORE_NAME_VALUE
;
798 typedef struct _EFI_IFR_FORM_SET
{
799 EFI_IFR_OP_HEADER Header
;
801 EFI_STRING_ID FormSetTitle
;
805 typedef struct _EFI_IFR_END
{
806 EFI_IFR_OP_HEADER Header
;
809 typedef struct _EFI_IFR_FORM
{
810 EFI_IFR_OP_HEADER Header
;
812 EFI_STRING_ID FormTitle
;
815 typedef struct _EFI_IFR_IMAGE
{
816 EFI_IFR_OP_HEADER Header
;
820 typedef struct _EFI_IFR_LOCKED
{
821 EFI_IFR_OP_HEADER Header
;
824 typedef struct _EFI_IFR_RULE
{
825 EFI_IFR_OP_HEADER Header
;
829 typedef struct _EFI_IFR_DEFAULT
{
830 EFI_IFR_OP_HEADER Header
;
833 EFI_IFR_TYPE_VALUE Value
;
836 typedef struct _EFI_IFR_VALUE
{
837 EFI_IFR_OP_HEADER Header
;
840 typedef struct _EFI_IFR_SUBTITLE
{
841 EFI_IFR_OP_HEADER Header
;
842 EFI_IFR_STATEMENT_HEADER Statement
;
846 #define EFI_IFR_FLAGS_HORIZONTAL 0x01
848 typedef struct _EFI_IFR_CHECKBOX
{
849 EFI_IFR_OP_HEADER Header
;
850 EFI_IFR_QUESTION_HEADER Question
;
854 #define EFI_IFR_CHECKBOX_DEFAULT 0x01
855 #define EFI_IFR_CHECKBOX_DEFAULT_MFG 0x02
857 typedef struct _EFI_IFR_TEXT
{
858 EFI_IFR_OP_HEADER Header
;
859 EFI_IFR_STATEMENT_HEADER Statement
;
860 EFI_STRING_ID TextTwo
;
863 typedef struct _EFI_IFR_REF
{
864 EFI_IFR_OP_HEADER Header
;
865 EFI_IFR_QUESTION_HEADER Question
;
869 typedef struct _EFI_IFR_REF2
{
870 EFI_IFR_OP_HEADER Header
;
871 EFI_IFR_QUESTION_HEADER Question
;
873 EFI_QUESTION_ID QuestionId
;
876 typedef struct _EFI_IFR_REF3
{
877 EFI_IFR_OP_HEADER Header
;
878 EFI_IFR_QUESTION_HEADER Question
;
880 EFI_QUESTION_ID QuestionId
;
884 typedef struct _EFI_IFR_REF4
{
885 EFI_IFR_OP_HEADER Header
;
886 EFI_IFR_QUESTION_HEADER Question
;
888 EFI_QUESTION_ID QuestionId
;
890 EFI_STRING_ID DevicePath
;
893 typedef struct _EFI_IFR_RESET_BUTTON
{
894 EFI_IFR_OP_HEADER Header
;
895 EFI_IFR_QUESTION_HEADER Question
;
896 EFI_DEFAULT_ID DefaultId
;
897 } EFI_IFR_RESET_BUTTON
;
899 typedef struct _EFI_IFR_ACTION
{
900 EFI_IFR_OP_HEADER Header
;
901 EFI_IFR_QUESTION_HEADER Question
;
902 EFI_STRING_ID QuestionConfig
;
905 typedef struct _EFI_IFR_ACTION_1
{
906 EFI_IFR_OP_HEADER Header
;
907 EFI_IFR_QUESTION_HEADER Question
;
910 typedef struct _EFI_IFR_DATE
{
911 EFI_IFR_OP_HEADER Header
;
912 EFI_IFR_QUESTION_HEADER Question
;
917 // Flags that describe the behavior of the question.
919 #define EFI_QF_DATE_YEAR_SUPPRESS 0x01
920 #define EFI_QF_DATE_MONTH_SUPPRESS 0x02
921 #define EFI_QF_DATE_DAY_SUPPRESS 0x04
923 #define EFI_QF_DATE_STORAGE 0x30
924 #define QF_DATE_STORAGE_NORMAL 0x00
925 #define QF_DATE_STORAGE_TIME 0x10
926 #define QF_DATE_STORAGE_WAKEUP 0x20
951 typedef struct _EFI_IFR_NUMERIC
{
952 EFI_IFR_OP_HEADER Header
;
953 EFI_IFR_QUESTION_HEADER Question
;
955 MINMAXSTEP_DATA data
;
959 // Flags related to the numeric question
961 #define EFI_IFR_NUMERIC_SIZE 0x03
962 #define EFI_IFR_NUMERIC_SIZE_1 0x00
963 #define EFI_IFR_NUMERIC_SIZE_2 0x01
964 #define EFI_IFR_NUMERIC_SIZE_4 0x02
965 #define EFI_IFR_NUMERIC_SIZE_8 0x03
967 #define EFI_IFR_DISPLAY 0x30
968 #define EFI_IFR_DISPLAY_INT_DEC 0x00
969 #define EFI_IFR_DISPLAY_UINT_DEC 0x10
970 #define EFI_IFR_DISPLAY_UINT_HEX 0x20
972 typedef struct _EFI_IFR_ONE_OF
{
973 EFI_IFR_OP_HEADER Header
;
974 EFI_IFR_QUESTION_HEADER Question
;
976 MINMAXSTEP_DATA data
;
979 typedef struct _EFI_IFR_STRING
{
980 EFI_IFR_OP_HEADER Header
;
981 EFI_IFR_QUESTION_HEADER Question
;
987 #define EFI_IFR_STRING_MULTI_LINE 0x01
989 typedef struct _EFI_IFR_PASSWORD
{
990 EFI_IFR_OP_HEADER Header
;
991 EFI_IFR_QUESTION_HEADER Question
;
996 typedef struct _EFI_IFR_ORDERED_LIST
{
997 EFI_IFR_OP_HEADER Header
;
998 EFI_IFR_QUESTION_HEADER Question
;
1001 } EFI_IFR_ORDERED_LIST
;
1003 #define EFI_IFR_UNIQUE_SET 0x01
1004 #define EFI_IFR_NO_EMPTY_SET 0x02
1006 typedef struct _EFI_IFR_TIME
{
1007 EFI_IFR_OP_HEADER Header
;
1008 EFI_IFR_QUESTION_HEADER Question
;
1013 // A bit-mask that determines which unique settings are active for this opcode.
1015 #define QF_TIME_HOUR_SUPPRESS 0x01
1016 #define QF_TIME_MINUTE_SUPPRESS 0x02
1017 #define QF_TIME_SECOND_SUPPRESS 0x04
1019 #define QF_TIME_STORAGE 0x30
1020 #define QF_TIME_STORAGE_NORMAL 0x00
1021 #define QF_TIME_STORAGE_TIME 0x10
1022 #define QF_TIME_STORAGE_WAKEUP 0x20
1024 typedef struct _EFI_IFR_DISABLE_IF
{
1025 EFI_IFR_OP_HEADER Header
;
1026 } EFI_IFR_DISABLE_IF
;
1028 typedef struct _EFI_IFR_SUPPRESS_IF
{
1029 EFI_IFR_OP_HEADER Header
;
1030 } EFI_IFR_SUPPRESS_IF
;
1032 typedef struct _EFI_IFR_GRAY_OUT_IF
{
1033 EFI_IFR_OP_HEADER Header
;
1034 } EFI_IFR_GRAY_OUT_IF
;
1036 typedef struct _EFI_IFR_INCONSISTENT_IF
{
1037 EFI_IFR_OP_HEADER Header
;
1038 EFI_STRING_ID Error
;
1039 } EFI_IFR_INCONSISTENT_IF
;
1041 typedef struct _EFI_IFR_NO_SUBMIT_IF
{
1042 EFI_IFR_OP_HEADER Header
;
1043 EFI_STRING_ID Error
;
1044 } EFI_IFR_NO_SUBMIT_IF
;
1046 typedef struct _EFI_IFR_REFRESH
{
1047 EFI_IFR_OP_HEADER Header
;
1048 UINT8 RefreshInterval
;
1051 typedef struct _EFI_IFR_VARSTORE_DEVICE
{
1052 EFI_IFR_OP_HEADER Header
;
1053 EFI_STRING_ID DevicePath
;
1054 } EFI_IFR_VARSTORE_DEVICE
;
1056 typedef struct _EFI_IFR_ONE_OF_OPTION
{
1057 EFI_IFR_OP_HEADER Header
;
1058 EFI_STRING_ID Option
;
1061 EFI_IFR_TYPE_VALUE Value
;
1062 } EFI_IFR_ONE_OF_OPTION
;
1065 // Types of the option's value.
1067 #define EFI_IFR_TYPE_NUM_SIZE_8 0x00
1068 #define EFI_IFR_TYPE_NUM_SIZE_16 0x01
1069 #define EFI_IFR_TYPE_NUM_SIZE_32 0x02
1070 #define EFI_IFR_TYPE_NUM_SIZE_64 0x03
1071 #define EFI_IFR_TYPE_BOOLEAN 0x04
1072 #define EFI_IFR_TYPE_TIME 0x05
1073 #define EFI_IFR_TYPE_DATE 0x06
1074 #define EFI_IFR_TYPE_STRING 0x07
1075 #define EFI_IFR_TYPE_OTHER 0x08
1077 #define EFI_IFR_OPTION_DEFAULT 0x10
1078 #define EFI_IFR_OPTION_DEFAULT_MFG 0x20
1080 typedef struct _EFI_IFR_GUID
{
1081 EFI_IFR_OP_HEADER Header
;
1083 //Optional Data Follows
1086 typedef struct _EFI_IFR_DUP
{
1087 EFI_IFR_OP_HEADER Header
;
1090 typedef struct _EFI_IFR_EQ_ID_ID
{
1091 EFI_IFR_OP_HEADER Header
;
1092 EFI_QUESTION_ID QuestionId1
;
1093 EFI_QUESTION_ID QuestionId2
;
1096 typedef struct _EFI_IFR_EQ_ID_VAL
{
1097 EFI_IFR_OP_HEADER Header
;
1098 EFI_QUESTION_ID QuestionId
;
1100 } EFI_IFR_EQ_ID_VAL
;
1102 typedef struct _EFI_IFR_EQ_ID_LIST
{
1103 EFI_IFR_OP_HEADER Header
;
1104 EFI_QUESTION_ID QuestionId
;
1106 UINT16 ValueList
[1];
1107 } EFI_IFR_EQ_ID_LIST
;
1109 typedef struct _EFI_IFR_UINT8
{
1110 EFI_IFR_OP_HEADER Header
;
1114 typedef struct _EFI_IFR_UINT16
{
1115 EFI_IFR_OP_HEADER Header
;
1119 typedef struct _EFI_IFR_UINT32
{
1120 EFI_IFR_OP_HEADER Header
;
1124 typedef struct _EFI_IFR_UINT64
{
1125 EFI_IFR_OP_HEADER Header
;
1129 typedef struct _EFI_IFR_QUESTION_REF1
{
1130 EFI_IFR_OP_HEADER Header
;
1131 EFI_QUESTION_ID QuestionId
;
1132 } EFI_IFR_QUESTION_REF1
;
1134 typedef struct _EFI_IFR_QUESTION_REF2
{
1135 EFI_IFR_OP_HEADER Header
;
1136 } EFI_IFR_QUESTION_REF2
;
1138 typedef struct _EFI_IFR_QUESTION_REF3
{
1139 EFI_IFR_OP_HEADER Header
;
1140 } EFI_IFR_QUESTION_REF3
;
1142 typedef struct _EFI_IFR_QUESTION_REF3_2
{
1143 EFI_IFR_OP_HEADER Header
;
1144 EFI_STRING_ID DevicePath
;
1145 } EFI_IFR_QUESTION_REF3_2
;
1147 typedef struct _EFI_IFR_QUESTION_REF3_3
{
1148 EFI_IFR_OP_HEADER Header
;
1149 EFI_STRING_ID DevicePath
;
1151 } EFI_IFR_QUESTION_REF3_3
;
1153 typedef struct _EFI_IFR_RULE_REF
{
1154 EFI_IFR_OP_HEADER Header
;
1158 typedef struct _EFI_IFR_STRING_REF1
{
1159 EFI_IFR_OP_HEADER Header
;
1160 EFI_STRING_ID StringId
;
1161 } EFI_IFR_STRING_REF1
;
1163 typedef struct _EFI_IFR_STRING_REF2
{
1164 EFI_IFR_OP_HEADER Header
;
1165 } EFI_IFR_STRING_REF2
;
1167 typedef struct _EFI_IFR_THIS
{
1168 EFI_IFR_OP_HEADER Header
;
1171 typedef struct _EFI_IFR_TRUE
{
1172 EFI_IFR_OP_HEADER Header
;
1175 typedef struct _EFI_IFR_FALSE
{
1176 EFI_IFR_OP_HEADER Header
;
1179 typedef struct _EFI_IFR_ONE
{
1180 EFI_IFR_OP_HEADER Header
;
1183 typedef struct _EFI_IFR_ONES
{
1184 EFI_IFR_OP_HEADER Header
;
1187 typedef struct _EFI_IFR_ZERO
{
1188 EFI_IFR_OP_HEADER Header
;
1191 typedef struct _EFI_IFR_UNDEFINED
{
1192 EFI_IFR_OP_HEADER Header
;
1193 } EFI_IFR_UNDEFINED
;
1195 typedef struct _EFI_IFR_VERSION
{
1196 EFI_IFR_OP_HEADER Header
;
1199 typedef struct _EFI_IFR_LENGTH
{
1200 EFI_IFR_OP_HEADER Header
;
1203 typedef struct _EFI_IFR_NOT
{
1204 EFI_IFR_OP_HEADER Header
;
1207 typedef struct _EFI_IFR_BITWISE_NOT
{
1208 EFI_IFR_OP_HEADER Header
;
1209 } EFI_IFR_BITWISE_NOT
;
1211 typedef struct _EFI_IFR_TO_BOOLEAN
{
1212 EFI_IFR_OP_HEADER Header
;
1213 } EFI_IFR_TO_BOOLEAN
;
1216 // For EFI_IFR_TO_STRING, when converting from
1217 // unsigned integers, these flags control the format:
1218 // 0 = unsigned decimal
1219 // 1 = signed decimal
1220 // 2 = hexadecimal (lower-case alpha)
1221 // 3 = hexadecimal (upper-case alpha)
1223 #define EFI_IFR_STRING_UNSIGNED_DEC 0
1224 #define EFI_IFR_STRING_SIGNED_DEC 1
1225 #define EFI_IFR_STRING_LOWERCASE_HEX 2
1226 #define EFI_IFR_STRING_UPPERCASE_HEX 3
1228 // When converting from a buffer, these flags control the format:
1232 #define EFI_IFR_STRING_ASCII 0
1233 #define EFI_IFR_STRING_UNICODE 8
1235 typedef struct _EFI_IFR_TO_STRING
{
1236 EFI_IFR_OP_HEADER Header
;
1238 } EFI_IFR_TO_STRING
;
1240 typedef struct _EFI_IFR_TO_UINT
{
1241 EFI_IFR_OP_HEADER Header
;
1244 typedef struct _EFI_IFR_TO_UPPER
{
1245 EFI_IFR_OP_HEADER Header
;
1248 typedef struct _EFI_IFR_TO_LOWER
{
1249 EFI_IFR_OP_HEADER Header
;
1252 typedef struct _EFI_IFR_ADD
{
1253 EFI_IFR_OP_HEADER Header
;
1256 typedef struct _EFI_IFR_AND
{
1257 EFI_IFR_OP_HEADER Header
;
1260 typedef struct _EFI_IFR_BITWISE_AND
{
1261 EFI_IFR_OP_HEADER Header
;
1262 } EFI_IFR_BITWISE_AND
;
1264 typedef struct _EFI_IFR_BITWISE_OR
{
1265 EFI_IFR_OP_HEADER Header
;
1266 } EFI_IFR_BITWISE_OR
;
1268 typedef struct _EFI_IFR_CATENATE
{
1269 EFI_IFR_OP_HEADER Header
;
1272 typedef struct _EFI_IFR_DIVIDE
{
1273 EFI_IFR_OP_HEADER Header
;
1276 typedef struct _EFI_IFR_EQUAL
{
1277 EFI_IFR_OP_HEADER Header
;
1280 typedef struct _EFI_IFR_GREATER_EQUAL
{
1281 EFI_IFR_OP_HEADER Header
;
1282 } EFI_IFR_GREATER_EQUAL
;
1284 typedef struct _EFI_IFR_GREATER_THAN
{
1285 EFI_IFR_OP_HEADER Header
;
1286 } EFI_IFR_GREATER_THAN
;
1288 typedef struct _EFI_IFR_LESS_EQUAL
{
1289 EFI_IFR_OP_HEADER Header
;
1290 } EFI_IFR_LESS_EQUAL
;
1292 typedef struct _EFI_IFR_LESS_THAN
{
1293 EFI_IFR_OP_HEADER Header
;
1294 } EFI_IFR_LESS_THAN
;
1296 typedef struct _EFI_IFR_MATCH
{
1297 EFI_IFR_OP_HEADER Header
;
1300 typedef struct _EFI_IFR_MULTIPLY
{
1301 EFI_IFR_OP_HEADER Header
;
1304 typedef struct _EFI_IFR_MODULO
{
1305 EFI_IFR_OP_HEADER Header
;
1308 typedef struct _EFI_IFR_NOT_EQUAL
{
1309 EFI_IFR_OP_HEADER Header
;
1310 } EFI_IFR_NOT_EQUAL
;
1312 typedef struct _EFI_IFR_OR
{
1313 EFI_IFR_OP_HEADER Header
;
1316 typedef struct _EFI_IFR_SHIFT_LEFT
{
1317 EFI_IFR_OP_HEADER Header
;
1318 } EFI_IFR_SHIFT_LEFT
;
1320 typedef struct _EFI_IFR_SHIFT_RIGHT
{
1321 EFI_IFR_OP_HEADER Header
;
1322 } EFI_IFR_SHIFT_RIGHT
;
1324 typedef struct _EFI_IFR_SUBTRACT
{
1325 EFI_IFR_OP_HEADER Header
;
1328 typedef struct _EFI_IFR_CONDITIONAL
{
1329 EFI_IFR_OP_HEADER Header
;
1330 } EFI_IFR_CONDITIONAL
;
1333 // Flags governing the matching criteria of EFI_IFR_FIND
1335 #define EFI_IFR_FF_CASE_SENSITIVE 0x00
1336 #define EFI_IFR_FF_CASE_INSENSITIVE 0x01
1338 typedef struct _EFI_IFR_FIND
{
1339 EFI_IFR_OP_HEADER Header
;
1343 typedef struct _EFI_IFR_MID
{
1344 EFI_IFR_OP_HEADER Header
;
1347 typedef struct _EFI_IFR_TOKEN
{
1348 EFI_IFR_OP_HEADER Header
;
1352 // Flags specifying whether to find the first matching string
1353 // or the first non-matching string.
1355 #define EFI_IFR_FLAGS_FIRST_MATCHING 0x00
1356 #define EFI_IFR_FLAGS_FIRST_NON_MATCHING 0x01
1358 typedef struct _EFI_IFR_SPAN
{
1359 EFI_IFR_OP_HEADER Header
;
1364 // Definitions for Keyboard Package
1365 // Releated definitions are in Section of EFI_HII_DATABASE_PROTOCOL
1369 /// Each enumeration values maps a physical key on a keyboard.
1482 CHAR16 ShiftedUnicode
;
1483 CHAR16 AltGrUnicode
;
1484 CHAR16 ShiftedAltGrUnicode
;
1486 UINT16 AffectedAttribute
;
1487 } EFI_KEY_DESCRIPTOR
;
1490 /// A key which is affected by all the standard shift modifiers.
1491 /// Most keys would be expected to have this bit active.
1493 #define EFI_AFFECTED_BY_STANDARD_SHIFT 0x0001
1496 /// This key is affected by the caps lock so that if a keyboard driver
1497 /// would need to disambiguate between a key which had a "1" defined
1498 /// versus a "a" character. Having this bit turned on would tell
1499 /// the keyboard driver to use the appropriate shifted state or not.
1501 #define EFI_AFFECTED_BY_CAPS_LOCK 0x0002
1504 /// Similar to the case of CAPS lock, if this bit is active, the key
1505 /// is affected by the num lock being turned on.
1507 #define EFI_AFFECTED_BY_NUM_LOCK 0x0004
1510 UINT16 LayoutLength
;
1512 UINT32 LayoutDescriptorStringOffset
;
1513 UINT8 DescriptorCount
;
1514 // EFI_KEY_DESCRIPTOR Descriptors[];
1515 } EFI_HII_KEYBOARD_LAYOUT
;
1518 EFI_HII_PACKAGE_HEADER Header
;
1520 // EFI_HII_KEYBOARD_LAYOUT Layout[];
1521 } EFI_HII_KEYBOARD_PACKAGE_HDR
;
1526 #define EFI_NULL_MODIFIER 0x0000
1527 #define EFI_LEFT_CONTROL_MODIFIER 0x0001
1528 #define EFI_RIGHT_CONTROL_MODIFIER 0x0002
1529 #define EFI_LEFT_ALT_MODIFIER 0x0003
1530 #define EFI_RIGHT_ALT_MODIFIER 0x0004
1531 #define EFI_ALT_GR_MODIFIER 0x0005
1532 #define EFI_INSERT_MODIFIER 0x0006
1533 #define EFI_DELETE_MODIFIER 0x0007
1534 #define EFI_PAGE_DOWN_MODIFIER 0x0008
1535 #define EFI_PAGE_UP_MODIFIER 0x0009
1536 #define EFI_HOME_MODIFIER 0x000A
1537 #define EFI_END_MODIFIER 0x000B
1538 #define EFI_LEFT_SHIFT_MODIFIER 0x000C
1539 #define EFI_RIGHT_SHIFT_MODIFIER 0x000D
1540 #define EFI_CAPS_LOCK_MODIFIER 0x000E
1541 #define EFI_NUM_LOCK_MODIFIER 0x000F
1542 #define EFI_LEFT_ARROW_MODIFIER 0x0010
1543 #define EFI_RIGHT_ARROW_MODIFIER 0x0011
1544 #define EFI_DOWN_ARROW_MODIFIER 0x0012
1545 #define EFI_UP_ARROW_MODIFIER 0x0013
1546 #define EFI_NS_KEY_MODIFIER 0x0014
1547 #define EFI_NS_KEY_DEPENDENCY_MODIFIER 0x0015
1548 #define EFI_FUNCTION_KEY_ONE_MODIFIER 0x0016
1549 #define EFI_FUNCTION_KEY_TWO_MODIFIER 0x0017
1550 #define EFI_FUNCTION_KEY_THREE_MODIFIER 0x0018
1551 #define EFI_FUNCTION_KEY_FOUR_MODIFIER 0x0019
1552 #define EFI_FUNCTION_KEY_FIVE_MODIFIER 0x001A
1553 #define EFI_FUNCTION_KEY_SIX_MODIFIER 0x001B
1554 #define EFI_FUNCTION_KEY_SEVEN_MODIFIER 0x001C
1555 #define EFI_FUNCTION_KEY_EIGHT_MODIFIER 0x001D
1556 #define EFI_FUNCTION_KEY_NINE_MODIFIER 0x001E
1557 #define EFI_FUNCTION_KEY_TEN_MODIFIER 0x001F
1558 #define EFI_FUNCTION_KEY_ELEVEN_MODIFIER 0x0020
1559 #define EFI_FUNCTION_KEY_TWELVE_MODIFIER 0x0021
1562 // Keys that have multiple control functions based on modifier
1563 // settings are handled in the keyboard driver implementation.
1564 // For instance PRINT_KEY might have a modifier held down and
1565 // is still a nonprinting character, but might have an alternate
1566 // control function like SYSREQUEST
1568 #define EFI_PRINT_MODIFIER 0x0022
1569 #define EFI_SYS_REQUEST_MODIFIER 0x0023
1570 #define EFI_SCROLL_LOCK_MODIFIER 0x0024
1571 #define EFI_PAUSE_MODIFIER 0x0025
1572 #define EFI_BREAK_MODIFIER 0x0026
1574 #define EFI_LEFT_LOGO_MODIFIER 0x0027
1575 #define EFI_RIGHT_LOGO_MODIFIER 0x0028
1576 #define EFI_MENU_MODIFIER 0x0029
1583 /// References to string tokens must use this macro to enable scanning for
1587 /// STRING_TOKEN is not defined in UEFI specification. But it is placed
1588 /// here for the easy access by C files and VFR source files.
1590 #define STRING_TOKEN(t) t