aboutsummaryrefslogtreecommitdiff
path: root/std/os/uefi/protocols/absolute_pointer_protocol.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2019-09-13 14:11:00 -0400
committerAndrew Kelley <andrew@ziglang.org>2019-09-13 14:11:00 -0400
commit187a6d198fd06dfedbb121aa5a79791b34b24794 (patch)
tree774caf931a1c0b89698a5ef37dbb1912247182ee /std/os/uefi/protocols/absolute_pointer_protocol.zig
parenteb7d36ae0d240b8ef5421703e613d164cf691d8d (diff)
parentc15e464320ebb8c64ae19005e44ba5cb711f83c6 (diff)
downloadzig-187a6d198fd06dfedbb121aa5a79791b34b24794.tar.gz
zig-187a6d198fd06dfedbb121aa5a79791b34b24794.zip
Merge branch 'nrdmn-uefi'
closes #2944
Diffstat (limited to 'std/os/uefi/protocols/absolute_pointer_protocol.zig')
-rw-r--r--std/os/uefi/protocols/absolute_pointer_protocol.zig53
1 files changed, 53 insertions, 0 deletions
diff --git a/std/os/uefi/protocols/absolute_pointer_protocol.zig b/std/os/uefi/protocols/absolute_pointer_protocol.zig
new file mode 100644
index 0000000000..df5a930319
--- /dev/null
+++ b/std/os/uefi/protocols/absolute_pointer_protocol.zig
@@ -0,0 +1,53 @@
+const uefi = @import("std").os.uefi;
+const Event = uefi.Event;
+const Guid = uefi.Guid;
+
+/// UEFI Specification, Version 2.8, 12.7
+pub const AbsolutePointerProtocol = extern struct {
+ _reset: extern fn (*const AbsolutePointerProtocol, bool) usize,
+ _get_state: extern fn (*const AbsolutePointerProtocol, *AbsolutePointerState) usize,
+ wait_for_input: Event,
+ mode: *AbsolutePointerMode,
+
+ pub fn reset(self: *const AbsolutePointerProtocol, verify: bool) usize {
+ return self._reset(self, verify);
+ }
+
+ pub fn getState(self: *const AbsolutePointerProtocol, state: *AbsolutePointerState) usize {
+ return self._get_state(self, state);
+ }
+
+ pub const guid align(8) = Guid{
+ .time_low = 0x8d59d32b,
+ .time_mid = 0xc655,
+ .time_high_and_version = 0x4ae9,
+ .clock_seq_high_and_reserved = 0x9b,
+ .clock_seq_low = 0x15,
+ .node = [_]u8{ 0xf2, 0x59, 0x04, 0x99, 0x2a, 0x43 },
+ };
+};
+
+pub const AbsolutePointerMode = extern struct {
+ absolute_min_x: u64,
+ absolute_min_y: u64,
+ absolute_min_z: u64,
+ absolute_max_x: u64,
+ absolute_max_y: u64,
+ absolute_max_z: u64,
+ attributes: packed struct {
+ supports_alt_active: bool,
+ supports_pressure_as_z: bool,
+ _pad1: u30,
+ },
+};
+
+pub const AbsolutePointerState = extern struct {
+ current_x: u64 = undefined,
+ current_y: u64 = undefined,
+ current_z: u64 = undefined,
+ active_buttons: packed struct {
+ touch_active: bool,
+ alt_active: bool,
+ _pad1: u30,
+ } = undefined,
+};