diff options
| author | Ray <raysan5@gmail.com> | 2015-02-06 00:31:22 +0100 |
|---|---|---|
| committer | Ray <raysan5@gmail.com> | 2015-02-06 00:31:22 +0100 |
| commit | 47827ddda1402dcf8bb65fe2f523ce4fd4d8032e (patch) | |
| tree | 1b43cec3f3e01d50e44df4bc6d36908edf053945 /src | |
| parent | 387795311cfdb3476f93bd278c6b9abfa240c9c5 (diff) | |
| parent | cc6cf9a7411d01b9fe6dd59f455c454f8b392fb4 (diff) | |
| download | raylib-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.c | 42 | ||||
| -rw-r--r-- | src/raylib.h | 3 |
2 files changed, 45 insertions, 0 deletions
@@ -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) |
