//======================================================================== // GLFW 3.5 Linux - www.glfw.org //------------------------------------------------------------------------ // Copyright (c) 2002-2006 Marcus Geelnard // Copyright (c) 2006-2017 Camilla Löwy <[email protected]> // // 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" #if defined(GLFW_BUILD_LINUX_JOYSTICK) #include <sys/types.h> #include <sys/stat.h> #include <sys/inotify.h> #include <fcntl.h> #include <errno.h> #include <dirent.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #ifndef SYN_DROPPED // < v2.6.39 kernel headers // Workaround for CentOS-6, which is supported till 2020-11-30, but still on v2.6.32 #define SYN_DROPPED … #endif // Apply an EV_KEY event to the specified joystick // static void handleKeyEvent(_GLFWjoystick* js, int code, int value) { … } // Apply an EV_ABS event to the specified joystick // static void handleAbsEvent(_GLFWjoystick* js, int code, int value) { … } // Poll state of absolute axes // static void pollAbsState(_GLFWjoystick* js) { … } #define isBitSet … // Attempt to open the specified joystick device // static GLFWbool openJoystickDevice(const char* path) { … } #undef isBitSet // Frees all resources associated with the specified joystick // static void closeJoystick(_GLFWjoystick* js) { … } // Lexically compare joysticks by name; used by qsort // static int compareJoysticks(const void* fp, const void* sp) { … } ////////////////////////////////////////////////////////////////////////// ////// GLFW internal API ////// ////////////////////////////////////////////////////////////////////////// void _glfwDetectJoystickConnectionLinux(void) { … } ////////////////////////////////////////////////////////////////////////// ////// GLFW platform API ////// ////////////////////////////////////////////////////////////////////////// GLFWbool _glfwInitJoysticksLinux(void) { … } void _glfwTerminateJoysticksLinux(void) { … } GLFWbool _glfwPollJoystickLinux(_GLFWjoystick* js, int mode) { … } const char* _glfwGetMappingNameLinux(void) { … } void _glfwUpdateGamepadGUIDLinux(char* guid) { … } #endif // GLFW_BUILD_LINUX_JOYSTICK