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