const uefi = @import("std").os.uefi; const Event = uefi.Event; const Guid = uefi.Guid; /// UEFI Specification, Version 2.8, 12.3 pub const SimpleTextInputExProtocol = extern struct { _reset: extern fn (*const SimpleTextInputExProtocol, bool) usize, _read_key_stroke_ex: extern fn (*const SimpleTextInputExProtocol, *KeyData) usize, wait_for_key_ex: *Event, _set_state: extern fn (*const SimpleTextInputExProtocol, *const u8) usize, _register_key_notify: extern fn (*const SimpleTextInputExProtocol, *const KeyData, extern fn (*const KeyData) usize, **c_void) usize, _unregister_key_notify: extern fn (*const SimpleTextInputExProtocol, *const c_void) usize, pub fn reset(self: *const SimpleTextInputExProtocol, verify: bool) usize { return self._reset(self, verify); } pub fn readKeyStrokeEx(self: *const SimpleTextInputExProtocol, key_data: *KeyData) usize { return self._read_key_stroke_ex(self, key_data); } pub fn setState(self: *const SimpleTextInputExProtocol, state: *const u8) usize { return self._set_state(self, state); } pub fn registerKeyNotify(self: *const SimpleTextInputExProtocol, key_data: *const KeyData, notify: extern fn (*const KeyData) usize, handle: **c_void) usize { return self._register_key_notify(self, key_data, notify, handle); } pub fn unregisterKeyNotify(self: *const SimpleTextInputExProtocol, handle: *const c_void) usize { return self._unregister_key_notify(self, handle); } pub const guid align(8) = Guid{ .time_low = 0xdd9e7534, .time_mid = 0x7762, .time_high_and_version = 0x4698, .clock_seq_high_and_reserved = 0x8c, .clock_seq_low = 0x14, .node = [_]u8{ 0xf5, 0x85, 0x17, 0xa6, 0x25, 0xaa }, }; }; pub const KeyData = extern struct { key: InputKey, key_state: KeyState, pub fn init() KeyData { return KeyData{ .key = undefined, .key_state = undefined, }; } }; pub const KeyState = extern struct { key_shift_state: u32, key_toggle_state: u8, pub const shift_state_valid: u32 = 0x80000000; pub const right_shift_pressed: u32 = 0x00000001; pub const left_shift_pressed: u32 = 0x00000002; pub const right_control_pressed: u32 = 0x00000004; pub const left_control_pressed: u32 = 0x00000008; pub const right_alt_pressed: u32 = 0x00000010; pub const left_alt_pressed: u32 = 0x00000020; pub const right_logo_pressed: u32 = 0x00000040; pub const left_logo_pressed: u32 = 0x00000080; pub const menu_key_pressed: u32 = 0x00000100; pub const sys_req_pressed: u32 = 0x00000200; pub const toggle_state_valid: u8 = 0x80; pub const key_state_exposed: u8 = 0x40; pub const scroll_lock_active: u8 = 0x01; pub const num_lock_active: u8 = 0x02; pub const caps_lock_active: u8 = 0x04; }; pub const InputKey = extern struct { scan_code: u16, unicode_char: u16, };