298 lines
6.5 KiB
Zig
298 lines
6.5 KiB
Zig
const std = @import("std");
|
|
pub const c = @import("c.zig").c;
|
|
|
|
pub const Scancode = enum(c_int) {
|
|
scancodeUnknown,
|
|
scancodeA,
|
|
scancodeB,
|
|
scancodeC,
|
|
scancodeD,
|
|
scancodeE,
|
|
scancodeF,
|
|
scancodeG,
|
|
scancodeH,
|
|
scancodeI,
|
|
scancodeJ,
|
|
scancodeK,
|
|
scancodeL,
|
|
scancodeM,
|
|
scancodeN,
|
|
scancodeO,
|
|
scancodeP,
|
|
scancodeQ,
|
|
scancodeR,
|
|
scancodeS,
|
|
scancodeT,
|
|
scancodeU,
|
|
scancodeV,
|
|
scancodeW,
|
|
scancodeX,
|
|
scancodeY,
|
|
scancodeZ,
|
|
scancode1,
|
|
scancode2,
|
|
scancode3,
|
|
scancode4,
|
|
scancode5,
|
|
scancode6,
|
|
scancode7,
|
|
scancode8,
|
|
scancode9,
|
|
scancode0,
|
|
scancodeReturn,
|
|
scancodeEscape,
|
|
scancodeBackspace,
|
|
scancodeTab,
|
|
scancodeSpace,
|
|
scancodeMinus,
|
|
scancodeEquals,
|
|
scancodeLeftbracket,
|
|
scancodeRightbracket,
|
|
scancodeSemicolon,
|
|
scancodeApostrophe,
|
|
scancodeComma,
|
|
scancodePeriod,
|
|
scancodeSlash,
|
|
scancodeCapslock,
|
|
scancodeF1,
|
|
scancodeF2,
|
|
scancodeF3,
|
|
scancodeF4,
|
|
scancodeF5,
|
|
scancodeF6,
|
|
scancodeF7,
|
|
scancodeF8,
|
|
scancodeF9,
|
|
scancodeF10,
|
|
scancodeF11,
|
|
scancodeF12,
|
|
scancodePrintscreen,
|
|
scancodeScrolllock,
|
|
scancodePause,
|
|
scancodeHome,
|
|
scancodePageup,
|
|
scancodeDelete,
|
|
scancodeEnd,
|
|
scancodePagedown,
|
|
scancodeRight,
|
|
scancodeLeft,
|
|
scancodeDown,
|
|
scancodeUp,
|
|
scancodeKpDivide,
|
|
scancodeKpMultiply,
|
|
scancodeKpMinus,
|
|
scancodeKpPlus,
|
|
scancodeKpEnter,
|
|
scancodeKp1,
|
|
scancodeKp2,
|
|
scancodeKp3,
|
|
scancodeKp4,
|
|
scancodeKp5,
|
|
scancodeKp6,
|
|
scancodeKp7,
|
|
scancodeKp8,
|
|
scancodeKp9,
|
|
scancodeKp0,
|
|
scancodeKpPeriod,
|
|
scancodeKpEquals,
|
|
scancodeF13,
|
|
scancodeF14,
|
|
scancodeF15,
|
|
scancodeF16,
|
|
scancodeF17,
|
|
scancodeF18,
|
|
scancodeF19,
|
|
scancodeF20,
|
|
scancodeF21,
|
|
scancodeF22,
|
|
scancodeF23,
|
|
scancodeF24,
|
|
scancodeExecute,
|
|
scancodeSelect,
|
|
scancodeMute,
|
|
scancodeVolumeup,
|
|
scancodeVolumedown,
|
|
scancodeKpComma,
|
|
scancodeKpEqualsas400,
|
|
scancodeInternational2,
|
|
scancodeInternational4,
|
|
scancodeInternational5,
|
|
scancodeInternational6,
|
|
scancodeInternational7,
|
|
scancodeInternational8,
|
|
scancodeInternational9,
|
|
scancodeSysreq,
|
|
scancodeClear,
|
|
scancodePrior,
|
|
scancodeReturn2,
|
|
scancodeSeparator,
|
|
scancodeOut,
|
|
scancodeOper,
|
|
scancodeClearagain,
|
|
scancodeCrsel,
|
|
scancodeExsel,
|
|
scancodeKp00,
|
|
scancodeKp000,
|
|
scancodeThousandsseparator,
|
|
scancodeDecimalseparator,
|
|
scancodeCurrencyunit,
|
|
scancodeCurrencysubunit,
|
|
scancodeKpLeftparen,
|
|
scancodeKpRightparen,
|
|
scancodeKpLeftbrace,
|
|
scancodeKpRightbrace,
|
|
scancodeKpTab,
|
|
scancodeKpBackspace,
|
|
scancodeKpA,
|
|
scancodeKpB,
|
|
scancodeKpC,
|
|
scancodeKpD,
|
|
scancodeKpE,
|
|
scancodeKpF,
|
|
scancodeKpXor,
|
|
scancodeKpPower,
|
|
scancodeKpPercent,
|
|
scancodeKpLess,
|
|
scancodeKpGreater,
|
|
scancodeKpAmpersand,
|
|
scancodeKpDblampersand,
|
|
scancodeKpVerticalbar,
|
|
scancodeKpDblverticalbar,
|
|
scancodeKpColon,
|
|
scancodeKpHash,
|
|
scancodeKpSpace,
|
|
scancodeKpAt,
|
|
scancodeKpExclam,
|
|
scancodeKpMemstore,
|
|
scancodeKpMemrecall,
|
|
scancodeKpMemclear,
|
|
scancodeKpMemadd,
|
|
scancodeKpMemsubtract,
|
|
scancodeKpMemmultiply,
|
|
scancodeKpMemdivide,
|
|
scancodeKpPlusminus,
|
|
scancodeKpClear,
|
|
scancodeKpClearentry,
|
|
scancodeKpBinary,
|
|
scancodeKpOctal,
|
|
scancodeKpDecimal,
|
|
scancodeKpHexadecimal,
|
|
scancodeLctrl,
|
|
scancodeLshift,
|
|
scancodeRctrl,
|
|
scancodeRshift,
|
|
};
|
|
|
|
pub const Window = opaque {
|
|
pub inline fn startTextInput(window: *Window) bool {
|
|
return c.SDL_StartTextInput(window);
|
|
}
|
|
|
|
pub inline fn startTextInputWithProperties(window: *Window, props: PropertiesID) bool {
|
|
return c.SDL_StartTextInputWithProperties(window, props);
|
|
}
|
|
|
|
pub inline fn textInputActive(window: *Window) bool {
|
|
return c.SDL_TextInputActive(window);
|
|
}
|
|
|
|
pub inline fn stopTextInput(window: *Window) bool {
|
|
return c.SDL_StopTextInput(window);
|
|
}
|
|
|
|
pub inline fn clearComposition(window: *Window) bool {
|
|
return c.SDL_ClearComposition(window);
|
|
}
|
|
|
|
pub inline fn setTextInputArea(window: *Window, rect: *const Rect, cursor: c_int) bool {
|
|
return c.SDL_SetTextInputArea(window, @ptrCast(rect), cursor);
|
|
}
|
|
|
|
pub inline fn getTextInputArea(window: *Window, rect: ?*Rect, cursor: *c_int) bool {
|
|
return c.SDL_GetTextInputArea(window, rect, @ptrCast(cursor));
|
|
}
|
|
|
|
pub inline fn screenKeyboardShown(window: *Window) bool {
|
|
return c.SDL_ScreenKeyboardShown(window);
|
|
}
|
|
};
|
|
|
|
pub const Keymod = u16;
|
|
|
|
pub const Rect = extern struct {
|
|
x: c_int,
|
|
y: c_int,
|
|
w: c_int,
|
|
h: c_int,
|
|
};
|
|
|
|
pub const Keycode = u32;
|
|
|
|
pub const PropertiesID = u32;
|
|
|
|
pub const KeyboardID = u32;
|
|
|
|
pub inline fn hasKeyboard() bool {
|
|
return c.SDL_HasKeyboard();
|
|
}
|
|
|
|
pub inline fn getKeyboards(count: *c_int) ?*KeyboardID {
|
|
return c.SDL_GetKeyboards(@ptrCast(count));
|
|
}
|
|
|
|
pub inline fn getKeyboardNameForID(instance_id: KeyboardID) [*c]const u8 {
|
|
return c.SDL_GetKeyboardNameForID(instance_id);
|
|
}
|
|
|
|
pub inline fn getKeyboardFocus() ?*Window {
|
|
return c.SDL_GetKeyboardFocus();
|
|
}
|
|
|
|
pub inline fn getKeyboardState(numkeys: *c_int) *const bool {
|
|
return @ptrCast(c.SDL_GetKeyboardState(@ptrCast(numkeys)));
|
|
}
|
|
|
|
pub inline fn resetKeyboard() void {
|
|
return c.SDL_ResetKeyboard();
|
|
}
|
|
|
|
pub inline fn getModState() Keymod {
|
|
return c.SDL_GetModState();
|
|
}
|
|
|
|
pub inline fn setModState(modstate: Keymod) void {
|
|
return c.SDL_SetModState(modstate);
|
|
}
|
|
|
|
pub inline fn getKeyFromScancode(scancode: Scancode, modstate: Keymod, key_event: bool) Keycode {
|
|
return c.SDL_GetKeyFromScancode(scancode, modstate, key_event);
|
|
}
|
|
|
|
pub inline fn getScancodeFromKey(key: Keycode, modstate: ?*Keymod) Scancode {
|
|
return c.SDL_GetScancodeFromKey(key, modstate);
|
|
}
|
|
|
|
pub inline fn setScancodeName(scancode: Scancode, name: [*c]const u8) bool {
|
|
return c.SDL_SetScancodeName(scancode, name);
|
|
}
|
|
|
|
pub inline fn getScancodeName(scancode: Scancode) [*c]const u8 {
|
|
return c.SDL_GetScancodeName(scancode);
|
|
}
|
|
|
|
pub inline fn getScancodeFromName(name: [*c]const u8) Scancode {
|
|
return c.SDL_GetScancodeFromName(name);
|
|
}
|
|
|
|
pub inline fn getKeyName(key: Keycode) [*c]const u8 {
|
|
return c.SDL_GetKeyName(key);
|
|
}
|
|
|
|
pub inline fn getKeyFromName(name: [*c]const u8) Keycode {
|
|
return c.SDL_GetKeyFromName(name);
|
|
}
|
|
|
|
pub inline fn hasScreenKeyboardSupport() bool {
|
|
return c.SDL_HasScreenKeyboardSupport();
|
|
}
|