zig/lib/std/os/uefi/protocols/simple_pointer_protocol.zig
r00ster91 9be1a3f7ef std.os.uefi: use std.os.uefi.cc instead of .C as calling convention
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
2023-07-08 17:32:36 -04:00

50 lines
1.5 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 mice
pub const SimplePointerProtocol = struct {
_reset: *const fn (*const SimplePointerProtocol, bool) callconv(cc) Status,
_get_state: *const fn (*const SimplePointerProtocol, *SimplePointerState) callconv(cc) Status,
wait_for_input: Event,
mode: *SimplePointerMode,
/// Resets the pointer device hardware.
pub fn reset(self: *const SimplePointerProtocol, verify: bool) Status {
return self._reset(self, verify);
}
/// Retrieves the current state of a pointer device.
pub fn getState(self: *const SimplePointerProtocol, state: *SimplePointerState) Status {
return self._get_state(self, state);
}
pub const guid align(8) = Guid{
.time_low = 0x31878c87,
.time_mid = 0x0b75,
.time_high_and_version = 0x11d5,
.clock_seq_high_and_reserved = 0x9a,
.clock_seq_low = 0x4f,
.node = [_]u8{ 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d },
};
};
pub const SimplePointerMode = struct {
resolution_x: u64,
resolution_y: u64,
resolution_z: u64,
left_button: bool,
right_button: bool,
};
pub const SimplePointerState = struct {
relative_movement_x: i32 = undefined,
relative_movement_y: i32 = undefined,
relative_movement_z: i32 = undefined,
left_button: bool = undefined,
right_button: bool = undefined,
};