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;
7
8use crate::{Char16, Guid, newtype_enum};
9
10pub type HiiHandle = *mut core::ffi::c_void;
11
12/// EFI_HII_PACKAGE_HEADER
13#[derive(Debug)]
14#[repr(C)]
15pub struct HiiPackageHeader {
16    pub length_and_type: u32,
17    pub data: [u8; 0],
18}
19
20/// EFI_HII_PACKAGE_LIST_HEADER
21#[derive(Debug)]
22#[repr(C)]
23pub struct HiiPackageListHeader {
24    pub package_list_guid: Guid,
25    pub package_length: u32,
26}
27
28newtype_enum! {
29    /// EFI_KEY: A physical key on a keyboard.
30    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
149// NOTE: This has no associated type in UEFI; They are all top-level defines.
150newtype_enum! {
151    /// Key modifier values
152    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/// EFI_KEY_DESCRIPTOR
199#[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}