scaffolding for char callback

This commit is contained in:
2024-10-17 01:20:48 +01:00
parent ed33cf97a4
commit ce23e50c8d
5 changed files with 26 additions and 0 deletions

View File

@@ -158,6 +158,7 @@ extern "C" {
#endif #endif
MLLIB_PUBLIC(void mltonFramebufferSizeCallback (Int32 x0, Int32 x1);) MLLIB_PUBLIC(void mltonFramebufferSizeCallback (Int32 x0, Int32 x1);)
MLLIB_PUBLIC(void mltonCharCallback (Word32 x0);)
#undef MLLIB_PRIVATE #undef MLLIB_PRIVATE
#undef MLLIB_PUBLIC #undef MLLIB_PUBLIC

View File

@@ -16,3 +16,11 @@ void setFramebufferSizeCallback(GLFWwindow* window) {
glfwSetFramebufferSizeCallback(window, framebufferSizeCallback); glfwSetFramebufferSizeCallback(window, framebufferSizeCallback);
} }
void charCallback(GLFWwindow* window, unsigned int codepoint) {
mltonCharCallback(codepoint);
}
void setCharCallback(GLFWwindow* window) {
glfwSetCharCallback(window, charCallback);
}

View File

@@ -19,4 +19,9 @@ struct
_export "mltonFramebufferSizeCallback" public : (int * int -> unit) -> unit; _export "mltonFramebufferSizeCallback" public : (int * int -> unit) -> unit;
val setFramebufferSizeCallback = val setFramebufferSizeCallback =
_import "setFramebufferSizeCallback" public : window -> unit; _import "setFramebufferSizeCallback" public : window -> unit;
val exportCharCallback =
_export "mltonCharCallback" public : (Word32.word -> unit) -> unit;
val setCharCallback =
_import "setCharCallback" public : window -> unit;
end end

View File

@@ -6,11 +6,23 @@ struct
fun frameBufferSizeCallback inputMailbox (width, height) = fun frameBufferSizeCallback inputMailbox (width, height) =
Mailbox.send (inputMailbox, RESIZE_EVENT (width, height)) Mailbox.send (inputMailbox, RESIZE_EVENT (width, height))
fun charCallback word =
let
val word = Word32.toInt word
val chr = Char.chr word
val s = Char.toString chr ^ "\n"
in
print s
end
fun registerCallbacks (inputMailbox, window) = fun registerCallbacks (inputMailbox, window) =
let let
val resizeCallback = frameBufferSizeCallback inputMailbox val resizeCallback = frameBufferSizeCallback inputMailbox
val () = Input.exportFramebufferSizeCallback resizeCallback val () = Input.exportFramebufferSizeCallback resizeCallback
val () = Input.setFramebufferSizeCallback window val () = Input.setFramebufferSizeCallback window
val () = Input.exportCharCallback charCallback
val () = Input.setCharCallback window
in in
() ()
end end

BIN
shf

Binary file not shown.