@@ -151,7 +151,7 @@ extern fn glfwGetError(out_desc: ?*?[*:0]const u8) ErrorCode;
151151
152152pub const setErrorCallback = glfwSetErrorCallback ;
153153extern fn glfwSetErrorCallback (? ErrorFn ) ? ErrorFn ;
154- pub const ErrorFn = * const fn (ErrorCode , desc : ? [* :0 ]const u8 ) callconv (.C ) void ;
154+ pub const ErrorFn = * const fn (ErrorCode , desc : ? [* :0 ]const u8 ) callconv (.c ) void ;
155155
156156pub fn rawMouseMotionSupported () bool {
157157 return glfwRawMouseMotionSupported () == TRUE ;
@@ -736,6 +736,7 @@ pub const Window = opaque {
736736 pub const getClipboardString = zglfw .getClipboardString ;
737737 pub const setClipboardString = zglfw .setClipboardString ;
738738 pub const setCursor = zglfw .setCursor ;
739+ pub const getInputMode = zglfw .getInputMode ;
739740 pub const setInputMode = zglfw .setInputMode ;
740741 pub const setInputModeUntyped = zglfw .setInputModeUntyped ;
741742 pub const swapBuffers = zglfw .swapBuffers ;
@@ -832,47 +833,47 @@ extern fn glfwSetWindowUserPointer(window: *Window, pointer: ?*anyopaque) void;
832833
833834pub const setFramebufferSizeCallback = glfwSetFramebufferSizeCallback ;
834835extern fn glfwSetFramebufferSizeCallback (* Window , ? FramebufferSizeFn ) ? FramebufferSizeFn ;
835- pub const FramebufferSizeFn = * const fn (* Window , width : c_int , height : c_int ) callconv (.C ) void ;
836+ pub const FramebufferSizeFn = * const fn (* Window , width : c_int , height : c_int ) callconv (.c ) void ;
836837
837838pub const setWindowSizeCallback = glfwSetWindowSizeCallback ;
838839extern fn glfwSetWindowSizeCallback (* Window , ? WindowSizeFn ) ? WindowSizeFn ;
839- pub const WindowSizeFn = * const fn (* Window , width : c_int , height : c_int ) callconv (.C ) void ;
840+ pub const WindowSizeFn = * const fn (* Window , width : c_int , height : c_int ) callconv (.c ) void ;
840841
841842pub const setWindowPosCallback = glfwSetWindowPosCallback ;
842843extern fn glfwSetWindowPosCallback (* Window , ? WindowPosFn ) ? WindowPosFn ;
843- pub const WindowPosFn = * const fn (* Window , x : c_int , y : c_int ) callconv (.C ) void ;
844+ pub const WindowPosFn = * const fn (* Window , x : c_int , y : c_int ) callconv (.c ) void ;
844845
845846pub const setWindowFocusCallback = glfwSetWindowFocusCallback ;
846847extern fn glfwSetWindowFocusCallback (* Window , ? WindowFocusFn ) ? WindowFocusFn ;
847- pub const WindowFocusFn = * const fn (* Window , focused : Bool ) callconv (.C ) void ;
848+ pub const WindowFocusFn = * const fn (* Window , focused : Bool ) callconv (.c ) void ;
848849
849850pub const setWindowIconifyCallback = glfwSetWindowIconifyCallback ;
850851extern fn glfwSetWindowIconifyCallback (* Window , ? IconifyFn ) ? IconifyFn ;
851- pub const IconifyFn = * const fn (* Window , iconified : Bool ) callconv (.C ) void ;
852+ pub const IconifyFn = * const fn (* Window , iconified : Bool ) callconv (.c ) void ;
852853
853854pub const setWindowContentScaleCallback = glfwSetWindowContentScaleCallback ;
854855extern fn glfwSetWindowContentScaleCallback (* Window , ? WindowContentScaleFn ) ? WindowContentScaleFn ;
855- pub const WindowContentScaleFn = * const fn (* Window , xscale : f32 , yscale : f32 ) callconv (.C ) void ;
856+ pub const WindowContentScaleFn = * const fn (* Window , xscale : f32 , yscale : f32 ) callconv (.c ) void ;
856857
857858pub const setWindowCloseCallback = glfwSetWindowCloseCallback ;
858859extern fn glfwSetWindowCloseCallback (* Window , ? WindowCloseFn ) ? WindowCloseFn ;
859- pub const WindowCloseFn = * const fn (* Window ) callconv (.C ) void ;
860+ pub const WindowCloseFn = * const fn (* Window ) callconv (.c ) void ;
860861
861862pub const setKeyCallback = glfwSetKeyCallback ;
862863extern fn glfwSetKeyCallback (* Window , ? KeyFn ) ? KeyFn ;
863- pub const KeyFn = * const fn (* Window , Key , scancode : c_int , Action , Mods ) callconv (.C ) void ;
864+ pub const KeyFn = * const fn (* Window , Key , scancode : c_int , Action , Mods ) callconv (.c ) void ;
864865
865866pub const setCharCallback = glfwSetCharCallback ;
866867extern fn glfwSetCharCallback (* Window , ? CharFn ) ? CharFn ;
867- pub const CharFn = * const fn (* Window , codepoint : u32 ) callconv (.C ) void ;
868+ pub const CharFn = * const fn (* Window , codepoint : u32 ) callconv (.c ) void ;
868869
869870pub const setDropCallback = glfwSetDropCallback ;
870871extern fn glfwSetDropCallback (window : * Window , callback : ? DropFn ) ? DropFn ;
871872pub const DropFn = * const fn (
872873 window : * Window ,
873874 path_count : i32 ,
874875 paths : [* ][* :0 ]const u8 ,
875- ) callconv (.C ) void ;
876+ ) callconv (.c ) void ;
876877
877878pub const setMouseButtonCallback = glfwSetMouseButtonCallback ;
878879extern fn glfwSetMouseButtonCallback (window : * Window , callback : ? MouseButtonFn ) ? MouseButtonFn ;
@@ -881,7 +882,7 @@ pub const MouseButtonFn = *const fn (
881882 button : MouseButton ,
882883 action : Action ,
883884 mods : Mods ,
884- ) callconv (.C ) void ;
885+ ) callconv (.c ) void ;
885886
886887pub const getWindowMonitor = glfwGetWindowMonitor ;
887888extern fn glfwGetWindowMonitor (window : * Window ) ? * Monitor ;
@@ -892,22 +893,22 @@ pub const CursorPosFn = *const fn (
892893 window : * Window ,
893894 xpos : f64 ,
894895 ypos : f64 ,
895- ) callconv (.C ) void ;
896+ ) callconv (.c ) void ;
896897
897898pub const setScrollCallback = glfwSetScrollCallback ;
898899extern fn glfwSetScrollCallback (window : * Window , callback : ? ScrollFn ) ? ScrollFn ;
899900pub const ScrollFn = * const fn (
900901 window : * Window ,
901902 xoffset : f64 ,
902903 yoffset : f64 ,
903- ) callconv (.C ) void ;
904+ ) callconv (.c ) void ;
904905
905906pub const setCursorEnterCallback = glfwSetCursorEnterCallback ;
906907extern fn glfwSetCursorEnterCallback (window : * Window , callback : ? CursorEnterFn ) ? CursorEnterFn ;
907908pub const CursorEnterFn = * const fn (
908909 window : * Window ,
909910 entered : i32 ,
910- ) callconv (.C ) void ;
911+ ) callconv (.c ) void ;
911912
912913pub const setWindowMonitor = glfwSetWindowMonitor ;
913914extern fn glfwSetWindowMonitor (
@@ -1009,6 +1010,19 @@ pub const InputMode = enum(c_int) {
10091010 };
10101011 }
10111012};
1013+ pub fn getInputMode (
1014+ window : * Window ,
1015+ comptime mode : InputMode ,
1016+ ) Error ! InputMode. ValueType (mode ) {
1017+ return @enumFromInt (try getInputModeUntyped (window , mode ));
1018+ }
1019+ pub fn getInputModeUntyped (window : * Window , mode : InputMode ) Error ! c_int {
1020+ const value = glfwGetInputMode (window , mode );
1021+ try maybeError ();
1022+ return value ;
1023+ }
1024+ extern fn glfwGetInputMode (* Window , InputMode ) c_int ;
1025+
10121026pub fn setInputMode (
10131027 window : * Window ,
10141028 comptime mode : InputMode ,
@@ -1232,20 +1246,29 @@ fn _isLinuxDesktopLike() bool {
12321246// Emscripten
12331247//
12341248//--------------------------------------------------------------------------------------------------
1235- const os = builtin .target .os .tag ;
1236- usingnamespace if (os == .emscripten or os == .freestanding ) struct {
1237- // GLFW - emscripten uses older version that doesn't have these functions - implement dummies
1238- var glfwGetGamepadStateWarnPrinted : bool = false ;
1239- pub export fn glfwGetGamepadState (_ : i32 , _ : ? * anyopaque ) i32 {
1240- if (! glfwGetGamepadStateWarnPrinted ) {
1241- std .log .err ("glfwGetGamepadState(): not implemented! Use emscripten specific functions: https://emscripten.org/docs/api_reference/html5.h.html?highlight=gamepadstate#c.emscripten_get_gamepad_status" , .{});
1242- glfwGetGamepadStateWarnPrinted = true ;
1249+ comptime {
1250+ const os = builtin .target .os .tag ;
1251+ const emscripten = struct {
1252+ // GLFW - emscripten uses older version that doesn't have these functions - implement dummies
1253+ var glfwGetGamepadStateWarnPrinted : bool = false ;
1254+ fn glfwGetGamepadState (_ : i32 , _ : ? * anyopaque ) callconv (.c ) i32 {
1255+ if (! glfwGetGamepadStateWarnPrinted ) {
1256+ std .log .err ("glfwGetGamepadState(): not implemented! Use emscripten specific functions: https://emscripten.org/docs/api_reference/html5.h.html?highlight=gamepadstate#c.emscripten_get_gamepad_status" , .{});
1257+ glfwGetGamepadStateWarnPrinted = true ;
1258+ }
1259+ return 0 ; // false - failure
12431260 }
1244- return 0 ; // false - failure
1245- }
12461261
1247- /// use glfwSetCallback instead
1248- pub export fn glfwGetError () i32 {
1249- return 0 ; // no error
1262+ /// use glfwSetCallback instead
1263+ /// This is a stub implementation for Emscripten compatibility.
1264+ /// It always returns 0 to indicate no error, as Emscripten does not support this functionality.
1265+ fn glfwGetError () callconv (.c ) i32 {
1266+ return 0 ; // no error
1267+ }
1268+ };
1269+
1270+ if (os == .emscripten or os == .freestanding ) {
1271+ @export (& emscripten .glfwGetGamepadState , .{ .name = "glfwGetGamepadState" });
1272+ @export (& emscripten .glfwGetError , .{ .name = "glfwGetError" });
12501273 }
1251- } else struct {};
1274+ }
0 commit comments