diff --git a/docs/quick.dox b/docs/quick.dox index 07c5da4e..1899c6a8 100644 --- a/docs/quick.dox +++ b/docs/quick.dox @@ -194,6 +194,24 @@ useful if you want to interpret other kinds of input as closing the window, like for example pressing the escape key. +@section quick_key_input Receiving input events + +Each window has a large number of callbacks that can be set to receive all the +various kinds of events. To receive key press and release events, a +[key callback](@ref GLFWkeyfun) is set using @ref glfwSetKeyCallback. + +@code +static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) + glfwSetWindowShouldClose(window, GL_TRUE); +} +@endcode + +For event callbacks to actually be called when an event occurs, you need to +process events as described below. + + @section quick_render Rendering with OpenGL Once you have a current OpenGL context, you can use OpenGL normally. In this diff --git a/examples/simple.c b/examples/simple.c index 9a57c36e..89eaa022 100644 --- a/examples/simple.c +++ b/examples/simple.c @@ -34,6 +34,12 @@ static void error_callback(int error, const char* description) fputs(description, stderr); } +static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods) +{ + if (key == GLFW_KEY_ESCAPE && action == GLFW_PRESS) + glfwSetWindowShouldClose(window, GL_TRUE); +} + int main(void) { GLFWwindow* window; @@ -52,6 +58,8 @@ int main(void) glfwMakeContextCurrent(window); + glfwSetKeyCallback(window, key_callback); + while (!glfwWindowShouldClose(window)) { float ratio;