mirror of
https://github.com/ziglang/zig.git
synced 2025-12-06 14:23:09 +00:00
I tested this and this definitely compiles and these changes were done programmatically but if there's still anything wrong it shouldn't be hard to fix. With this change it's going to be very easy to make further adjustments to the calling conventions of all these external UEFI functions. Closes #16309
63 lines
1.8 KiB
Zig
63 lines
1.8 KiB
Zig
const std = @import("std");
|
|
const uefi = std.os.uefi;
|
|
const Event = uefi.Event;
|
|
const Guid = uefi.Guid;
|
|
const Status = uefi.Status;
|
|
const cc = uefi.cc;
|
|
|
|
/// Protocol for touchscreens
|
|
pub const AbsolutePointerProtocol = extern struct {
|
|
_reset: *const fn (*const AbsolutePointerProtocol, bool) callconv(cc) Status,
|
|
_get_state: *const fn (*const AbsolutePointerProtocol, *AbsolutePointerState) callconv(cc) Status,
|
|
wait_for_input: Event,
|
|
mode: *AbsolutePointerMode,
|
|
|
|
/// Resets the pointer device hardware.
|
|
pub fn reset(self: *const AbsolutePointerProtocol, verify: bool) Status {
|
|
return self._reset(self, verify);
|
|
}
|
|
|
|
/// Retrieves the current state of a pointer device.
|
|
pub fn getState(self: *const AbsolutePointerProtocol, state: *AbsolutePointerState) Status {
|
|
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 AbsolutePointerModeAttributes = packed struct(u32) {
|
|
supports_alt_active: bool,
|
|
supports_pressure_as_z: bool,
|
|
_pad: u30 = 0,
|
|
};
|
|
|
|
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: AbsolutePointerModeAttributes,
|
|
};
|
|
|
|
pub const AbsolutePointerStateActiveButtons = packed struct(u32) {
|
|
touch_active: bool,
|
|
alt_active: bool,
|
|
_pad: u30 = 0,
|
|
};
|
|
|
|
pub const AbsolutePointerState = extern struct {
|
|
current_x: u64,
|
|
current_y: u64,
|
|
current_z: u64,
|
|
active_buttons: AbsolutePointerStateActiveButtons,
|
|
};
|