aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRay <raysan5@gmail.com>2015-02-06 00:31:22 +0100
committerRay <raysan5@gmail.com>2015-02-06 00:31:22 +0100
commit47827ddda1402dcf8bb65fe2f523ce4fd4d8032e (patch)
tree1b43cec3f3e01d50e44df4bc6d36908edf053945 /src
parent387795311cfdb3476f93bd278c6b9abfa240c9c5 (diff)
parentcc6cf9a7411d01b9fe6dd59f455c454f8b392fb4 (diff)
downloadraylib-47827ddda1402dcf8bb65fe2f523ce4fd4d8032e.tar.gz
raylib-47827ddda1402dcf8bb65fe2f523ce4fd4d8032e.zip
Merge pull request #22 from procedural/hide-mouse
Functions to show and hide mouse cursor at runtime
Diffstat (limited to 'src')
-rw-r--r--src/core.c42
-rw-r--r--src/raylib.h3
2 files changed, 45 insertions, 0 deletions
diff --git a/src/core.c b/src/core.c
index 869b7e95..f0a5af91 100644
--- a/src/core.c
+++ b/src/core.c
@@ -52,6 +52,11 @@
#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB)
#include <GLFW/glfw3.h> // GLFW3 library: Windows, OpenGL context and Input management
+ #ifdef __linux
+ #define GLFW_EXPOSE_NATIVE_X11 // Linux specific definitions for getting
+ #define GLFW_EXPOSE_NATIVE_GLX // native functions like glfwGetX11Window
+ #include <GLFW/glfw3native.h> // which are required for hiding mouse
+ #endif
//#include <GL/gl.h> // OpenGL functions (GLFW3 already includes gl.h)
//#define GLFW_DLL // Using GLFW DLL on Windows -> No, we use static version!
#endif
@@ -215,6 +220,7 @@ static bool cursorOnScreen = false; // Tracks if cursor is inside client
static Texture2D cursor; // Cursor texture
static Vector2 mousePosition;
+static bool mouseHidden;
static char previousKeyState[512] = { 0 }; // Required to check if key pressed/released once
static char currentKeyState[512] = { 0 }; // Required to check if key pressed/released once
@@ -826,6 +832,42 @@ int GetMouseWheelMove(void)
}
#endif
+void HideMouse()
+{
+#if defined(PLATFORM_DESKTOP)
+ #ifdef __linux
+ XColor Col;
+ const char Nil[] = {0};
+
+ Pixmap Pix = XCreateBitmapFromData(glfwGetX11Display(), glfwGetX11Window(window), Nil, 1, 1);
+ Cursor Cur = XCreatePixmapCursor(glfwGetX11Display(), Pix, Pix, &Col, &Col, 0, 0);
+
+ XDefineCursor(glfwGetX11Display(), glfwGetX11Window(window), Cur);
+ XFreeCursor(glfwGetX11Display(), Cur);
+ #else
+ glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_HIDDEN);
+ #endif
+#endif
+ mouseHidden = true;
+}
+
+void ShowMouse()
+{
+#if defined(PLATFORM_DESKTOP)
+ #ifdef __linux
+ XUndefineCursor(glfwGetX11Display(), glfwGetX11Window(window));
+ #else
+ glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_NORMAL);
+ #endif
+#endif
+ mouseHidden = false;
+}
+
+bool IsMouseHidden()
+{
+ return mouseHidden;
+}
+
// TODO: Enable gamepad usage on Rapsberry Pi
// NOTE: emscripten not implemented
#if defined(PLATFORM_DESKTOP)
diff --git a/src/raylib.h b/src/raylib.h
index bd624d9d..79052c26 100644
--- a/src/raylib.h
+++ b/src/raylib.h
@@ -368,6 +368,9 @@ int GetMouseY(void); // Returns mouse positio
Vector2 GetMousePosition(void); // Returns mouse position XY
void SetMousePosition(Vector2 position); // Set mouse position XY
int GetMouseWheelMove(void); // Returns mouse wheel movement Y
+void ShowMouse(void); // Shows mouse cursor
+void HideMouse(void); // Hides mouse cursor
+bool IsMouseHidden(void); // Returns true if mouse cursor is not visible
#endif
#if defined(PLATFORM_DESKTOP)