diff options
| author | 2014-09-03 18:12:58 -0700 | |
|---|---|---|
| committer | 2014-09-11 22:43:42 -0700 | |
| commit | 4a94ec934ab1a2216f94e3fcc46f5dde1d6e2f02 (patch) | |
| tree | 2588f0c6051c9a5e3f23057d2953c35a854dbc43 /src/citra | |
| parent | Created structure for PAD. (diff) | |
| download | yuzu-4a94ec934ab1a2216f94e3fcc46f5dde1d6e2f02.tar.gz yuzu-4a94ec934ab1a2216f94e3fcc46f5dde1d6e2f02.tar.xz yuzu-4a94ec934ab1a2216f94e3fcc46f5dde1d6e2f02.zip | |
Initial HID PAD work, with GLFW only.
Diffstat (limited to 'src/citra')
| -rw-r--r-- | src/citra/emu_window/emu_window_glfw.cpp | 39 |
1 files changed, 36 insertions, 3 deletions
diff --git a/src/citra/emu_window/emu_window_glfw.cpp b/src/citra/emu_window/emu_window_glfw.cpp index 02f524e03..0a861cff0 100644 --- a/src/citra/emu_window/emu_window_glfw.cpp +++ b/src/citra/emu_window/emu_window_glfw.cpp | |||
| @@ -8,8 +8,35 @@ | |||
| 8 | 8 | ||
| 9 | #include "citra/emu_window/emu_window_glfw.h" | 9 | #include "citra/emu_window/emu_window_glfw.h" |
| 10 | 10 | ||
| 11 | static void OnKeyEvent(GLFWwindow* win, int key, int action) { | 11 | static const KeyMap::DefaultKeyMapping default_key_map[] = { |
| 12 | // TODO(bunnei): ImplementMe | 12 | { KeyMap::CitraKey(GLFW_KEY_A), HID_User::PAD_A }, |
| 13 | { KeyMap::CitraKey(GLFW_KEY_B), HID_User::PAD_B }, | ||
| 14 | { KeyMap::CitraKey(GLFW_KEY_BACKSLASH), HID_User::PAD_SELECT }, | ||
| 15 | { KeyMap::CitraKey(GLFW_KEY_ENTER), HID_User::PAD_START }, | ||
| 16 | { KeyMap::CitraKey(GLFW_KEY_RIGHT), HID_User::PAD_RIGHT }, | ||
| 17 | { KeyMap::CitraKey(GLFW_KEY_LEFT), HID_User::PAD_LEFT }, | ||
| 18 | { KeyMap::CitraKey(GLFW_KEY_UP), HID_User::PAD_UP }, | ||
| 19 | { KeyMap::CitraKey(GLFW_KEY_DOWN), HID_User::PAD_DOWN }, | ||
| 20 | { KeyMap::CitraKey(GLFW_KEY_R), HID_User::PAD_R }, | ||
| 21 | { KeyMap::CitraKey(GLFW_KEY_L), HID_User::PAD_L }, | ||
| 22 | { KeyMap::CitraKey(GLFW_KEY_X), HID_User::PAD_X }, | ||
| 23 | { KeyMap::CitraKey(GLFW_KEY_Y), HID_User::PAD_Y }, | ||
| 24 | { KeyMap::CitraKey(GLFW_KEY_H), HID_User::PAD_CIRCLE_RIGHT }, | ||
| 25 | { KeyMap::CitraKey(GLFW_KEY_F), HID_User::PAD_CIRCLE_LEFT }, | ||
| 26 | { KeyMap::CitraKey(GLFW_KEY_T), HID_User::PAD_CIRCLE_UP }, | ||
| 27 | { KeyMap::CitraKey(GLFW_KEY_G), HID_User::PAD_CIRCLE_DOWN }, | ||
| 28 | }; | ||
| 29 | |||
| 30 | |||
| 31 | static void OnKeyEvent(GLFWwindow* win, int key, int scancode, int action, int mods) { | ||
| 32 | if (action == GLFW_PRESS) { | ||
| 33 | EmuWindow::KeyPressed(KeyMap::CitraKey(key)); | ||
| 34 | } | ||
| 35 | |||
| 36 | if (action == GLFW_RELEASE) { | ||
| 37 | EmuWindow::KeyReleased(KeyMap::CitraKey(key)); | ||
| 38 | } | ||
| 39 | HID_User::PADUpdateComplete(); | ||
| 13 | } | 40 | } |
| 14 | 41 | ||
| 15 | static void OnWindowSizeEvent(GLFWwindow* win, int width, int height) { | 42 | static void OnWindowSizeEvent(GLFWwindow* win, int width, int height) { |
| @@ -20,6 +47,12 @@ static void OnWindowSizeEvent(GLFWwindow* win, int width, int height) { | |||
| 20 | 47 | ||
| 21 | /// EmuWindow_GLFW constructor | 48 | /// EmuWindow_GLFW constructor |
| 22 | EmuWindow_GLFW::EmuWindow_GLFW() { | 49 | EmuWindow_GLFW::EmuWindow_GLFW() { |
| 50 | |||
| 51 | // Set default key mappings | ||
| 52 | for (int i = 0; i < ARRAY_SIZE(default_key_map); i++) { | ||
| 53 | KeyMap::SetKeyMapping(default_key_map[i].key, default_key_map[i].state); | ||
| 54 | } | ||
| 55 | |||
| 23 | // Initialize the window | 56 | // Initialize the window |
| 24 | if(glfwInit() != GL_TRUE) { | 57 | if(glfwInit() != GL_TRUE) { |
| 25 | printf("Failed to initialize GLFW! Exiting..."); | 58 | printf("Failed to initialize GLFW! Exiting..."); |
| @@ -45,7 +78,7 @@ EmuWindow_GLFW::EmuWindow_GLFW() { | |||
| 45 | 78 | ||
| 46 | // Setup callbacks | 79 | // Setup callbacks |
| 47 | glfwSetWindowUserPointer(m_render_window, this); | 80 | glfwSetWindowUserPointer(m_render_window, this); |
| 48 | //glfwSetKeyCallback(m_render_window, OnKeyEvent); | 81 | glfwSetKeyCallback(m_render_window, OnKeyEvent); |
| 49 | //glfwSetWindowSizeCallback(m_render_window, OnWindowSizeEvent); | 82 | //glfwSetWindowSizeCallback(m_render_window, OnWindowSizeEvent); |
| 50 | 83 | ||
| 51 | DoneCurrent(); | 84 | DoneCurrent(); |