summaryrefslogtreecommitdiff
path: root/src/citra
diff options
context:
space:
mode:
authorGravatar Kevin Hartman2014-09-03 18:12:58 -0700
committerGravatar Kevin Hartman2014-09-11 22:43:42 -0700
commit4a94ec934ab1a2216f94e3fcc46f5dde1d6e2f02 (patch)
tree2588f0c6051c9a5e3f23057d2953c35a854dbc43 /src/citra
parentCreated structure for PAD. (diff)
downloadyuzu-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.cpp39
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
11static void OnKeyEvent(GLFWwindow* win, int key, int action) { 11static 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
31static 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
15static void OnWindowSizeEvent(GLFWwindow* win, int width, int height) { 42static 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
22EmuWindow_GLFW::EmuWindow_GLFW() { 49EmuWindow_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();