|
@@ -1,5 +1,5 @@
|
|
|
//========================================================================
|
|
|
-// Cursor input bug test
|
|
|
+// Cursor mode test
|
|
|
// Copyright (c) Camilla Berglund <[email protected]>
|
|
|
//
|
|
|
// This software is provided 'as-is', without any express or implied
|
|
@@ -23,10 +23,7 @@
|
|
|
//
|
|
|
//========================================================================
|
|
|
//
|
|
|
-// This test came about as the result of bugs #1262764, #1726540 and
|
|
|
-// #1726592, all reported by the user peterpp, hence the name
|
|
|
-//
|
|
|
-// The utility of this test outside of these bugs is uncertain
|
|
|
+// This test allows you to switch between the various cursor modes
|
|
|
//
|
|
|
//========================================================================
|
|
|
|
|
@@ -39,20 +36,6 @@ static GLboolean reopen = GL_FALSE;
|
|
|
static double cursor_x;
|
|
|
static double cursor_y;
|
|
|
|
|
|
-static void toggle_cursor(GLFWwindow* window)
|
|
|
-{
|
|
|
- if (glfwGetInputMode(window, GLFW_CURSOR) == GLFW_CURSOR_DISABLED)
|
|
|
- {
|
|
|
- printf("Released cursor\n");
|
|
|
- glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_NORMAL);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- printf("Captured cursor\n");
|
|
|
- glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
static void error_callback(int error, const char* description)
|
|
|
{
|
|
|
fprintf(stderr, "Error: %s\n", description);
|
|
@@ -60,30 +43,36 @@ static void error_callback(int error, const char* description)
|
|
|
|
|
|
static void cursor_position_callback(GLFWwindow* window, double x, double y)
|
|
|
{
|
|
|
- printf("Cursor moved to: %f %f (%f %f)\n", x, y, x - cursor_x, y - cursor_y);
|
|
|
+ printf("%0.3f: Cursor position: %f %f (%f %f)\n",
|
|
|
+ glfwGetTime(),
|
|
|
+ x, y, x - cursor_x, y - cursor_y);
|
|
|
+
|
|
|
cursor_x = x;
|
|
|
cursor_y = y;
|
|
|
}
|
|
|
|
|
|
static void key_callback(GLFWwindow* window, int key, int scancode, int action, int mods)
|
|
|
{
|
|
|
+ if (action != GLFW_PRESS)
|
|
|
+ return;
|
|
|
+
|
|
|
switch (key)
|
|
|
{
|
|
|
- case GLFW_KEY_SPACE:
|
|
|
- {
|
|
|
- if (action == GLFW_PRESS)
|
|
|
- toggle_cursor(window);
|
|
|
+ case GLFW_KEY_D:
|
|
|
+ glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED);
|
|
|
+ break;
|
|
|
|
|
|
+ case GLFW_KEY_H:
|
|
|
+ glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_HIDDEN);
|
|
|
break;
|
|
|
- }
|
|
|
|
|
|
- case GLFW_KEY_R:
|
|
|
- {
|
|
|
- if (action == GLFW_PRESS)
|
|
|
- reopen = GL_TRUE;
|
|
|
+ case GLFW_KEY_N:
|
|
|
+ glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_NORMAL);
|
|
|
+ break;
|
|
|
|
|
|
+ case GLFW_KEY_R:
|
|
|
+ reopen = GL_TRUE;
|
|
|
break;
|
|
|
- }
|
|
|
}
|
|
|
}
|
|
|
|