pub const c = @import("c.zig").c; pub const Window = opaque {}; pub const FingerID = u64; pub const EventType = enum(c_int) { eventDisplayFirst, eventDisplayLast, eventWindowFirst, eventWindowLast, eventFingerDown, eventFingerUp, eventFingerMotion, eventFingerCanceled, eventPrivate0, eventPrivate1, eventPrivate2, eventPrivate3, eventUser, eventLast, eventEnumPadding, }; pub const CommonEvent = extern struct { reserved: u32, }; pub const DisplayEvent = extern struct { reserved: u32, }; pub const WindowEvent = extern struct { reserved: u32, }; pub const KeyboardDeviceEvent = extern struct { reserved: u32, }; pub const KeyboardEvent = extern struct { reserved: u32, }; pub const TextEditingEvent = extern struct { reserved: u32, }; pub const TextEditingCandidatesEvent = extern struct { reserved: u32, padding1: u8, padding2: u8, padding3: u8, }; pub const TextInputEvent = extern struct { reserved: u32, }; pub const MouseDeviceEvent = extern struct { reserved: u32, }; pub const MouseMotionEvent = extern struct { reserved: u32, }; pub const MouseButtonEvent = extern struct { reserved: u32, padding: u8, }; pub const MouseWheelEvent = extern struct { reserved: u32, }; pub const JoyAxisEvent = extern struct { reserved: u32, padding1: u8, padding2: u8, padding3: u8, padding4: u16, }; pub const JoyBallEvent = extern struct { reserved: u32, padding1: u8, padding2: u8, padding3: u8, }; pub const JoyHatEvent = extern struct { reserved: u32, padding1: u8, padding2: u8, }; pub const JoyButtonEvent = extern struct { reserved: u32, padding1: u8, padding2: u8, }; pub const JoyDeviceEvent = extern struct { reserved: u32, }; pub const JoyBatteryEvent = extern struct { reserved: u32, }; pub const GamepadAxisEvent = extern struct { reserved: u32, padding1: u8, padding2: u8, padding3: u8, padding4: u16, }; pub const GamepadButtonEvent = extern struct { reserved: u32, padding1: u8, padding2: u8, }; pub const GamepadDeviceEvent = extern struct { reserved: u32, }; pub const GamepadTouchpadEvent = extern struct { reserved: u32, }; pub const GamepadSensorEvent = extern struct { reserved: u32, }; pub const AudioDeviceEvent = extern struct { reserved: u32, padding1: u8, padding2: u8, padding3: u8, }; pub const CameraDeviceEvent = extern struct { reserved: u32, }; pub const RenderEvent = extern struct { reserved: u32, }; pub const TouchFingerEvent = extern struct { reserved: u32, fingerID: FingerID, }; pub const PenProximityEvent = extern struct { reserved: u32, }; pub const PenMotionEvent = extern struct { reserved: u32, }; pub const PenTouchEvent = extern struct { reserved: u32, }; pub const PenButtonEvent = extern struct { reserved: u32, }; pub const PenAxisEvent = extern struct { reserved: u32, }; pub const DropEvent = extern struct { reserved: u32, }; pub const ClipboardEvent = extern struct { reserved: u32, }; pub const SensorEvent = extern struct { reserved: u32, }; pub const QuitEvent = extern struct { reserved: u32, }; pub const UserEvent = extern struct { reserved: u32, }; pub const Event = union; pub inline fn pumpEvents() void { return c.SDL_PumpEvents(); } pub const EventAction = enum(c_int) { }; pub inline fn peepEvents(events: ?*Event, numevents: c_int, action: EventAction, minType: u32, maxType: u32,) c_int { return c.SDL_PeepEvents(events, numevents, action, minType, maxType); } pub inline fn hasEvent(type: u32) bool { return c.SDL_HasEvent(type); } pub inline fn hasEvents(minType: u32, maxType: u32) bool { return c.SDL_HasEvents(minType, maxType); } pub inline fn flushEvent(type: u32) void { return c.SDL_FlushEvent(type); } pub inline fn flushEvents(minType: u32, maxType: u32) void { return c.SDL_FlushEvents(minType, maxType); } pub inline fn pollEvent(event: ?*Event) bool { return c.SDL_PollEvent(event); } pub inline fn waitEvent(event: ?*Event) bool { return c.SDL_WaitEvent(event); } pub inline fn waitEventTimeout(event: ?*Event, timeoutMS: i32) bool { return c.SDL_WaitEventTimeout(event, timeoutMS); } pub inline fn pushEvent(event: ?*Event) bool { return c.SDL_PushEvent(event); } pub inline fn setEventFilter(filter: EventFilter, userdata: ?*anyopaque) void { return c.SDL_SetEventFilter(filter, userdata); } pub inline fn getEventFilter(filter: ?*EventFilter, userdata: void **) bool { return c.SDL_GetEventFilter(filter, userdata); } pub inline fn addEventWatch(filter: EventFilter, userdata: ?*anyopaque) bool { return c.SDL_AddEventWatch(filter, userdata); } pub inline fn removeEventWatch(filter: EventFilter, userdata: ?*anyopaque) void { return c.SDL_RemoveEventWatch(filter, userdata); } pub inline fn filterEvents(filter: EventFilter, userdata: ?*anyopaque) void { return c.SDL_FilterEvents(filter, userdata); } pub inline fn setEventEnabled(type: u32, enabled: bool) void { return c.SDL_SetEventEnabled(type, enabled); } pub inline fn eventEnabled(type: u32) bool { return c.SDL_EventEnabled(type); } pub inline fn registerEvents(numevents: c_int) u32 { return c.SDL_RegisterEvents(numevents); } pub inline fn getWindowFromEvent(event: *const Event) ?*Window { return c.SDL_GetWindowFromEvent(@ptrCast(event)); }