From 5ada11449af8dac711bb977662ad5738fde44c14 Mon Sep 17 00:00:00 2001 From: Heppokoyuki Date: Mon, 9 Dec 2019 14:26:13 +0900 Subject: [PATCH] fix con_in difinition and add EFI_SIMPLE_TEXT_INPUT_PROTOCOL difinition --- lib/std/os/uefi/protocols.zig | 1 + .../protocols/simple_text_input_protocol.zig | 30 +++++++++++++++++++ lib/std/os/uefi/tables/system_table.zig | 4 +-- 3 files changed, 33 insertions(+), 2 deletions(-) create mode 100644 lib/std/os/uefi/protocols/simple_text_input_protocol.zig diff --git a/lib/std/os/uefi/protocols.zig b/lib/std/os/uefi/protocols.zig index f3c3747e1e..58f342ac22 100644 --- a/lib/std/os/uefi/protocols.zig +++ b/lib/std/os/uefi/protocols.zig @@ -5,6 +5,7 @@ pub const DevicePathProtocol = @import("protocols/device_path_protocol.zig").Dev pub const InputKey = @import("protocols/simple_text_input_ex_protocol.zig").InputKey; pub const KeyData = @import("protocols/simple_text_input_ex_protocol.zig").KeyData; pub const KeyState = @import("protocols/simple_text_input_ex_protocol.zig").KeyState; +pub const SimpleTextInputProtocol = @import("protocols/simple_text_input_protocol.zig").SimpleTextInputProtocol; pub const SimpleTextInputExProtocol = @import("protocols/simple_text_input_ex_protocol.zig").SimpleTextInputExProtocol; pub const SimpleTextOutputMode = @import("protocols/simple_text_output_protocol.zig").SimpleTextOutputMode; diff --git a/lib/std/os/uefi/protocols/simple_text_input_protocol.zig b/lib/std/os/uefi/protocols/simple_text_input_protocol.zig new file mode 100644 index 0000000000..e1c5f6446f --- /dev/null +++ b/lib/std/os/uefi/protocols/simple_text_input_protocol.zig @@ -0,0 +1,30 @@ +const uefi = @import("std").os.uefi; +const Event = uefi.Event; +const Guid = uefi.Guid; + +/// Character input devices, e.g. Keyboard +pub const SimpleTextInputProtocol = extern struct { + _reset: extern fn (*const SimpleTextInputProtocol, bool) usize, + _read_key_stroke: extern fn (*const SimpleTextInputProtocol, *uefi.protocols.InputKey) usize, + wait_for_key: Event, + + /// Resets the input device hardware. + pub fn reset(self: *const SimpleTextInputProtocol, verify: bool) usize { + return self._reset(self, verify); + } + + /// Reads the next keystroke from the input device. + pub fn readKeyStroke(self: *const SimpleTextInputProtocol, input_key: *uefi.protocols.InputKey) usize { + return self._read_key_stroke(self, input_key); + } + + pub const guid align(8) = Guid{ + .time_low = 0x387477c1, + .time_mid = 0x69c7, + .time_high_and_version = 0x11d2, + .clock_seq_high_and_reserved = 0x8e, + .clock_seq_low = 0x39, + .node = [_]u8{ 0x00, 0xa0, 0xc9, 0x69, 0x72, 0x3b }, + }; +}; + diff --git a/lib/std/os/uefi/tables/system_table.zig b/lib/std/os/uefi/tables/system_table.zig index 3e0fd589e3..6d949ee19c 100644 --- a/lib/std/os/uefi/tables/system_table.zig +++ b/lib/std/os/uefi/tables/system_table.zig @@ -3,7 +3,7 @@ const BootServices = uefi.tables.BootServices; const ConfigurationTable = uefi.tables.ConfigurationTable; const Handle = uefi.Handle; const RuntimeServices = uefi.tables.RuntimeServices; -const SimpleTextInputExProtocol = uefi.protocols.SimpleTextInputExProtocol; +const SimpleTextInputProtocol = uefi.protocols.SimpleTextInputProtocol; const SimpleTextOutputProtocol = uefi.protocols.SimpleTextOutputProtocol; const TableHeader = uefi.tables.TableHeader; @@ -22,7 +22,7 @@ pub const SystemTable = extern struct { firmware_vendor: [*]u16, firmware_revision: u32, console_in_handle: ?Handle, - con_in: ?*SimpleTextInputExProtocol, + con_in: ?*SimpleTextInputProtocol, console_out_handle: ?Handle, con_out: ?*SimpleTextOutputProtocol, standard_error_handle: ?Handle,