commit
						26abe0a6e3
					
				
				 17 changed files with 64 additions and 406 deletions
			
			
		@ -1,53 +0,0 @@ | 
				
			|||||||
//======================================================================== | 
					 | 
				
			||||||
// GLFW - An OpenGL library | 
					 | 
				
			||||||
// Platform:    Cocoa | 
					 | 
				
			||||||
// API Version: 3.0 | 
					 | 
				
			||||||
// WWW:         http://www.glfw.org/ | 
					 | 
				
			||||||
//------------------------------------------------------------------------ | 
					 | 
				
			||||||
// Copyright (c) 2009-2010 Camilla Berglund <elmindreda@elmindreda.org> | 
					 | 
				
			||||||
// | 
					 | 
				
			||||||
// This software is provided 'as-is', without any express or implied | 
					 | 
				
			||||||
// warranty. In no event will the authors be held liable for any damages | 
					 | 
				
			||||||
// arising from the use of this software. | 
					 | 
				
			||||||
// | 
					 | 
				
			||||||
// Permission is granted to anyone to use this software for any purpose, | 
					 | 
				
			||||||
// including commercial applications, and to alter it and redistribute it | 
					 | 
				
			||||||
// freely, subject to the following restrictions: | 
					 | 
				
			||||||
// | 
					 | 
				
			||||||
// 1. The origin of this software must not be misrepresented; you must not | 
					 | 
				
			||||||
//    claim that you wrote the original software. If you use this software | 
					 | 
				
			||||||
//    in a product, an acknowledgment in the product documentation would | 
					 | 
				
			||||||
//    be appreciated but is not required. | 
					 | 
				
			||||||
// | 
					 | 
				
			||||||
// 2. Altered source versions must be plainly marked as such, and must not | 
					 | 
				
			||||||
//    be misrepresented as being the original software. | 
					 | 
				
			||||||
// | 
					 | 
				
			||||||
// 3. This notice may not be removed or altered from any source | 
					 | 
				
			||||||
//    distribution. | 
					 | 
				
			||||||
// | 
					 | 
				
			||||||
//======================================================================== | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "internal.h" | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||||
//////                       GLFW platform API                      ////// | 
					 | 
				
			||||||
////////////////////////////////////////////////////////////////////////// | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//======================================================================== | 
					 | 
				
			||||||
// Enable and disable system keys | 
					 | 
				
			||||||
//======================================================================== | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void _glfwPlatformEnableSystemKeys(_GLFWwindow* window) | 
					 | 
				
			||||||
{ | 
					 | 
				
			||||||
    // This is checked in cocoa_window.m; no action needed here | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void _glfwPlatformDisableSystemKeys(_GLFWwindow* window) | 
					 | 
				
			||||||
{ | 
					 | 
				
			||||||
    // This is checked in cocoa_window.m; no action needed here | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Note that it may not be possible to disable things like Exposé | 
					 | 
				
			||||||
    // except in full-screen mode. | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@ -1,132 +0,0 @@ | 
				
			|||||||
//========================================================================
 | 
					 | 
				
			||||||
// GLFW - An OpenGL library
 | 
					 | 
				
			||||||
// Platform:    Win32
 | 
					 | 
				
			||||||
// API version: 3.0
 | 
					 | 
				
			||||||
// WWW:         http://www.glfw.org/
 | 
					 | 
				
			||||||
//------------------------------------------------------------------------
 | 
					 | 
				
			||||||
// Copyright (c) 2002-2006 Marcus Geelnard
 | 
					 | 
				
			||||||
// Copyright (c) 2006-2010 Camilla Berglund <elmindreda@elmindreda.org>
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// This software is provided 'as-is', without any express or implied
 | 
					 | 
				
			||||||
// warranty. In no event will the authors be held liable for any damages
 | 
					 | 
				
			||||||
// arising from the use of this software.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Permission is granted to anyone to use this software for any purpose,
 | 
					 | 
				
			||||||
// including commercial applications, and to alter it and redistribute it
 | 
					 | 
				
			||||||
// freely, subject to the following restrictions:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 1. The origin of this software must not be misrepresented; you must not
 | 
					 | 
				
			||||||
//    claim that you wrote the original software. If you use this software
 | 
					 | 
				
			||||||
//    in a product, an acknowledgment in the product documentation would
 | 
					 | 
				
			||||||
//    be appreciated but is not required.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 2. Altered source versions must be plainly marked as such, and must not
 | 
					 | 
				
			||||||
//    be misrepresented as being the original software.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 3. This notice may not be removed or altered from any source
 | 
					 | 
				
			||||||
//    distribution.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//========================================================================
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "internal.h" | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//========================================================================
 | 
					 | 
				
			||||||
// Low level keyboard hook (system callback) function
 | 
					 | 
				
			||||||
// Used to disable system keys under Windows NT
 | 
					 | 
				
			||||||
//========================================================================
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static LRESULT CALLBACK keyboardHook(int nCode, WPARAM wParam, LPARAM lParam) | 
					 | 
				
			||||||
{ | 
					 | 
				
			||||||
    BOOL syskeys = FALSE; | 
					 | 
				
			||||||
    PKBDLLHOOKSTRUCT p; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // We are only looking for keyboard events - interpret lParam as a
 | 
					 | 
				
			||||||
    // pointer to a KBDLLHOOKSTRUCT
 | 
					 | 
				
			||||||
    p = (PKBDLLHOOKSTRUCT) lParam; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (nCode == HC_ACTION) | 
					 | 
				
			||||||
    { | 
					 | 
				
			||||||
        // We have a keyboard event
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        switch (wParam) | 
					 | 
				
			||||||
        { | 
					 | 
				
			||||||
            case WM_KEYDOWN: | 
					 | 
				
			||||||
            case WM_SYSKEYDOWN: | 
					 | 
				
			||||||
            case WM_KEYUP: | 
					 | 
				
			||||||
            case WM_SYSKEYUP: | 
					 | 
				
			||||||
                // Detect: ALT+TAB, ALT+ESC, ALT+F4, CTRL+ESC,
 | 
					 | 
				
			||||||
                // LWIN, RWIN, APPS (mysterious menu key)
 | 
					 | 
				
			||||||
                syskeys = (p->vkCode == VK_TAB && | 
					 | 
				
			||||||
                           p->flags & LLKHF_ALTDOWN) || | 
					 | 
				
			||||||
                          (p->vkCode == VK_ESCAPE && | 
					 | 
				
			||||||
                           p->flags & LLKHF_ALTDOWN) || | 
					 | 
				
			||||||
                          (p->vkCode == VK_F4 && | 
					 | 
				
			||||||
                           p->flags & LLKHF_ALTDOWN) || | 
					 | 
				
			||||||
                          (p->vkCode == VK_ESCAPE && | 
					 | 
				
			||||||
                           (GetKeyState(VK_CONTROL) & 0x8000)) || | 
					 | 
				
			||||||
                          p->vkCode == VK_LWIN || | 
					 | 
				
			||||||
                          p->vkCode == VK_RWIN || | 
					 | 
				
			||||||
                          p->vkCode == VK_APPS; | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            default: | 
					 | 
				
			||||||
                break; | 
					 | 
				
			||||||
        } | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    // Was it a system key combination (e.g. ALT+TAB)?
 | 
					 | 
				
			||||||
    if (syskeys) | 
					 | 
				
			||||||
    { | 
					 | 
				
			||||||
        _GLFWwindow* window = _glfwLibrary.activeWindow; | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // Pass the key event to our window message loop
 | 
					 | 
				
			||||||
        if (window) | 
					 | 
				
			||||||
            PostMessage(window->Win32.handle, (UINT) wParam, p->vkCode, 0); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        // We've taken care of it - don't let the system know about this
 | 
					 | 
				
			||||||
        // key event
 | 
					 | 
				
			||||||
        return 1; | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
    else | 
					 | 
				
			||||||
    { | 
					 | 
				
			||||||
        // It's a harmless key press, let the system deal with it
 | 
					 | 
				
			||||||
        return CallNextHookEx(_glfwLibrary.Win32.keyboardHook, nCode, wParam, lParam); | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
//////                       GLFW platform API                      //////
 | 
					 | 
				
			||||||
//////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//========================================================================
 | 
					 | 
				
			||||||
// Enable system keys
 | 
					 | 
				
			||||||
//========================================================================
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void _glfwPlatformEnableSystemKeys(_GLFWwindow* window) | 
					 | 
				
			||||||
{ | 
					 | 
				
			||||||
    UNREFERENCED_PARAMETER(window); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    if (_glfwLibrary.Win32.keyboardHook != NULL) | 
					 | 
				
			||||||
    { | 
					 | 
				
			||||||
        UnhookWindowsHookEx(_glfwLibrary.Win32.keyboardHook); | 
					 | 
				
			||||||
        _glfwLibrary.Win32.keyboardHook = NULL; | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//========================================================================
 | 
					 | 
				
			||||||
// Disable system keys
 | 
					 | 
				
			||||||
//========================================================================
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void _glfwPlatformDisableSystemKeys(_GLFWwindow* window) | 
					 | 
				
			||||||
{ | 
					 | 
				
			||||||
    UNREFERENCED_PARAMETER(window); | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    _glfwLibrary.Win32.keyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, | 
					 | 
				
			||||||
                                                       keyboardHook, | 
					 | 
				
			||||||
                                                       _glfwLibrary.Win32.instance, | 
					 | 
				
			||||||
                                                       0); | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
@ -1,65 +0,0 @@ | 
				
			|||||||
//========================================================================
 | 
					 | 
				
			||||||
// GLFW - An OpenGL library
 | 
					 | 
				
			||||||
// Platform:    X11
 | 
					 | 
				
			||||||
// API version: 3.0
 | 
					 | 
				
			||||||
// WWW:         http://www.glfw.org/
 | 
					 | 
				
			||||||
//------------------------------------------------------------------------
 | 
					 | 
				
			||||||
// Copyright (c) 2002-2006 Marcus Geelnard
 | 
					 | 
				
			||||||
// Copyright (c) 2006-2010 Camilla Berglund <elmindreda@elmindreda.org>
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// This software is provided 'as-is', without any express or implied
 | 
					 | 
				
			||||||
// warranty. In no event will the authors be held liable for any damages
 | 
					 | 
				
			||||||
// arising from the use of this software.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// Permission is granted to anyone to use this software for any purpose,
 | 
					 | 
				
			||||||
// including commercial applications, and to alter it and redistribute it
 | 
					 | 
				
			||||||
// freely, subject to the following restrictions:
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 1. The origin of this software must not be misrepresented; you must not
 | 
					 | 
				
			||||||
//    claim that you wrote the original software. If you use this software
 | 
					 | 
				
			||||||
//    in a product, an acknowledgment in the product documentation would
 | 
					 | 
				
			||||||
//    be appreciated but is not required.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 2. Altered source versions must be plainly marked as such, and must not
 | 
					 | 
				
			||||||
//    be misrepresented as being the original software.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
// 3. This notice may not be removed or altered from any source
 | 
					 | 
				
			||||||
//    distribution.
 | 
					 | 
				
			||||||
//
 | 
					 | 
				
			||||||
//========================================================================
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#include "internal.h" | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
//////                       GLFW platform API                      //////
 | 
					 | 
				
			||||||
//////////////////////////////////////////////////////////////////////////
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//========================================================================
 | 
					 | 
				
			||||||
// Enable system keys
 | 
					 | 
				
			||||||
//========================================================================
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void _glfwPlatformEnableSystemKeys(_GLFWwindow* window) | 
					 | 
				
			||||||
{ | 
					 | 
				
			||||||
    if (window->X11.keyboardGrabbed) | 
					 | 
				
			||||||
    { | 
					 | 
				
			||||||
        XUngrabKeyboard(_glfwLibrary.X11.display, CurrentTime); | 
					 | 
				
			||||||
        window->X11.keyboardGrabbed = GL_FALSE; | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//========================================================================
 | 
					 | 
				
			||||||
// Disable system keys
 | 
					 | 
				
			||||||
//========================================================================
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void _glfwPlatformDisableSystemKeys(_GLFWwindow* window) | 
					 | 
				
			||||||
{ | 
					 | 
				
			||||||
    if (XGrabKeyboard(_glfwLibrary.X11.display, window->X11.handle, | 
					 | 
				
			||||||
                      True, GrabModeAsync, GrabModeAsync, CurrentTime) | 
					 | 
				
			||||||
        == GrabSuccess) | 
					 | 
				
			||||||
    { | 
					 | 
				
			||||||
        window->X11.keyboardGrabbed = GL_TRUE; | 
					 | 
				
			||||||
    } | 
					 | 
				
			||||||
} | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
					Loading…
					
					
				
		Reference in New Issue