aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/citra/emu_window
diff options
context:
space:
mode:
authorGravatar Kevin Hartman <kevin@hart.mn>2014-09-03 18:12:58 -0700
committerGravatar Kevin Hartman <kevin@hart.mn>2014-09-11 22:43:42 -0700
commit4a94ec934ab1a2216f94e3fcc46f5dde1d6e2f02 (patch)
tree2588f0c6051c9a5e3f23057d2953c35a854dbc43 /src/citra/emu_window
parentbb7ddede159d820b6f8b49caf0758940903ece3b (diff)
Initial HID PAD work, with GLFW only.
Diffstat (limited to 'src/citra/emu_window')
-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 02f524e0..0a861cff 100644
--- a/src/citra/emu_window/emu_window_glfw.cpp
+++ b/src/citra/emu_window/emu_window_glfw.cpp
@@ -8,8 +8,35 @@
#include "citra/emu_window/emu_window_glfw.h"
-static void OnKeyEvent(GLFWwindow* win, int key, int action) {
- // TODO(bunnei): ImplementMe
+static const KeyMap::DefaultKeyMapping default_key_map[] = {
+ { KeyMap::CitraKey(GLFW_KEY_A), HID_User::PAD_A },
+ { KeyMap::CitraKey(GLFW_KEY_B), HID_User::PAD_B },
+ { KeyMap::CitraKey(GLFW_KEY_BACKSLASH), HID_User::PAD_SELECT },
+ { KeyMap::CitraKey(GLFW_KEY_ENTER), HID_User::PAD_START },
+ { KeyMap::CitraKey(GLFW_KEY_RIGHT), HID_User::PAD_RIGHT },
+ { KeyMap::CitraKey(GLFW_KEY_LEFT), HID_User::PAD_LEFT },
+ { KeyMap::CitraKey(GLFW_KEY_UP), HID_User::PAD_UP },
+ { KeyMap::CitraKey(GLFW_KEY_DOWN), HID_User::PAD_DOWN },
+ { KeyMap::CitraKey(GLFW_KEY_R), HID_User::PAD_R },
+ { KeyMap::CitraKey(GLFW_KEY_L), HID_User::PAD_L },
+ { KeyMap::CitraKey(GLFW_KEY_X), HID_User::PAD_X },
+ { KeyMap::CitraKey(GLFW_KEY_Y), HID_User::PAD_Y },
+ { KeyMap::CitraKey(GLFW_KEY_H), HID_User::PAD_CIRCLE_RIGHT },
+ { KeyMap::CitraKey(GLFW_KEY_F), HID_User::PAD_CIRCLE_LEFT },
+ { KeyMap::CitraKey(GLFW_KEY_T), HID_User::PAD_CIRCLE_UP },
+ { KeyMap::CitraKey(GLFW_KEY_G), HID_User::PAD_CIRCLE_DOWN },
+};
+
+
+static void OnKeyEvent(GLFWwindow* win, int key, int scancode, int action, int mods) {
+ if (action == GLFW_PRESS) {
+ EmuWindow::KeyPressed(KeyMap::CitraKey(key));
+ }
+
+ if (action == GLFW_RELEASE) {
+ EmuWindow::KeyReleased(KeyMap::CitraKey(key));
+ }
+ HID_User::PADUpdateComplete();
}
static void OnWindowSizeEvent(GLFWwindow* win, int width, int height) {
@@ -20,6 +47,12 @@ static void OnWindowSizeEvent(GLFWwindow* win, int width, int height) {
/// EmuWindow_GLFW constructor
EmuWindow_GLFW::EmuWindow_GLFW() {
+
+ // Set default key mappings
+ for (int i = 0; i < ARRAY_SIZE(default_key_map); i++) {
+ KeyMap::SetKeyMapping(default_key_map[i].key, default_key_map[i].state);
+ }
+
// Initialize the window
if(glfwInit() != GL_TRUE) {
printf("Failed to initialize GLFW! Exiting...");
@@ -45,7 +78,7 @@ EmuWindow_GLFW::EmuWindow_GLFW() {
// Setup callbacks
glfwSetWindowUserPointer(m_render_window, this);
- //glfwSetKeyCallback(m_render_window, OnKeyEvent);
+ glfwSetKeyCallback(m_render_window, OnKeyEvent);
//glfwSetWindowSizeCallback(m_render_window, OnWindowSizeEvent);
DoneCurrent();