//! Human Interface Infrastructure (HII) Protocol //! //! Database manager for HII-related data structures. pub const PROTOCOL_GUID: crate::base::Guid = crate::base::Guid::from_fields( 0xef9fc172, 0xa1b2, 0x4693, 0xb3, 0x27, &[0x6d, 0x32, 0xfc, 0x41, 0x60, 0x42], ); pub const SET_KEYBOARD_LAYOUT_EVENT_GUID: crate::base::Guid = crate::base::Guid::from_fields( 0x14982a4f, 0xb0ed, 0x45b8, 0xa8, 0x11, &[0x5a, 0x7a, 0x9b, 0xc2, 0x32, 0xdf], ); pub type ProtocolNewPackageList = eficall! {fn( *const Protocol, *const crate::hii::PackageListHeader, crate::base::Handle, *mut crate::hii::Handle, ) -> crate::base::Status}; pub type ProtocolRemovePackageList = eficall! {fn( *const Protocol, crate::hii::Handle, ) -> crate::base::Status}; pub type ProtocolUpdatePackageList = eficall! {fn( *const Protocol, crate::hii::Handle, *const crate::hii::PackageListHeader, ) -> crate::base::Status}; pub type ProtocolListPackageLists = eficall! {fn( *const Protocol, u8, *const crate::base::Guid, *mut usize, *mut crate::hii::Handle, ) -> crate::base::Status}; pub type ProtocolExportPackageLists = eficall! {fn( *const Protocol, crate::hii::Handle, *mut usize, *mut crate::hii::PackageListHeader, ) -> crate::base::Status}; pub type ProtocolRegisterPackageNotify = eficall! {fn( *const Protocol, u8, *const crate::base::Guid, Notify, NotifyType, *mut crate::base::Handle, ) -> crate::base::Status}; pub type ProtocolUnregisterPackageNotify = eficall! {fn( *const Protocol, crate::base::Handle, ) -> crate::base::Status}; pub type ProtocolFindKeyboardLayouts = eficall! {fn( *const Protocol, *mut u16, *mut crate::base::Guid, ) -> crate::base::Status}; pub type ProtocolGetKeyboardLayout = eficall! {fn( *const Protocol, *const crate::base::Guid, *mut u16, *mut KeyboardLayout, ) -> crate::base::Status}; pub type ProtocolSetKeyboardLayout = eficall! {fn( *const Protocol, *mut crate::base::Guid, ) -> crate::base::Status}; pub type ProtocolGetPackageListHandle = eficall! {fn( *const Protocol, crate::hii::Handle, *mut crate::base::Handle, ) -> crate::base::Status}; #[repr(C)] pub struct Protocol { pub new_package_list: ProtocolNewPackageList, pub remove_package_list: ProtocolRemovePackageList, pub update_package_list: ProtocolUpdatePackageList, pub list_package_lists: ProtocolListPackageLists, pub export_package_lists: ProtocolExportPackageLists, pub register_package_notify: ProtocolRegisterPackageNotify, pub unregister_package_notify: ProtocolUnregisterPackageNotify, pub find_keyboard_layouts: ProtocolFindKeyboardLayouts, pub get_keyboard_layout: ProtocolGetKeyboardLayout, pub set_keyboard_layout: ProtocolSetKeyboardLayout, pub get_package_list_handle: ProtocolGetPackageListHandle, } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct KeyboardLayout { pub layout_length: u16, pub guid: crate::base::Guid, pub layout_descriptor_string_offset: u32, pub descriptor_count: u8, pub descriptors: [KeyDescriptor; N], } #[repr(C)] #[derive(Clone, Copy, Debug)] pub struct KeyDescriptor { pub key: Key, pub unicode: crate::base::Char16, pub shifted_unicode: crate::base::Char16, pub alt_gr_unicode: crate::base::Char16, pub shifted_alt_gr_unicode: crate::base::Char16, pub modifier: u16, pub affected_attribute: u16, } pub const AFFECTED_BY_STANDARD_SHIFT: u16 = 0x0001; pub const AFFECTED_BY_CAPS_LOCK: u16 = 0x0002; pub const AFFECTED_BY_NUM_LOCK: u16 = 0x0004; pub type Key = u32; pub const EFI_KEY_LCTRL: Key = 0x00000000; pub const EFI_KEY_A0: Key = 0x00000001; pub const EFI_KEY_LALT: Key = 0x00000002; pub const EFI_KEY_SPACE_BAR: Key = 0x00000003; pub const EFI_KEY_A2: Key = 0x00000004; pub const EFI_KEY_A3: Key = 0x00000005; pub const EFI_KEY_A4: Key = 0x00000006; pub const EFI_KEY_RCTRL: Key = 0x00000007; pub const EFI_KEY_LEFT_ARROW: Key = 0x00000008; pub const EFI_KEY_DOWN_ARROW: Key = 0x00000009; pub const EFI_KEY_RIGHT_ARROW: Key = 0x0000000a; pub const EFI_KEY_ZERO: Key = 0x0000000b; pub const EFI_KEY_PERIOD: Key = 0x0000000c; pub const EFI_KEY_ENTER: Key = 0x0000000d; pub const EFI_KEY_LSHIFT: Key = 0x0000000e; pub const EFI_KEY_B0: Key = 0x0000000f; pub const EFI_KEY_B1: Key = 0x00000010; pub const EFI_KEY_B2: Key = 0x00000011; pub const EFI_KEY_B3: Key = 0x00000012; pub const EFI_KEY_B4: Key = 0x00000013; pub const EFI_KEY_B5: Key = 0x00000014; pub const EFI_KEY_B6: Key = 0x00000015; pub const EFI_KEY_B7: Key = 0x00000016; pub const EFI_KEY_B8: Key = 0x00000017; pub const EFI_KEY_B9: Key = 0x00000018; pub const EFI_KEY_B10: Key = 0x00000019; pub const EFI_KEY_RSHIFT: Key = 0x0000001a; pub const EFI_KEY_UP_ARROW: Key = 0x0000001b; pub const EFI_KEY_ONE: Key = 0x0000001c; pub const EFI_KEY_TWO: Key = 0x0000001d; pub const EFI_KEY_THREE: Key = 0x0000001e; pub const EFI_KEY_CAPS_LOCK: Key = 0x0000001f; pub const EFI_KEY_C1: Key = 0x00000020; pub const EFI_KEY_C2: Key = 0x00000021; pub const EFI_KEY_C3: Key = 0x00000022; pub const EFI_KEY_C4: Key = 0x00000023; pub const EFI_KEY_C5: Key = 0x00000024; pub const EFI_KEY_C6: Key = 0x00000025; pub const EFI_KEY_C7: Key = 0x00000026; pub const EFI_KEY_C8: Key = 0x00000027; pub const EFI_KEY_C9: Key = 0x00000028; pub const EFI_KEY_C10: Key = 0x00000029; pub const EFI_KEY_C11: Key = 0x0000002a; pub const EFI_KEY_C12: Key = 0x0000002b; pub const EFI_KEY_FOUR: Key = 0x0000002c; pub const EFI_KEY_FIVE: Key = 0x0000002d; pub const EFI_KEY_SIX: Key = 0x0000002e; pub const EFI_KEY_PLUS: Key = 0x0000002f; pub const EFI_KEY_TAB: Key = 0x00000030; pub const EFI_KEY_D1: Key = 0x00000031; pub const EFI_KEY_D2: Key = 0x00000032; pub const EFI_KEY_D3: Key = 0x00000033; pub const EFI_KEY_D4: Key = 0x00000034; pub const EFI_KEY_D5: Key = 0x00000035; pub const EFI_KEY_D6: Key = 0x00000036; pub const EFI_KEY_D7: Key = 0x00000037; pub const EFI_KEY_D8: Key = 0x00000038; pub const EFI_KEY_D9: Key = 0x00000039; pub const EFI_KEY_D10: Key = 0x0000003a; pub const EFI_KEY_D11: Key = 0x0000003b; pub const EFI_KEY_D12: Key = 0x0000003c; pub const EFI_KEY_D13: Key = 0x0000003d; pub const EFI_KEY_DEL: Key = 0x0000003e; pub const EFI_KEY_END: Key = 0x0000003f; pub const EFI_KEY_PGDN: Key = 0x00000040; pub const EFI_KEY_SEVEN: Key = 0x00000041; pub const EFI_KEY_EIGHT: Key = 0x00000042; pub const EFI_KEY_NINE: Key = 0x00000043; pub const EFI_KEY_E0: Key = 0x00000044; pub const EFI_KEY_E1: Key = 0x00000045; pub const EFI_KEY_E2: Key = 0x00000046; pub const EFI_KEY_E3: Key = 0x00000047; pub const EFI_KEY_E4: Key = 0x00000048; pub const EFI_KEY_E5: Key = 0x00000049; pub const EFI_KEY_E6: Key = 0x0000004a; pub const EFI_KEY_E7: Key = 0x0000004b; pub const EFI_KEY_E8: Key = 0x0000004c; pub const EFI_KEY_E9: Key = 0x0000004d; pub const EFI_KEY_E10: Key = 0x0000004e; pub const EFI_KEY_E11: Key = 0x0000004f; pub const EFI_KEY_E12: Key = 0x00000050; pub const EFI_KEY_BACK_SPACE: Key = 0x00000051; pub const EFI_KEY_INS: Key = 0x00000052; pub const EFI_KEY_HOME: Key = 0x00000053; pub const EFI_KEY_PGUP: Key = 0x00000054; pub const EFI_KEY_NLCK: Key = 0x00000055; pub const EFI_KEY_SLASH: Key = 0x00000056; pub const EFI_KEY_ASTERISK: Key = 0x00000057; pub const EFI_KEY_MINUS: Key = 0x00000058; pub const EFI_KEY_ESC: Key = 0x00000059; pub const EFI_KEY_F1: Key = 0x0000005a; pub const EFI_KEY_F2: Key = 0x0000005b; pub const EFI_KEY_F3: Key = 0x0000005c; pub const EFI_KEY_F4: Key = 0x0000005d; pub const EFI_KEY_F5: Key = 0x0000005e; pub const EFI_KEY_F6: Key = 0x0000005f; pub const EFI_KEY_F7: Key = 0x00000060; pub const EFI_KEY_F8: Key = 0x00000061; pub const EFI_KEY_F9: Key = 0x00000062; pub const EFI_KEY_F10: Key = 0x00000063; pub const EFI_KEY_F11: Key = 0x00000064; pub const EFI_KEY_F12: Key = 0x00000065; pub const EFI_KEY_PRINT: Key = 0x00000066; pub const EFI_KEY_SLCK: Key = 0x00000067; pub const EFI_KEY_PAUSE: Key = 0x00000068; pub const NULL_MODIFIER: u16 = 0x0000; pub const LEFT_CONTROL_MODIFIER: u16 = 0x0001; pub const RIGHT_CONTROL_MODIFIER: u16 = 0x0002; pub const LEFT_ALT_MODIFIER: u16 = 0x0003; pub const RIGHT_ALT_MODIFIER: u16 = 0x0004; pub const ALT_GR_MODIFIER: u16 = 0x0005; pub const INSERT_MODIFIER: u16 = 0x0006; pub const DELETE_MODIFIER: u16 = 0x0007; pub const PAGE_DOWN_MODIFIER: u16 = 0x0008; pub const PAGE_UP_MODIFIER: u16 = 0x0009; pub const HOME_MODIFIER: u16 = 0x000A; pub const END_MODIFIER: u16 = 0x000B; pub const LEFT_SHIFT_MODIFIER: u16 = 0x000C; pub const RIGHT_SHIFT_MODIFIER: u16 = 0x000D; pub const CAPS_LOCK_MODIFIER: u16 = 0x000E; pub const NUM_LOCK_MODIFIER: u16 = 0x000F; pub const LEFT_ARROW_MODIFIER: u16 = 0x0010; pub const RIGHT_ARROW_MODIFIER: u16 = 0x0011; pub const DOWN_ARROW_MODIFIER: u16 = 0x0012; pub const UP_ARROW_MODIFIER: u16 = 0x0013; pub const NS_KEY_MODIFIER: u16 = 0x0014; pub const NS_KEY_DEPENDENCY_MODIFIER: u16 = 0x0015; pub const FUNCTION_KEY_ONE_MODIFIER: u16 = 0x0016; pub const FUNCTION_KEY_TWO_MODIFIER: u16 = 0x0017; pub const FUNCTION_KEY_THREE_MODIFIER: u16 = 0x0018; pub const FUNCTION_KEY_FOUR_MODIFIER: u16 = 0x0019; pub const FUNCTION_KEY_FIVE_MODIFIER: u16 = 0x001A; pub const FUNCTION_KEY_SIX_MODIFIER: u16 = 0x001B; pub const FUNCTION_KEY_SEVEN_MODIFIER: u16 = 0x001C; pub const FUNCTION_KEY_EIGHT_MODIFIER: u16 = 0x001D; pub const FUNCTION_KEY_NINE_MODIFIER: u16 = 0x001E; pub const FUNCTION_KEY_TEN_MODIFIER: u16 = 0x001F; pub const FUNCTION_KEY_ELEVEN_MODIFIER: u16 = 0x0020; pub const FUNCTION_KEY_TWELVE_MODIFIER: u16 = 0x0021; pub const PRINT_MODIFIER: u16 = 0x0022; pub const SYS_REQUEST_MODIFIER: u16 = 0x0023; pub const SCROLL_LOCK_MODIFIER: u16 = 0x0024; pub const PAUSE_MODIFIER: u16 = 0x0025; pub const BREAK_MODIFIER: u16 = 0x0026; pub const LEFT_LOGO_MODIFIER: u16 = 0x0027; pub const RIGHT_LOGO_MODIFIER: u16 = 0x0028; pub const MENU_MODIFIER: u16 = 0x0029; pub type Notify = eficall! {fn( u8, *const crate::base::Guid, *const crate::hii::PackageHeader, crate::hii::Handle, NotifyType, ) -> crate::base::Status}; pub type NotifyType = usize; pub const NOTIFY_NEW_PACK: NotifyType = 0x00000001; pub const NOTIFY_REMOVE_PACK: NotifyType = 0x00000002; pub const NOTIFY_EXPORT_PACK: NotifyType = 0x00000004; pub const NOTIFY_ADD_PACK: NotifyType = 0x00000008;