uefi_raw/protocol/hii/
mod.rs

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