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