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 UINT32 RELOFST
;
28 typedef VOID
* EFI_HII_HANDLE
;
29 typedef CHAR16
* EFI_STRING
;
30 typedef UINT16 EFI_IMAGE_ID
;
31 typedef UINT16 EFI_QUESTION_ID
;
32 typedef UINT16 EFI_STRING_ID
;
33 typedef UINT16 EFI_FORM_ID
;
34 typedef UINT16 EFI_VARSTORE_ID
;
35 typedef UINT16 EFI_DEFAULT_ID
;
36 typedef UINT32 EFI_HII_FONT_STYLE
;
47 EFI_GUID PackageListGuid
;
49 } EFI_HII_PACKAGE_LIST_HEADER
;
53 Each package starts with a header, as defined above, which
54 indicates the size and type of the package. When added to a
55 pointer pointing to the start of the header, Length points at
56 the next package. The package lists form a package list when
57 concatenated together and terminated with an
58 EFI_HII_PACKAGE_HEADER with a Type of EFI_HII_PACKAGE_END. The
59 type EFI_HII_PACKAGE_TYPE_GUID is used for vendor-defined HII
60 packages, whose contents are determined by the Guid. The range
61 of package types starting with EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN
62 through EFI_HII_PACKAGE_TYPE_SYSTEM_END are reserved for system
63 firmware implementers.
65 @param Length The size of the package in bytes.
67 @param Type The package type. See EFI_HII_PACKAGE_TYPE_x,
70 @param Data The package data, the format of which is
78 } EFI_HII_PACKAGE_HEADER
;
81 // EFI_HII_PACKAGE_TYPE_x.
83 #define EFI_HII_PACKAGE_TYPE_ALL 0x00
84 #define EFI_HII_PACKAGE_TYPE_GUID 0x01
85 #define EFI_HII_PACKAGE_FORM 0x02
86 #define EFI_HII_PACKAGE_KEYBOARD_LAYOUT 0x03
87 #define EFI_HII_PACKAGE_STRINGS 0x04
88 #define EFI_HII_PACKAGE_FONTS 0x05
89 #define EFI_HII_PACKAGE_IMAGES 0x06
90 #define EFI_HII_PACKAGE_SIMPLE_FONTS 0x07
91 #define EFI_HII_PACKAGE_DEVICE_PATH 0x08
92 #define EFI_HII_PACKAGE_END 0xDF
93 #define EFI_HII_PACKAGE_TYPE_SYSTEM_BEGIN 0xE0
94 #define EFI_HII_PACKAGE_TYPE_SYSTEM_END 0xFF
97 // Simplified Font Package
100 #define EFI_GLYPH_HEIGHT 19
101 #define EFI_GLYPH_WIDTH 8
103 // Contents of EFI_NARROW_GLYPH.Attributes
105 #define EFI_GLYPH_NON_SPACING 0x01
106 #define EFI_GLYPH_WIDE 0x02
109 CHAR16 UnicodeWeight
;
111 UINT8 GlyphCol1
[EFI_GLYPH_HEIGHT
];
115 CHAR16 UnicodeWeight
;
117 UINT8 GlyphCol1
[EFI_GLYPH_HEIGHT
];
118 UINT8 GlyphCol2
[EFI_GLYPH_HEIGHT
];
123 typedef struct _EFI_HII_SIMPLE_FONT_PACKAGE_HDR
{
124 EFI_HII_PACKAGE_HEADER Header
;
125 UINT16 NumberOfNarrowGlyphs
;
126 UINT16 NumberOfWideGlyphs
;
127 // EFI_NARROW_GLYPH NarrowGlyphs[];
128 // EFI_WIDE_GLYPH WideGlyphs[];
129 } EFI_HII_SIMPLE_FONT_PACKAGE_HDR
;
135 #define EFI_HII_FONT_STYLE_NORMAL 0x00000000
136 #define EFI_HII_FONT_STYLE_BOLD 0x00000001
137 #define EFI_HII_FONT_STYLE_ITALIC 0x00000002
138 #define EFI_HII_FONT_STYLE_EMBOSS 0x00010000
139 #define EFI_HII_FONT_STYLE_OUTLINE 0x00020000
140 #define EFI_HII_FONT_STYLE_SHADOW 0x00040000
141 #define EFI_HII_FONT_STYLE_UNDERLINE 0x00080000
142 #define EFI_HII_FONT_STYLE_DBL_UNDER 0x00100000
144 typedef struct _EFI_HII_GLYPH_INFO
{
150 } EFI_HII_GLYPH_INFO
;
152 typedef struct _EFI_HII_FONT_PACKAGE_HDR
{
153 EFI_HII_PACKAGE_HEADER Header
;
155 UINT32 GlyphBlockOffset
;
156 EFI_HII_GLYPH_INFO Cell
;
157 EFI_HII_FONT_STYLE FontStyle
;
158 CHAR16 FontFamily
[1];
159 } EFI_HII_FONT_PACKAGE_HDR
;
161 #define EFI_HII_GIBT_END 0x00
162 #define EFI_HII_GIBT_GLYPH 0x10
163 #define EFI_HII_GIBT_GLYPHS 0x11
164 #define EFI_HII_GIBT_GLYPH_DEFAULT 0x12
165 #define EFI_HII_GIBT_GLYPHS_DEFAULT 0x13
166 #define EFI_HII_GIBT_DUPLICATE 0x20
167 #define EFI_HII_GIBT_SKIP2 0x21
168 #define EFI_HII_GIBT_SKIP1 0x22
169 #define EFI_HII_GIBT_DEFAULTS 0x23
170 #define EFI_HII_GIBT_EXT1 0x30
171 #define EFI_HII_GIBT_EXT2 0x31
172 #define EFI_HII_GIBT_EXT4 0x32
174 typedef struct _EFI_HII_GLYPH_BLOCK
{
176 } EFI_HII_GLYPH_BLOCK
;
178 typedef struct _EFI_HII_GIBT_DEFAULTS_BLOCK
{
179 EFI_HII_GLYPH_BLOCK Header
;
180 EFI_HII_GLYPH_INFO Cell
;
181 } EFI_HII_GIBT_DEFAULTS_BLOCK
;
183 typedef struct _EFI_HII_GIBT_DUPLICATE_BLOCK
{
184 EFI_HII_GLYPH_BLOCK Header
;
186 } EFI_HII_GIBT_DUPLICATE_BLOCK
;
188 typedef struct _EFI_GLYPH_GIBT_END_BLOCK
{
189 EFI_HII_GLYPH_BLOCK Header
;
190 } EFI_GLYPH_GIBT_END_BLOCK
;
192 typedef struct _EFI_HII_GIBT_EXT1_BLOCK
{
193 EFI_HII_GLYPH_BLOCK Header
;
196 } EFI_HII_GIBT_EXT1_BLOCK
;
198 typedef struct _EFI_HII_GIBT_EXT2_BLOCK
{
199 EFI_HII_GLYPH_BLOCK Header
;
202 } EFI_HII_GIBT_EXT2_BLOCK
;
204 typedef struct _EFI_HII_GIBT_EXT4_BLOCK
{
205 EFI_HII_GLYPH_BLOCK Header
;
208 } EFI_HII_GIBT_EXT4_BLOCK
;
210 typedef struct _EFI_HII_GIBT_GLYPH_BLOCK
{
211 EFI_HII_GLYPH_BLOCK Header
;
212 EFI_HII_GLYPH_INFO Cell
;
213 UINT8 BitmapData
[1]; // the number of bytes per bitmap can be calculated by ((Cell.Width+7)/8)*Cell.Height
214 } EFI_HII_GIBT_GLYPH_BLOCK
;
216 typedef struct _EFI_HII_GIBT_GLYPHS_BLOCK
{
217 EFI_HII_GLYPH_BLOCK Header
;
218 EFI_HII_GLYPH_INFO Cell
;
220 UINT8 BitmapData
[1]; // the number of bytes per bitmap can be calculated by ((Cell.Width+7)/8)*Cell.Height
221 } EFI_HII_GIBT_GLYPHS_BLOCK
;
223 typedef struct _EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK
{
224 EFI_HII_GLYPH_BLOCK Header
;
225 UINT8 BitmapData
[1]; // the number of bytes per bitmap can be calculated by ((Global.Cell.Width+7)/8)*Global.Cell.Height
226 } EFI_HII_GIBT_GLYPH_DEFAULT_BLOCK
;
228 typedef struct _EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK
{
229 EFI_HII_GLYPH_BLOCK Header
;
231 UINT8 BitmapData
[1]; // the number of bytes per bitmap can be calculated by ((Global.Cell.Width+7)/8)*Global.Cell.Height
232 } EFI_HII_GIBT_GLYPHS_DEFAULT_BLOCK
;
234 typedef struct _EFI_HII_GIBT_SKIP1_BLOCK
{
235 EFI_HII_GLYPH_BLOCK Header
;
237 } EFI_HII_GIBT_SKIP1_BLOCK
;
239 typedef struct _EFI_HII_GIBT_SKIP2_BLOCK
{
240 EFI_HII_GLYPH_BLOCK Header
;
242 } EFI_HII_GIBT_SKIP2_BLOCK
;
245 // Device Path Package
247 typedef struct _EFI_HII_DEVICE_PATH_PACKAGE
{
248 EFI_HII_PACKAGE_HEADER Header
;
249 // EFI_DEVICE_PATH_PROTOCOL DevicePath[];
250 } EFI_HII_DEVICE_PATH_PACKAGE
;
255 typedef struct _EFI_HII_GUID_PACKAGE_HDR
{
256 EFI_HII_PACKAGE_HEADER Header
;
258 // Data per GUID definition may follow
259 } EFI_HII_GUID_PACKAGE_HDR
;
265 #define UEFI_CONFIG_LANG L"x-UEFI"
266 #define UEFI_CONFIG_LANG2 L"x-i-UEFI" // BUGBUG, spec need to be updated.
268 typedef struct _EFI_HII_STRING_PACKAGE_HDR
{
269 EFI_HII_PACKAGE_HEADER Header
;
271 UINT32 StringInfoOffset
;
272 CHAR16 LanguageWindow
[16];
273 EFI_STRING_ID LanguageName
;
275 } EFI_HII_STRING_PACKAGE_HDR
;
279 } EFI_HII_STRING_BLOCK
;
281 #define EFI_HII_SIBT_END 0x00
282 #define EFI_HII_SIBT_STRING_SCSU 0x10
283 #define EFI_HII_SIBT_STRING_SCSU_FONT 0x11
284 #define EFI_HII_SIBT_STRINGS_SCSU 0x12
285 #define EFI_HII_SIBT_STRINGS_SCSU_FONT 0x13
286 #define EFI_HII_SIBT_STRING_UCS2 0x14
287 #define EFI_HII_SIBT_STRING_UCS2_FONT 0x15
288 #define EFI_HII_SIBT_STRINGS_UCS2 0x16
289 #define EFI_HII_SIBT_STRINGS_UCS2_FONT 0x17
290 #define EFI_HII_SIBT_DUPLICATE 0x20
291 #define EFI_HII_SIBT_SKIP2 0x21
292 #define EFI_HII_SIBT_SKIP1 0x22
293 #define EFI_HII_SIBT_EXT1 0x30
294 #define EFI_HII_SIBT_EXT2 0x31
295 #define EFI_HII_SIBT_EXT4 0x32
296 #define EFI_HII_SIBT_FONT 0x40
298 typedef struct _EFI_HII_SIBT_DUPLICATE_BLOCK
{
299 EFI_HII_STRING_BLOCK Header
;
300 EFI_STRING_ID StringId
;
301 } EFI_HII_SIBT_DUPLICATE_BLOCK
;
303 typedef struct _EFI_HII_SIBT_END_BLOCK
{
304 EFI_HII_STRING_BLOCK Header
;
305 } EFI_HII_SIBT_END_BLOCK
;
307 typedef struct _EFI_HII_SIBT_EXT1_BLOCK
{
308 EFI_HII_STRING_BLOCK Header
;
311 } EFI_HII_SIBT_EXT1_BLOCK
;
313 typedef struct _EFI_HII_SIBT_EXT2_BLOCK
{
314 EFI_HII_STRING_BLOCK Header
;
317 } EFI_HII_SIBT_EXT2_BLOCK
;
319 typedef struct _EFI_HII_SIBT_EXT4_BLOCK
{
320 EFI_HII_STRING_BLOCK Header
;
323 } EFI_HII_SIBT_EXT4_BLOCK
;
325 typedef struct _EFI_HII_SIBT_FONT_BLOCK
{
326 EFI_HII_SIBT_EXT2_BLOCK Header
;
329 EFI_HII_FONT_STYLE FontStyle
;
331 } EFI_HII_SIBT_FONT_BLOCK
;
333 typedef struct _EFI_HII_SIBT_SKIP1_BLOCK
{
334 EFI_HII_STRING_BLOCK Header
;
336 } EFI_HII_SIBT_SKIP1_BLOCK
;
338 typedef struct _EFI_HII_SIBT_SKIP2_BLOCK
{
339 EFI_HII_STRING_BLOCK Header
;
341 } EFI_HII_SIBT_SKIP2_BLOCK
;
343 typedef struct _EFI_HII_SIBT_STRING_SCSU_BLOCK
{
344 EFI_HII_STRING_BLOCK Header
;
346 } EFI_HII_SIBT_STRING_SCSU_BLOCK
;
348 typedef struct _EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK
{
349 EFI_HII_STRING_BLOCK Header
;
350 UINT8 FontIdentifier
;
352 } EFI_HII_SIBT_STRING_SCSU_FONT_BLOCK
;
354 typedef struct _EFI_HII_SIBT_STRINGS_SCSU_BLOCK
{
355 EFI_HII_STRING_BLOCK Header
;
358 } EFI_HII_SIBT_STRINGS_SCSU_BLOCK
;
360 typedef struct _EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK
{
361 EFI_HII_STRING_BLOCK Header
;
362 UINT8 FontIdentifier
;
365 } EFI_HII_SIBT_STRINGS_SCSU_FONT_BLOCK
;
367 typedef struct _EFI_HII_SIBT_STRING_UCS2_BLOCK
{
368 EFI_HII_STRING_BLOCK Header
;
369 CHAR16 StringText
[1];
370 } EFI_HII_SIBT_STRING_UCS2_BLOCK
;
372 typedef struct _EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK
{
373 EFI_HII_STRING_BLOCK Header
;
374 UINT8 FontIdentifier
;
375 CHAR16 StringText
[1];
376 } EFI_HII_SIBT_STRING_UCS2_FONT_BLOCK
;
378 typedef struct _EFI_HII_SIBT_STRINGS_UCS2_BLOCK
{
379 EFI_HII_STRING_BLOCK Header
;
381 CHAR16 StringText
[1];
382 } EFI_HII_SIBT_STRINGS_UCS2_BLOCK
;
384 typedef struct _EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK
{
385 EFI_HII_STRING_BLOCK Header
;
386 UINT8 FontIdentifier
;
388 CHAR16 StringText
[1];
389 } EFI_HII_SIBT_STRINGS_UCS2_FONT_BLOCK
;
395 typedef struct _EFI_HII_IMAGE_PACKAGE_HDR
{
396 EFI_HII_PACKAGE_HEADER Header
;
397 UINT32 ImageInfoOffset
;
398 UINT32 PaletteInfoOffset
;
399 } EFI_HII_IMAGE_PACKAGE_HDR
;
401 typedef struct _EFI_HII_IMAGE_BLOCK
{
403 } EFI_HII_IMAGE_BLOCK
;
405 #define EFI_HII_IIBT_END 0x00
406 #define EFI_HII_IIBT_IMAGE_1BIT 0x10
407 #define EFI_HII_IIBT_IMAGE_1BIT_TRANS 0x11
408 #define EFI_HII_IIBT_IMAGE_4BIT 0x12
409 #define EFI_HII_IIBT_IMAGE_4BIT_TRANS 0x13
410 #define EFI_HII_IIBT_IMAGE_8BIT 0x14
411 #define EFI_HII_IIBT_IMAGE_8BIT_TRANS 0x15
412 #define EFI_HII_IIBT_IMAGE_24BIT 0x16
413 #define EFI_HII_IIBT_IMAGE_24BIT_TRANS 0x17
414 #define EFI_HII_IIBT_IMAGE_JPEG 0x18
415 #define EFI_HII_IIBT_DUPLICATE 0x20
416 #define EFI_HII_IIBT_SKIP2 0x21
417 #define EFI_HII_IIBT_SKIP1 0x22
418 #define EFI_HII_IIBT_EXT1 0x30
419 #define EFI_HII_IIBT_EXT2 0x31
420 #define EFI_HII_IIBT_EXT4 0x32
422 typedef struct _EFI_HII_IIBT_END_BLOCK
{
423 EFI_HII_IMAGE_BLOCK Header
;
424 } EFI_HII_IIBT_END_BLOCK
;
426 typedef struct _EFI_HII_IIBT_EXT1_BLOCK
{
427 EFI_HII_IMAGE_BLOCK Header
;
430 } EFI_HII_IIBT_EXT1_BLOCK
;
432 typedef struct _EFI_HII_IIBT_EXT2_BLOCK
{
433 EFI_HII_IMAGE_BLOCK Header
;
436 } EFI_HII_IIBT_EXT2_BLOCK
;
438 typedef struct _EFI_HII_IIBT_EXT4_BLOCK
{
439 EFI_HII_IMAGE_BLOCK Header
;
442 } EFI_HII_IIBT_EXT4_BLOCK
;
444 typedef struct _EFI_HII_IIBT_IMAGE_1BIT_BASE
{
448 } EFI_HII_IIBT_IMAGE_1BIT_BASE
;
450 typedef struct _EFI_HII_IIBT_IMAGE_1BIT_BLOCK
{
451 EFI_HII_IMAGE_BLOCK Header
;
453 EFI_HII_IIBT_IMAGE_1BIT_BASE Bitmap
;
454 } EFI_HII_IIBT_IMAGE_1BIT_BLOCK
;
456 typedef struct _EFI_HII_IIBT_IMAGE_1BIT_TRANS_BLOCK
{
457 EFI_HII_IMAGE_BLOCK Header
;
459 EFI_HII_IIBT_IMAGE_1BIT_BASE Bitmap
;
460 } EFI_HII_IIBT_IMAGE_1BIT_TRANS_BLOCK
;
462 typedef struct _EFI_HII_RGB_PIXEL
{
468 typedef struct _EFI_HII_IIBT_IMAGE_24BIT_BASE
{
471 EFI_HII_RGB_PIXEL Bitmap
[1];
472 } EFI_HII_IIBT_IMAGE_24BIT_BASE
;
474 typedef struct _EFI_HII_IIBT_IMAGE_24BIT_BLOCK
{
475 EFI_HII_IMAGE_BLOCK Header
;
476 EFI_HII_IIBT_IMAGE_24BIT_BASE Bitmap
;
477 } EFI_HII_IIBT_IMAGE_24BIT_BLOCK
;
479 typedef struct _EFI_HII_IIBT_IMAGE_24BIT_TRANS_BLOCK
{
480 EFI_HII_IMAGE_BLOCK Header
;
481 EFI_HII_IIBT_IMAGE_24BIT_BASE Bitmap
;
482 } EFI_HII_IIBT_IMAGE_24BIT_TRANS_BLOCK
;
484 typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BASE
{
488 } EFI_HII_IIBT_IMAGE_4BIT_BASE
;
490 typedef struct _EFI_HII_IIBT_IMAGE_4BIT_BLOCK
{
491 EFI_HII_IMAGE_BLOCK Header
;
493 EFI_HII_IIBT_IMAGE_4BIT_BASE Bitmap
;
494 } EFI_HII_IIBT_IMAGE_4BIT_BLOCK
;
496 typedef struct _EFI_HII_IIBT_IMAGE_4BIT_TRANS_BLOCK
{
497 EFI_HII_IMAGE_BLOCK Header
;
499 EFI_HII_IIBT_IMAGE_4BIT_BASE Bitmap
;
500 } EFI_HII_IIBT_IMAGE_4BIT_TRANS_BLOCK
;
502 typedef struct _EFI_HII_IIBT_IMAGE_8BIT_BASE
{
506 } EFI_HII_IIBT_IMAGE_8BIT_BASE
;
508 typedef struct _EFI_HII_IIBT_IMAGE_8BIT_PALETTE_BLOCK
{
509 EFI_HII_IMAGE_BLOCK Header
;
511 EFI_HII_IIBT_IMAGE_8BIT_BASE Bitmap
;
512 } EFI_HII_IIBT_IMAGE_8BIT_BLOCK
;
514 typedef struct _EFI_HII_IIBT_IMAGE_8BIT_TRANS_BLOCK
{
515 EFI_HII_IMAGE_BLOCK Header
;
517 EFI_HII_IIBT_IMAGE_8BIT_BASE Bitmap
;
518 } EFI_HII_IIBT_IMAGE_8BIT_TRAN_BLOCK
;
520 typedef struct _EFI_HII_IIBT_DUPLICATE_BLOCK
{
521 EFI_HII_IMAGE_BLOCK Header
;
522 EFI_IMAGE_ID ImageId
;
523 } EFI_HII_IIBT_DUPLICATE_BLOCK
;
525 typedef struct _EFI_HII_IIBT_JPEG_BLOCK
{
526 EFI_HII_IMAGE_BLOCK Header
;
529 } EFI_HII_IIBT_JPEG_BLOCK
;
531 typedef struct _EFI_HII_IIBT_SKIP1_BLOCK
{
532 EFI_HII_IMAGE_BLOCK Header
;
534 } EFI_HII_IIBT_SKIP1_BLOCK
;
536 typedef struct _EFI_HII_IIBT_SKIP2_BLOCK
{
537 EFI_HII_IMAGE_BLOCK Header
;
539 } EFI_HII_IIBT_SKIP2_BLOCK
;
541 typedef struct _EFI_HII_IMAGE_PALETTE_INFO_HEADER
{
543 } EFI_HII_IMAGE_PALETTE_INFO_HEADER
;
545 typedef struct _EFI_HII_IMAGE_PALETTE_INFO
{
547 EFI_HII_RGB_PIXEL PaletteValue
[1];
548 } EFI_HII_IMAGE_PALETTE_INFO
;
554 typedef struct _EFI_HII_FORM_PACKAGE
{
555 EFI_HII_PACKAGE_HEADER Header
;
556 // EFI_IFR_OP_HEADER OpCodeHeader;
557 // More op-codes follow
558 } EFI_HII_FORM_PACKAGE
;
580 EFI_STRING_ID string
;
581 } EFI_IFR_TYPE_VALUE
;
586 #define EFI_IFR_FORM_OP 0x01
587 #define EFI_IFR_SUBTITLE_OP 0x02
588 #define EFI_IFR_TEXT_OP 0x03
589 #define EFI_IFR_IMAGE_OP 0x04
590 #define EFI_IFR_ONE_OF_OP 0x05
591 #define EFI_IFR_CHECKBOX_OP 0x06
592 #define EFI_IFR_NUMERIC_OP 0x07
593 #define EFI_IFR_PASSWORD_OP 0x08
594 #define EFI_IFR_ONE_OF_OPTION_OP 0x09
595 #define EFI_IFR_SUPPRESS_IF_OP 0x0A
596 #define EFI_IFR_LOCKED_OP 0x0B
597 #define EFI_IFR_ACTION_OP 0x0C
598 #define EFI_IFR_RESET_BUTTON_OP 0x0D
599 #define EFI_IFR_FORM_SET_OP 0x0E
600 #define EFI_IFR_REF_OP 0x0F
601 #define EFI_IFR_NO_SUBMIT_IF_OP 0x10
602 #define EFI_IFR_INCONSISTENT_IF_OP 0x11
603 #define EFI_IFR_EQ_ID_VAL_OP 0x12
604 #define EFI_IFR_EQ_ID_ID_OP 0x13
605 #define EFI_IFR_EQ_ID_LIST_OP 0x14
606 #define EFI_IFR_AND_OP 0x15
607 #define EFI_IFR_OR_OP 0x16
608 #define EFI_IFR_NOT_OP 0x17
609 #define EFI_IFR_RULE_OP 0x18
610 #define EFI_IFR_GRAY_OUT_IF_OP 0x19
611 #define EFI_IFR_DATE_OP 0x1A
612 #define EFI_IFR_TIME_OP 0x1B
613 #define EFI_IFR_STRING_OP 0x1C
614 #define EFI_IFR_REFRESH_OP 0x1D
615 #define EFI_IFR_DISABLE_IF_OP 0x1E
616 #define EFI_IFR_TO_LOWER_OP 0x20
617 #define EFI_IFR_TO_UPPER_OP 0x21
618 #define EFI_IFR_ORDERED_LIST_OP 0x23
619 #define EFI_IFR_VARSTORE_OP 0x24
620 #define EFI_IFR_VARSTORE_NAME_VALUE_OP 0x25
621 #define EFI_IFR_VARSTORE_EFI_OP 0x26
622 #define EFI_IFR_VARSTORE_DEVICE_OP 0x27
623 #define EFI_IFR_VERSION_OP 0x28
624 #define EFI_IFR_END_OP 0x29
625 #define EFI_IFR_MATCH_OP 0x2A
626 #define EFI_IFR_EQUAL_OP 0x2F
627 #define EFI_IFR_NOT_EQUAL_OP 0x30
628 #define EFI_IFR_GREATER_THAN_OP 0x31
629 #define EFI_IFR_GREATER_EQUAL_OP 0x32
630 #define EFI_IFR_LESS_THAN_OP 0x33
631 #define EFI_IFR_LESS_EQUAL_OP 0x34
632 #define EFI_IFR_BITWISE_AND_OP 0x35
633 #define EFI_IFR_BITWISE_OR_OP 0x36
634 #define EFI_IFR_BITWISE_NOT_OP 0x37
635 #define EFI_IFR_SHIFT_LEFT_OP 0x38
636 #define EFI_IFR_SHIFT_RIGHT_OP 0x39
637 #define EFI_IFR_ADD_OP 0x3A
638 #define EFI_IFR_SUBTRACT_OP 0x3B
639 #define EFI_IFR_MULTIPLY_OP 0x3C
640 #define EFI_IFR_DIVIDE_OP 0x3D
641 #define EFI_IFR_MODULO_OP 0x3E
642 #define EFI_IFR_RULE_REF_OP 0x3F
643 #define EFI_IFR_QUESTION_REF1_OP 0x40
644 #define EFI_IFR_QUESTION_REF2_OP 0x41
645 #define EFI_IFR_UINT8_OP 0x42
646 #define EFI_IFR_UINT16_OP 0x43
647 #define EFI_IFR_UINT32_OP 0x44
648 #define EFI_IFR_UINT64_OP 0x45
649 #define EFI_IFR_TRUE_OP 0x46
650 #define EFI_IFR_FALSE_OP 0x47
651 #define EFI_IFR_TO_UINT_OP 0x48
652 #define EFI_IFR_TO_STRING_OP 0x49
653 #define EFI_IFR_TO_BOOLEAN_OP 0x4A
654 #define EFI_IFR_MID_OP 0x4B
655 #define EFI_IFR_FIND_OP 0x4C
656 #define EFI_IFR_TOKEN_OP 0x4D
657 #define EFI_IFR_STRING_REF1_OP 0x4E
658 #define EFI_IFR_STRING_REF2_OP 0x4F
659 #define EFI_IFR_CONDITIONAL_OP 0x50
660 #define EFI_IFR_QUESTION_REF3_OP 0x51
661 #define EFI_IFR_ZERO_OP 0x52
662 #define EFI_IFR_ONE_OP 0x53
663 #define EFI_IFR_ONES_OP 0x54
664 #define EFI_IFR_UNDEFINED_OP 0x55
665 #define EFI_IFR_LENGTH_OP 0x56
666 #define EFI_IFR_DUP_OP 0x57
667 #define EFI_IFR_THIS_OP 0x58
668 #define EFI_IFR_SPAN_OP 0x59
669 #define EFI_IFR_VALUE_OP 0x5A
670 #define EFI_IFR_DEFAULT_OP 0x5B
671 #define EFI_IFR_DEFAULTSTORE_OP 0x5C
672 #define EFI_IFR_CATENATE_OP 0x5E
673 #define EFI_IFR_GUID_OP 0x5F
676 typedef struct _EFI_IFR_OP_HEADER
{
682 typedef struct _EFI_IFR_STATEMENT_HEADER
{
683 EFI_STRING_ID Prompt
;
685 } EFI_IFR_STATEMENT_HEADER
;
687 typedef struct _EFI_IFR_QUESTION_HEADER
{
688 EFI_IFR_STATEMENT_HEADER Header
;
689 EFI_QUESTION_ID QuestionId
;
690 EFI_VARSTORE_ID VarStoreId
;
692 EFI_STRING_ID VarName
;
696 } EFI_IFR_QUESTION_HEADER
;
698 #define EFI_IFR_FLAG_READ_ONLY 0x01
699 #define EFI_IFR_FLAG_CALLBACK 0x04
700 #define EFI_IFR_FLAG_RESET_REQUIRED 0x10
701 #define EFI_IFR_FLAG_OPTIONS_ONLY 0x80
703 typedef struct _EFI_IFR_DEFAULTSTORE
{
704 EFI_IFR_OP_HEADER Header
;
705 EFI_STRING_ID DefaultName
;
707 } EFI_IFR_DEFAULTSTORE
;
709 #define EFI_HII_DEFAULT_CLASS_STANDARD 0x0000
710 #define EFI_HII_DEFAULT_CLASS_MANUFACTURING 0x0001
711 #define EFI_HII_DEFAULT_CLASS_SAFE 0x0002
712 #define EFI_HII_DEFAULT_CLASS_PLATFORM_BEGIN 0x4000
713 #define EFI_HII_DEFAULT_CLASS_PLATFORM_END 0x7fff
714 #define EFI_HII_DEFAULT_CLASS_HARDWARE_BEGIN 0x8000
715 #define EFI_HII_DEFAULT_CLASS_HARDWARE_END 0xbfff
716 #define EFI_HII_DEFAULT_CLASS_FIRMWARE_BEGIN 0xc000
717 #define EFI_HII_DEFAULT_CLASS_FIRMWARE_END 0xffff
719 typedef struct _EFI_IFR_VARSTORE
{
720 EFI_IFR_OP_HEADER Header
;
722 EFI_VARSTORE_ID VarStoreId
;
727 typedef struct _EFI_IFR_VARSTORE_EFI
{
728 EFI_IFR_OP_HEADER Header
;
729 EFI_VARSTORE_ID VarStoreId
;
732 } EFI_IFR_VARSTORE_EFI
;
734 typedef struct _EFI_IFR_VARSTORE_NAME_VALUE
{
735 EFI_IFR_OP_HEADER Header
;
736 EFI_VARSTORE_ID VarStoreId
;
738 } EFI_IFR_VARSTORE_NAME_VALUE
;
740 typedef struct _EFI_IFR_FORM_SET
{
741 EFI_IFR_OP_HEADER Header
;
743 EFI_STRING_ID FormSetTitle
;
747 typedef struct _EFI_IFR_END
{
748 EFI_IFR_OP_HEADER Header
;
751 typedef struct _EFI_IFR_FORM
{
752 EFI_IFR_OP_HEADER Header
;
754 EFI_STRING_ID FormTitle
;
757 typedef struct _EFI_IFR_IMAGE
{
758 EFI_IFR_OP_HEADER Header
;
762 typedef struct _EFI_IFR_LOCKED
{
763 EFI_IFR_OP_HEADER Header
;
766 typedef struct _EFI_IFR_RULE
{
767 EFI_IFR_OP_HEADER Header
;
771 typedef struct _EFI_IFR_DEFAULT
{
772 EFI_IFR_OP_HEADER Header
;
775 EFI_IFR_TYPE_VALUE Value
;
778 typedef struct _EFI_IFR_VALUE
{
779 EFI_IFR_OP_HEADER Header
;
782 typedef struct _EFI_IFR_SUBTITLE
{
783 EFI_IFR_OP_HEADER Header
;
784 EFI_IFR_STATEMENT_HEADER Statement
;
788 #define EFI_IFR_FLAGS_HORIZONTAL 0x01
790 typedef struct _EFI_IFR_CHECKBOX
{
791 EFI_IFR_OP_HEADER Header
;
792 EFI_IFR_QUESTION_HEADER Question
;
796 #define EFI_IFR_CHECKBOX_DEFAULT 0x01
797 #define EFI_IFR_CHECKBOX_DEFAULT_MFG 0x02
799 typedef struct _EFI_IFR_TEXT
{
800 EFI_IFR_OP_HEADER Header
;
801 EFI_IFR_STATEMENT_HEADER Statement
;
802 EFI_STRING_ID TextTwo
;
805 typedef struct _EFI_IFR_REF
{
806 EFI_IFR_OP_HEADER Header
;
807 EFI_IFR_QUESTION_HEADER Question
;
811 typedef struct _EFI_IFR_REF2
{
812 EFI_IFR_OP_HEADER Header
;
813 EFI_IFR_QUESTION_HEADER Question
;
815 EFI_QUESTION_ID QuestionId
;
818 typedef struct _EFI_IFR_REF3
{
819 EFI_IFR_OP_HEADER Header
;
820 EFI_IFR_QUESTION_HEADER Question
;
822 EFI_QUESTION_ID QuestionId
;
826 typedef struct _EFI_IFR_REF4
{
827 EFI_IFR_OP_HEADER Header
;
828 EFI_IFR_QUESTION_HEADER Question
;
830 EFI_QUESTION_ID QuestionId
;
832 EFI_STRING_ID DevicePath
;
835 typedef struct _EFI_IFR_RESET_BUTTON
{
836 EFI_IFR_OP_HEADER Header
;
837 EFI_IFR_QUESTION_HEADER Question
;
838 EFI_DEFAULT_ID DefaultId
;
839 } EFI_IFR_RESET_BUTTON
;
841 typedef struct _EFI_IFR_ACTION
{
842 EFI_IFR_OP_HEADER Header
;
843 EFI_IFR_QUESTION_HEADER Question
;
844 EFI_STRING_ID QuestionConfig
;
847 typedef struct _EFI_IFR_ACTION_1
{
848 EFI_IFR_OP_HEADER Header
;
849 EFI_IFR_QUESTION_HEADER Question
;
852 typedef struct _EFI_IFR_DATE
{
853 EFI_IFR_OP_HEADER Header
;
854 EFI_IFR_QUESTION_HEADER Question
;
858 #define EFI_QF_DATE_YEAR_SUPPRESS 0x01
859 #define EFI_QF_DATE_MONTH_SUPPRESS 0x02
860 #define EFI_QF_DATE_DAY_SUPPRESS 0x04
862 #define EFI_QF_DATE_STORAGE 0x30
863 #define QF_DATE_STORAGE_NORMAL 0x00
864 #define QF_DATE_STORAGE_TIME 0x10
865 #define QF_DATE_STORAGE_WAKEUP 0x20
890 typedef struct _EFI_IFR_NUMERIC
{
891 EFI_IFR_OP_HEADER Header
;
892 EFI_IFR_QUESTION_HEADER Question
;
894 MINMAXSTEP_DATA data
;
897 #define EFI_IFR_NUMERIC_SIZE 0x03
898 #define EFI_IFR_NUMERIC_SIZE_1 0x00
899 #define EFI_IFR_NUMERIC_SIZE_2 0x01
900 #define EFI_IFR_NUMERIC_SIZE_4 0x02
901 #define EFI_IFR_NUMERIC_SIZE_8 0x03
903 #define EFI_IFR_DISPLAY 0x30
904 #define EFI_IFR_DISPLAY_INT_DEC 0x00
905 #define EFI_IFR_DISPLAY_UINT_DEC 0x10
906 #define EFI_IFR_DISPLAY_UINT_HEX 0x20
908 typedef struct _EFI_IFR_ONE_OF
{
909 EFI_IFR_OP_HEADER Header
;
910 EFI_IFR_QUESTION_HEADER Question
;
912 MINMAXSTEP_DATA data
;
915 typedef struct _EFI_IFR_STRING
{
916 EFI_IFR_OP_HEADER Header
;
917 EFI_IFR_QUESTION_HEADER Question
;
923 #define EFI_IFR_STRING_MULTI_LINE 0x01
925 typedef struct _EFI_IFR_PASSWORD
{
926 EFI_IFR_OP_HEADER Header
;
927 EFI_IFR_QUESTION_HEADER Question
;
932 typedef struct _EFI_IFR_ORDERED_LIST
{
933 EFI_IFR_OP_HEADER Header
;
934 EFI_IFR_QUESTION_HEADER Question
;
937 } EFI_IFR_ORDERED_LIST
;
939 #define EFI_IFR_UNIQUE_SET 0x01
940 #define EFI_IFR_NO_EMPTY_SET 0x02
942 typedef struct _EFI_IFR_TIME
{
943 EFI_IFR_OP_HEADER Header
;
944 EFI_IFR_QUESTION_HEADER Question
;
948 #define QF_TIME_HOUR_SUPPRESS 0x01
949 #define QF_TIME_MINUTE_SUPPRESS 0x02
950 #define QF_TIME_SECOND_SUPPRESS 0x04
952 #define QF_TIME_STORAGE 0x30
953 #define QF_TIME_STORAGE_NORMAL 0x00
954 #define QF_TIME_STORAGE_TIME 0x10
955 #define QF_TIME_STORAGE_WAKEUP 0x20
957 typedef struct _EFI_IFR_DISABLE_IF
{
958 EFI_IFR_OP_HEADER Header
;
959 } EFI_IFR_DISABLE_IF
;
961 typedef struct _EFI_IFR_SUPPRESS_IF
{
962 EFI_IFR_OP_HEADER Header
;
963 } EFI_IFR_SUPPRESS_IF
;
965 typedef struct _EFI_IFR_GRAY_OUT_IF
{
966 EFI_IFR_OP_HEADER Header
;
967 } EFI_IFR_GRAY_OUT_IF
;
969 typedef struct _EFI_IFR_INCONSISTENT_IF
{
970 EFI_IFR_OP_HEADER Header
;
972 } EFI_IFR_INCONSISTENT_IF
;
974 typedef struct _EFI_IFR_NO_SUBMIT_IF
{
975 EFI_IFR_OP_HEADER Header
;
977 } EFI_IFR_NO_SUBMIT_IF
;
979 typedef struct _EFI_IFR_REFRESH
{
980 EFI_IFR_OP_HEADER Header
;
981 UINT8 RefreshInterval
;
984 typedef struct _EFI_IFR_VARSTORE_DEVICE
{
985 EFI_IFR_OP_HEADER Header
;
986 EFI_STRING_ID DevicePath
;
987 } EFI_IFR_VARSTORE_DEVICE
;
989 typedef struct _EFI_IFR_ONE_OF_OPTION
{
990 EFI_IFR_OP_HEADER Header
;
991 EFI_STRING_ID Option
;
994 EFI_IFR_TYPE_VALUE Value
;
995 } EFI_IFR_ONE_OF_OPTION
;
997 #define EFI_IFR_TYPE_NUM_SIZE_8 0x00
998 #define EFI_IFR_TYPE_NUM_SIZE_16 0x01
999 #define EFI_IFR_TYPE_NUM_SIZE_32 0x02
1000 #define EFI_IFR_TYPE_NUM_SIZE_64 0x03
1001 #define EFI_IFR_TYPE_BOOLEAN 0x04
1002 #define EFI_IFR_TYPE_TIME 0x05
1003 #define EFI_IFR_TYPE_DATE 0x06
1004 #define EFI_IFR_TYPE_STRING 0x07
1005 #define EFI_IFR_TYPE_OTHER 0x08
1007 #define EFI_IFR_OPTION_DEFAULT 0x10
1008 #define EFI_IFR_OPTION_DEFAULT_MFG 0x20
1010 typedef struct _EFI_IFR_GUID
{
1011 EFI_IFR_OP_HEADER Header
;
1013 //Optional Data Follows
1016 typedef struct _EFI_IFR_DUP
{
1017 EFI_IFR_OP_HEADER Header
;
1020 typedef struct _EFI_IFR_EQ_ID_ID
{
1021 EFI_IFR_OP_HEADER Header
;
1022 EFI_QUESTION_ID QuestionId1
;
1023 EFI_QUESTION_ID QuestionId2
;
1026 typedef struct _EFI_IFR_EQ_ID_VAL
{
1027 EFI_IFR_OP_HEADER Header
;
1028 EFI_QUESTION_ID QuestionId
;
1030 } EFI_IFR_EQ_ID_VAL
;
1032 typedef struct _EFI_IFR_EQ_ID_LIST
{
1033 EFI_IFR_OP_HEADER Header
;
1034 EFI_QUESTION_ID QuestionId
;
1036 UINT16 ValueList
[1];
1037 } EFI_IFR_EQ_ID_LIST
;
1039 typedef struct _EFI_IFR_QUESTION_REF1
{
1040 EFI_IFR_OP_HEADER Header
;
1041 EFI_QUESTION_ID QuestionId
;
1042 } EFI_IFR_QUESTION_REF1
;
1044 typedef struct _EFI_IFR_UINT8
{
1045 EFI_IFR_OP_HEADER Header
;
1049 typedef struct _EFI_IFR_UINT16
{
1050 EFI_IFR_OP_HEADER Header
;
1054 typedef struct _EFI_IFR_QUESTION_REF2
{
1055 EFI_IFR_OP_HEADER Header
;
1056 } EFI_IFR_QUESTION_REF2
;
1058 typedef struct _EFI_IFR_UINT32
{
1059 EFI_IFR_OP_HEADER Header
;
1063 typedef struct _EFI_IFR_UINT64
{
1064 EFI_IFR_OP_HEADER Header
;
1068 typedef struct _EFI_IFR_QUESTION_REF3
{
1069 EFI_IFR_OP_HEADER Header
;
1070 } EFI_IFR_QUESTION_REF3
;
1072 typedef struct _EFI_IFR_QUESTION_REF3_2
{
1073 EFI_IFR_OP_HEADER Header
;
1074 EFI_STRING_ID DevicePath
;
1075 } EFI_IFR_QUESTION_REF3_2
;
1077 typedef struct _EFI_IFR_QUESTION_REF3_3
{
1078 EFI_IFR_OP_HEADER Header
;
1079 EFI_STRING_ID DevicePath
;
1081 } EFI_IFR_QUESTION_REF3_3
;
1083 typedef struct _EFI_IFR_RULE_REF
{
1084 EFI_IFR_OP_HEADER Header
;
1088 typedef struct _EFI_IFR_STRING_REF1
{
1089 EFI_IFR_OP_HEADER Header
;
1090 EFI_STRING_ID StringId
;
1091 } EFI_IFR_STRING_REF1
;
1093 typedef struct _EFI_IFR_STRING_REF2
{
1094 EFI_IFR_OP_HEADER Header
;
1095 } EFI_IFR_STRING_REF2
;
1097 typedef struct _EFI_IFR_THIS
{
1098 EFI_IFR_OP_HEADER Header
;
1101 typedef struct _EFI_IFR_TRUE
{
1102 EFI_IFR_OP_HEADER Header
;
1105 typedef struct _EFI_IFR_FALSE
{
1106 EFI_IFR_OP_HEADER Header
;
1109 typedef struct _EFI_IFR_ONE
{
1110 EFI_IFR_OP_HEADER Header
;
1113 typedef struct _EFI_IFR_ONES
{
1114 EFI_IFR_OP_HEADER Header
;
1117 typedef struct _EFI_IFR_ZERO
{
1118 EFI_IFR_OP_HEADER Header
;
1121 typedef struct _EFI_IFR_UNDEFINED
{
1122 EFI_IFR_OP_HEADER Header
;
1123 } EFI_IFR_UNDEFINED
;
1125 typedef struct _EFI_IFR_VERSION
{
1126 EFI_IFR_OP_HEADER Header
;
1129 typedef struct _EFI_IFR_LENGTH
{
1130 EFI_IFR_OP_HEADER Header
;
1133 typedef struct _EFI_IFR_NOT
{
1134 EFI_IFR_OP_HEADER Header
;
1137 typedef struct _EFI_IFR_BITWISE_NOT
{
1138 EFI_IFR_OP_HEADER Header
;
1139 } EFI_IFR_BITWISE_NOT
;
1141 typedef struct _EFI_IFR_TO_BOOLEAN
{
1142 EFI_IFR_OP_HEADER Header
;
1143 } EFI_IFR_TO_BOOLEAN
;
1145 #define EFI_IFR_STRING_UNSIGNED_DEC 0
1146 #define EFI_IFR_STRING_SIGNED_DEC 1
1147 #define EFI_IFR_STRING_LOWERCASE_HEX 2
1148 #define EFI_IFR_STRING_UPPERCASE_HEX 3
1150 #define EFI_IFR_STRING_ASCII 0
1151 #define EFI_IFR_STRING_UNICODE 8
1153 typedef struct _EFI_IFR_TO_STRING
{
1154 EFI_IFR_OP_HEADER Header
;
1156 } EFI_IFR_TO_STRING
;
1158 typedef struct _EFI_IFR_TO_UINT
{
1159 EFI_IFR_OP_HEADER Header
;
1162 typedef struct _EFI_IFR_TO_UPPER
{
1163 EFI_IFR_OP_HEADER Header
;
1166 typedef struct _EFI_IFR_TO_LOWER
{
1167 EFI_IFR_OP_HEADER Header
;
1170 typedef struct _EFI_IFR_ADD
{
1171 EFI_IFR_OP_HEADER Header
;
1174 typedef struct _EFI_IFR_AND
{
1175 EFI_IFR_OP_HEADER Header
;
1178 typedef struct _EFI_IFR_BITWISE_AND
{
1179 EFI_IFR_OP_HEADER Header
;
1180 } EFI_IFR_BITWISE_AND
;
1182 typedef struct _EFI_IFR_BITWISE_OR
{
1183 EFI_IFR_OP_HEADER Header
;
1184 } EFI_IFR_BITWISE_OR
;
1186 typedef struct _EFI_IFR_CATENATE
{
1187 EFI_IFR_OP_HEADER Header
;
1190 typedef struct _EFI_IFR_DIVIDE
{
1191 EFI_IFR_OP_HEADER Header
;
1194 typedef struct _EFI_IFR_EQUAL
{
1195 EFI_IFR_OP_HEADER Header
;
1198 typedef struct _EFI_IFR_GREATER_EQUAL
{
1199 EFI_IFR_OP_HEADER Header
;
1200 } EFI_IFR_GREATER_EQUAL
;
1202 typedef struct _EFI_IFR_GREATER_THAN
{
1203 EFI_IFR_OP_HEADER Header
;
1204 } EFI_IFR_GREATER_THAN
;
1206 typedef struct _EFI_IFR_LESS_EQUAL
{
1207 EFI_IFR_OP_HEADER Header
;
1208 } EFI_IFR_LESS_EQUAL
;
1210 typedef struct _EFI_IFR_LESS_THAN
{
1211 EFI_IFR_OP_HEADER Header
;
1212 } EFI_IFR_LESS_THAN
;
1214 typedef struct _EFI_IFR_MATCH
{
1215 EFI_IFR_OP_HEADER Header
;
1218 typedef struct _EFI_IFR_MULTIPLY
{
1219 EFI_IFR_OP_HEADER Header
;
1222 typedef struct _EFI_IFR_MODULO
{
1223 EFI_IFR_OP_HEADER Header
;
1226 typedef struct _EFI_IFR_NOT_EQUAL
{
1227 EFI_IFR_OP_HEADER Header
;
1228 } EFI_IFR_NOT_EQUAL
;
1230 typedef struct _EFI_IFR_OR
{
1231 EFI_IFR_OP_HEADER Header
;
1234 typedef struct _EFI_IFR_SHIFT_LEFT
{
1235 EFI_IFR_OP_HEADER Header
;
1236 } EFI_IFR_SHIFT_LEFT
;
1238 typedef struct _EFI_IFR_SHIFT_RIGHT
{
1239 EFI_IFR_OP_HEADER Header
;
1240 } EFI_IFR_SHIFT_RIGHT
;
1242 typedef struct _EFI_IFR_SUBTRACT
{
1243 EFI_IFR_OP_HEADER Header
;
1246 typedef struct _EFI_IFR_CONDITIONAL
{
1247 EFI_IFR_OP_HEADER Header
;
1248 } EFI_IFR_CONDITIONAL
;
1250 #define EFI_IFR_FF_CASE_SENSITIVE 0x00
1251 #define EFI_IFR_FF_CASE_INSENSITIVE 0x01
1253 typedef struct _EFI_IFR_FIND
{
1254 EFI_IFR_OP_HEADER Header
;
1258 typedef struct _EFI_IFR_MID
{
1259 EFI_IFR_OP_HEADER Header
;
1262 typedef struct _EFI_IFR_TOKEN
{
1263 EFI_IFR_OP_HEADER Header
;
1266 #define EFI_IFR_FLAGS_FIRST_MATCHING 0x00
1267 #define EFI_IFR_FLAGS_FIRST_NON_MATCHING 0x01
1269 typedef struct _EFI_IFR_SPAN
{
1270 EFI_IFR_OP_HEADER Header
;
1389 CHAR16 ShiftedUnicode
;
1390 CHAR16 AltGrUnicode
;
1391 CHAR16 ShiftedAltGrUnicode
;
1393 UINT16 AffectedAttribute
;
1394 } EFI_KEY_DESCRIPTOR
;
1397 /// A key which is affected by all the standard shift modifiers.
1398 /// Most keys would be expected to have this bit active.
1400 #define EFI_AFFECTED_BY_STANDARD_SHIFT 0x0001
1403 /// This key is affected by the caps lock so that if a keyboard driver
1404 /// would need to disambiguate between a key which had a "1" defined
1405 /// versus a "a" character. Having this bit turned on would tell
1406 /// the keyboard driver to use the appropriate shifted state or not.
1408 #define EFI_AFFECTED_BY_CAPS_LOCK 0x0002
1411 /// Similar to the case of CAPS lock, if this bit is active, the key
1412 /// is affected by the num lock being turned on.
1414 #define EFI_AFFECTED_BY_NUM_LOCK 0x0004
1417 UINT16 LayoutLength
;
1419 UINT32 LayoutDescriptorStringOffset
;
1420 UINT8 DescriptorCount
;
1421 // EFI_KEY_DESCRIPTOR Descriptors[];
1422 } EFI_HII_KEYBOARD_LAYOUT
;
1425 EFI_HII_PACKAGE_HEADER Header
;
1427 // EFI_HII_KEYBOARD_LAYOUT Layout[];
1428 } EFI_HII_KEYBOARD_PACKAGE_HDR
;
1431 // CHAR16 Language[]; // RFC4646 Language Code
1433 // CHAR16 DescriptionString[];
1434 //} EFI_DESCRIPTION_STRING;
1437 // UINT16 DescriptionCount;
1438 // EFI_DESCRIPTION_STRING DescriptionString[];
1439 //} EFI_DESCRIPTION_STRING_BUNDLE;
1444 #define EFI_NULL_MODIFIER 0x0000
1445 #define EFI_LEFT_CONTROL_MODIFIER 0x0001
1446 #define EFI_RIGHT_CONTROL_MODIFIER 0x0002
1447 #define EFI_LEFT_ALT_MODIFIER 0x0003
1448 #define EFI_RIGHT_ALT_MODIFIER 0x0004
1449 #define EFI_ALT_GR_MODIFIER 0x0005
1450 #define EFI_INSERT_MODIFIER 0x0006
1451 #define EFI_DELETE_MODIFIER 0x0007
1452 #define EFI_PAGE_DOWN_MODIFIER 0x0008
1453 #define EFI_PAGE_UP_MODIFIER 0x0009
1454 #define EFI_HOME_MODIFIER 0x000A
1455 #define EFI_END_MODIFIER 0x000B
1456 #define EFI_LEFT_SHIFT_MODIFIER 0x000C
1457 #define EFI_RIGHT_SHIFT_MODIFIER 0x000D
1458 #define EFI_CAPS_LOCK_MODIFIER 0x000E
1459 #define EFI_NUM_LOCK_MODIFIER 0x000F
1460 #define EFI_LEFT_ARROW_MODIFIER 0x0010
1461 #define EFI_RIGHT_ARROW_MODIFIER 0x0011
1462 #define EFI_DOWN_ARROW_MODIFIER 0x0012
1463 #define EFI_UP_ARROW_MODIFIER 0x0013
1464 #define EFI_NS_KEY_MODIFIER 0x0014
1465 #define EFI_NS_KEY_DEPENDENCY_MODIFIER 0x0015
1466 #define EFI_FUNCTION_KEY_ONE_MODIFIER 0x0016
1467 #define EFI_FUNCTION_KEY_TWO_MODIFIER 0x0017
1468 #define EFI_FUNCTION_KEY_THREE_MODIFIER 0x0018
1469 #define EFI_FUNCTION_KEY_FOUR_MODIFIER 0x0019
1470 #define EFI_FUNCTION_KEY_FIVE_MODIFIER 0x001A
1471 #define EFI_FUNCTION_KEY_SIX_MODIFIER 0x001B
1472 #define EFI_FUNCTION_KEY_SEVEN_MODIFIER 0x001C
1473 #define EFI_FUNCTION_KEY_EIGHT_MODIFIER 0x001D
1474 #define EFI_FUNCTION_KEY_NINE_MODIFIER 0x001E
1475 #define EFI_FUNCTION_KEY_TEN_MODIFIER 0x001F
1476 #define EFI_FUNCTION_KEY_ELEVEN_MODIFIER 0x0020
1477 #define EFI_FUNCTION_KEY_TWELVE_MODIFIER 0x0021
1480 // Keys that have multiple control functions based on modifier
1481 // settings are handled in the keyboard driver implementation.
1482 // For instance PRINT_KEY might have a modifier held down and
1483 // is still a nonprinting character, but might have an alternate
1484 // control function like SYSREQUEST
1486 #define EFI_PRINT_MODIFIER 0x0022
1487 #define EFI_SYS_REQUEST_MODIFIER 0x0023
1488 #define EFI_SCROLL_LOCK_MODIFIER 0x0024
1489 #define EFI_PAUSE_MODIFIER 0x0025
1490 #define EFI_BREAK_MODIFIER 0x0026
1492 #define EFI_LEFT_LOGO_MODIFIER 0x0027
1493 #define EFI_RIGHT_LOGO_MODIFIER 0x0028
1494 #define EFI_MENU_MODIFIER 0x0029
1501 /// References to string tokens must use this macro to enable scanning for
1505 /// STRING_TOKEN is not defined in UEFI specification. But it is placed
1506 /// here for the easy access by C files and VFR source files.
1508 #define STRING_TOKEN(t) t