Skip to main content

uefi_raw/protocol/hii/
mod.rs

1// SPDX-License-Identifier: MIT OR Apache-2.0
2
3//! HII Protocols
4
5pub mod config;
6pub mod database;
7pub mod font;
8pub mod form_browser;
9pub mod image;
10pub mod popup;
11pub mod string;
12
13use crate::{Char16, Guid, newtype_enum};
14
15pub type HiiHandle = *mut core::ffi::c_void;
16
17pub type QuestionId = u16;
18pub type ImageId = u16;
19pub type StringId = u16;
20pub type FormId = u16;
21pub type VarstoreId = u16;
22pub type AnimationId = u16;
23
24/// EFI_HII_PACKAGE_HEADER
25#[derive(Debug)]
26#[repr(C)]
27pub struct HiiPackageHeader {
28    pub length_and_type: u32,
29    pub data: [u8; 0],
30}
31
32/// EFI_HII_PACKAGE_LIST_HEADER
33#[derive(Debug)]
34#[repr(C)]
35pub struct HiiPackageListHeader {
36    pub package_list_guid: Guid,
37    pub package_length: u32,
38}
39
40newtype_enum! {
41    /// EFI_KEY: A physical key on a keyboard.
42    pub enum Key: u32 => {
43        LCTRL = 0,
44        A0 = 1,
45        LALT = 2,
46        SPACEBAR = 3,
47        A2 = 4,
48        A3 = 5,
49        A4 = 6,
50        RCTRL = 7,
51        LEFT_ARROW = 8,
52        DOWN_ARROW = 9,
53        RIGHT_ARROW = 10,
54        ZERO = 11,
55        PERIOD = 12,
56        ENTER = 13,
57        LSHIFT = 14,
58        B0 = 15,
59        B1 = 16,
60        B2 = 17,
61        B3 = 18,
62        B4 = 19,
63        B5 = 20,
64        B6 = 21,
65        B7 = 22,
66        B8 = 23,
67        B9 = 24,
68        B10 = 25,
69        RSHIFT = 26,
70        UP_ARROW = 27,
71        ONE = 28,
72        TWO = 29,
73        THREE = 30,
74        CAPS_LOCK = 31,
75        C1 = 32,
76        C2 = 33,
77        C3 = 34,
78        C4 = 35,
79        C5 = 36,
80        C6 = 37,
81        C7 = 38,
82        C8 = 39,
83        C9 = 40,
84        C10 = 41,
85        C11 = 42,
86        C12 = 43,
87        FOUR = 44,
88        FIVE = 45,
89        SIX = 46,
90        PLUS = 47,
91        TAB = 48,
92        D1 = 49,
93        D2 = 50,
94        D3 = 51,
95        D4 = 52,
96        D5 = 53,
97        D6 = 54,
98        D7 = 55,
99        D8 = 56,
100        D9 = 57,
101        D10 = 58,
102        D11 = 59,
103        D12 = 60,
104        D13 = 61,
105        DEL = 62,
106        END = 63,
107        PG_DN = 64,
108        SEVEN = 65,
109        EIGHT = 66,
110        NINE = 67,
111        E0 = 68,
112        E1 = 69,
113        E2 = 70,
114        E3 = 71,
115        E4 = 72,
116        E5 = 73,
117        E6 = 74,
118        E7 = 75,
119        E8 = 76,
120        E9 = 77,
121        E10 = 78,
122        E11 = 79,
123        E12 = 80,
124        BACK_SPACE = 81,
125        INS = 82,
126        HOME = 83,
127        PG_UP = 84,
128        NLCK = 85,
129        SLASH = 86,
130        ASTERISK = 87,
131        MINUS = 88,
132        ESC = 89,
133        F1 = 90,
134        F2 = 91,
135        F3 = 92,
136        F4 = 93,
137        F5 = 94,
138        F6 = 95,
139        F7 = 96,
140        F8 = 97,
141        F9 = 98,
142        F10 = 99,
143        F11 = 100,
144        F12 = 101,
145        PRINT = 102,
146        SLCK = 103,
147        PAUSE = 104,
148        INTL0 = 105,
149        INTL1 = 106,
150        INTL2 = 107,
151        INTL3 = 108,
152        INTL4 = 109,
153        INTL5 = 110,
154        INTL6 = 111,
155        INTL7 = 112,
156        INTL8 = 113,
157        INTL9 = 114,
158    }
159}
160
161// NOTE: This has no associated type in UEFI; They are all top-level defines.
162newtype_enum! {
163    /// Key modifier values
164    pub enum Modifier: u16 => {
165        NULL = 0x0000,
166        LEFT_CONTROL = 0x0001,
167        RIGHT_CONTROL = 0x0002,
168        LEFT_ALT = 0x0003,
169        RIGHT_ALT = 0x0004,
170        ALT_GR = 0x0005,
171        INSERT = 0x0006,
172        DELETE = 0x0007,
173        PAGE_DOWN = 0x0008,
174        PAGE_UP = 0x0009,
175        HOME = 0x000A,
176        END = 0x000B,
177        LEFT_SHIFT = 0x000C,
178        RIGHT_SHIFT = 0x000D,
179        CAPS_LOCK = 0x000E,
180        NUM_LOCK = 0x000F,
181        LEFT_ARROW = 0x0010,
182        RIGHT_ARROW = 0x0011,
183        DOWN_ARROW = 0x0012,
184        UP_ARROW = 0x0013,
185        NS_KEY = 0x0014,
186        NS_KEY_DEPENDENCY = 0x0015,
187        FUNCTION_KEY_ONE = 0x0016,
188        FUNCTION_KEY_TWO = 0x0017,
189        FUNCTION_KEY_THREE = 0x0018,
190        FUNCTION_KEY_FOUR = 0x0019,
191        FUNCTION_KEY_FIVE = 0x001A,
192        FUNCTION_KEY_SIX = 0x001B,
193        FUNCTION_KEY_SEVEN = 0x001C,
194        FUNCTION_KEY_EIGHT = 0x001D,
195        FUNCTION_KEY_NINE = 0x001E,
196        FUNCTION_KEY_TEN = 0x001F,
197        FUNCTION_KEY_ELEVEN = 0x0020,
198        FUNCTION_KEY_TWELVE = 0x0021,
199        PRINT = 0x0022,
200        SYS_REQUEST = 0x0023,
201        SCROLL_LOCK = 0x0024,
202        PAUSE = 0x0025,
203        BREAK = 0x0026,
204        LEFT_LOGO = 0x0027,
205        RIGHT_LOGO = 0x0028,
206        MENU = 0x0029,
207    }
208}
209
210/// EFI_KEY_DESCRIPTOR
211#[derive(Debug)]
212#[repr(C)]
213pub struct KeyDescriptor {
214    pub key: Key,
215    pub unicode: Char16,
216    pub shifted_unicode: Char16,
217    pub alt_gr_unicode: Char16,
218    pub shifted_alt_gr_unicode: Char16,
219    pub modifier: u16,
220    pub affected_attribute: u16,
221}