diff --git a/Makefile.common b/Makefile.common
index 6852f32070..8490a0cb8b 100644
--- a/Makefile.common
+++ b/Makefile.common
@@ -2116,7 +2116,6 @@ endif
ifeq ($(HAVE_COCOA),1)
DEFINES += -DHAVE_MAIN
OBJ += input/drivers/cocoa_input.o \
- input/drivers_keyboard/keyboard_event_apple.o \
ui/drivers/ui_cocoa.o \
ui/drivers/cocoa/ui_cocoa_window.o \
ui/drivers/cocoa/ui_cocoa_browser_window.o \
diff --git a/griffin/griffin.c b/griffin/griffin.c
index a6d0aca4f2..d645f710e0 100644
--- a/griffin/griffin.c
+++ b/griffin/griffin.c
@@ -813,11 +813,6 @@ INPUT (HID)
/*============================================================
KEYBOARD EVENT
============================================================ */
-
-#ifdef __APPLE__
-#include "../input/drivers_keyboard/keyboard_event_apple.c"
-#endif
-
#ifdef HAVE_XKBCOMMON
#include "../input/drivers_keyboard/keyboard_event_xkb.c"
#endif
diff --git a/input/drivers/cocoa_input.c b/input/drivers/cocoa_input.c
index 66e9445b1d..1fd403e137 100644
--- a/input/drivers/cocoa_input.c
+++ b/input/drivers/cocoa_input.c
@@ -38,6 +38,290 @@
/* Forward declarations */
float get_backing_scale_factor(void);
+static bool apple_key_state[MAX_KEYS];
+#if TARGET_OS_IPHONE
+/* TODO/FIXME - static globals */
+static bool small_keyboard_active = false;
+
+#define HIDKEY(X) X
+#define MAX_ICADE_PROFILES 4
+#define MAX_ICADE_KEYS 0x100
+
+typedef struct icade_map
+{
+ bool up;
+ enum retro_key key;
+} icade_map_t;
+
+static icade_map_t icade_maps[MAX_ICADE_PROFILES][MAX_ICADE_KEYS];
+
+static bool handle_small_keyboard(unsigned* code, bool down)
+{
+ static uint8_t mapping[128];
+ static bool map_initialized;
+ static const struct { uint8_t orig; uint8_t mod; } mapping_def[] =
+ {
+ { KEY_Grave, KEY_Escape }, { KEY_1, KEY_F1 },
+ { KEY_2, KEY_F2 }, { KEY_3, KEY_F3 },
+ { KEY_4, KEY_F4 }, { KEY_5, KEY_F5 },
+ { KEY_6, KEY_F6 }, { KEY_7, KEY_F7 },
+ { KEY_8, KEY_F8 }, { KEY_9, KEY_F9 },
+ { KEY_0, KEY_F10 }, { KEY_Minus, KEY_F11 },
+ { KEY_Equals, KEY_F12 }, { KEY_Up, KEY_PageUp },
+ { KEY_Down, KEY_PageDown }, { KEY_Left, KEY_Home },
+ { KEY_Right, KEY_End }, { KEY_Q, KP_7 },
+ { KEY_W, KP_8 }, { KEY_E, KP_9 },
+ { KEY_A, KP_4 }, { KEY_S, KP_5 },
+ { KEY_D, KP_6 }, { KEY_Z, KP_1 },
+ { KEY_X, KP_2 }, { KEY_C, KP_3 },
+ { 0 }
+ };
+ unsigned translated_code = 0;
+
+ if (!map_initialized)
+ {
+ int i;
+ for (i = 0; mapping_def[i].orig; i ++)
+ mapping[mapping_def[i].orig] = mapping_def[i].mod;
+ map_initialized = true;
+ }
+
+ if (*code == KEY_RightShift)
+ {
+ small_keyboard_active = down;
+ *code = 0;
+ return true;
+ }
+
+ if (*code < 128)
+ translated_code = mapping[*code];
+
+ /* Allow old keys to be released. */
+ if (!down && apple_key_state[*code])
+ return false;
+
+ if ((!down && apple_key_state[translated_code]) ||
+ small_keyboard_active)
+ {
+ *code = translated_code;
+ return true;
+ }
+
+ return false;
+}
+
+static bool handle_icade_event(unsigned *code, bool *keydown)
+{
+ static bool initialized = false;
+ bool ret = false;
+ settings_t *settings = config_get_ptr();
+ unsigned kb_type_idx = settings->uints.input_keyboard_gamepad_mapping_type;
+
+ if (!initialized)
+ {
+ unsigned i;
+ unsigned j = 0;
+
+ for (j = 0; j < MAX_ICADE_PROFILES; j++)
+ {
+ for (i = 0; i < MAX_ICADE_KEYS; i++)
+ {
+ icade_maps[j][i].key = RETROK_UNKNOWN;
+ icade_maps[j][i].up = false;
+ }
+ }
+
+ /* iPega PG-9017 */
+ j = 1;
+
+ icade_maps[j][rarch_keysym_lut[RETROK_a]].key = RETROK_LEFT;
+ icade_maps[j][rarch_keysym_lut[RETROK_q]].key = RETROK_LEFT;
+ icade_maps[j][rarch_keysym_lut[RETROK_c]].key = RETROK_RIGHT;
+ icade_maps[j][rarch_keysym_lut[RETROK_d]].key = RETROK_RIGHT;
+ icade_maps[j][rarch_keysym_lut[RETROK_e]].key = RETROK_UP;
+ icade_maps[j][rarch_keysym_lut[RETROK_w]].key = RETROK_UP;
+ icade_maps[j][rarch_keysym_lut[RETROK_x]].key = RETROK_DOWN;
+ icade_maps[j][rarch_keysym_lut[RETROK_z]].key = RETROK_DOWN;
+ icade_maps[j][rarch_keysym_lut[RETROK_f]].key = RETROK_z;
+ icade_maps[j][rarch_keysym_lut[RETROK_u]].key = RETROK_z;
+ icade_maps[j][rarch_keysym_lut[RETROK_i]].key = RETROK_q;
+ icade_maps[j][rarch_keysym_lut[RETROK_m]].key = RETROK_q;
+ icade_maps[j][rarch_keysym_lut[RETROK_j]].key = RETROK_a;
+ icade_maps[j][rarch_keysym_lut[RETROK_n]].key = RETROK_a;
+ icade_maps[j][rarch_keysym_lut[RETROK_k]].key = RETROK_w;
+ icade_maps[j][rarch_keysym_lut[RETROK_p]].key = RETROK_w;
+ icade_maps[j][rarch_keysym_lut[RETROK_h]].key = RETROK_x;
+ icade_maps[j][rarch_keysym_lut[RETROK_r]].key = RETROK_x;
+ icade_maps[j][rarch_keysym_lut[RETROK_y]].key = RETROK_s;
+ icade_maps[j][rarch_keysym_lut[RETROK_t]].key = RETROK_s;
+
+ icade_maps[j][rarch_keysym_lut[RETROK_e]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_z]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_q]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_c]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_f]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_m]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_t]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_n]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_p]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_r]].up = true;
+
+ /* 8-bitty */
+ j = 2;
+
+ icade_maps[j][rarch_keysym_lut[RETROK_a]].key = RETROK_LEFT;
+ icade_maps[j][rarch_keysym_lut[RETROK_q]].key = RETROK_LEFT;
+ icade_maps[j][rarch_keysym_lut[RETROK_c]].key = RETROK_RIGHT;
+ icade_maps[j][rarch_keysym_lut[RETROK_d]].key = RETROK_RIGHT;
+ icade_maps[j][rarch_keysym_lut[RETROK_e]].key = RETROK_UP;
+ icade_maps[j][rarch_keysym_lut[RETROK_w]].key = RETROK_UP;
+ icade_maps[j][rarch_keysym_lut[RETROK_x]].key = RETROK_DOWN;
+ icade_maps[j][rarch_keysym_lut[RETROK_z]].key = RETROK_DOWN;
+ icade_maps[j][rarch_keysym_lut[RETROK_h]].key = RETROK_q;
+ icade_maps[j][rarch_keysym_lut[RETROK_r]].key = RETROK_q;
+ icade_maps[j][rarch_keysym_lut[RETROK_j]].key = RETROK_w;
+ icade_maps[j][rarch_keysym_lut[RETROK_n]].key = RETROK_w;
+ icade_maps[j][rarch_keysym_lut[RETROK_i]].key = RETROK_a;
+ icade_maps[j][rarch_keysym_lut[RETROK_m]].key = RETROK_a;
+ icade_maps[j][rarch_keysym_lut[RETROK_k]].key = RETROK_z;
+ icade_maps[j][rarch_keysym_lut[RETROK_p]].key = RETROK_z;
+ icade_maps[j][rarch_keysym_lut[RETROK_y]].key = RETROK_RSHIFT;
+ icade_maps[j][rarch_keysym_lut[RETROK_t]].key = RETROK_RSHIFT;
+ icade_maps[j][rarch_keysym_lut[RETROK_u]].key = RETROK_RETURN;
+ icade_maps[j][rarch_keysym_lut[RETROK_f]].key = RETROK_RETURN;
+ icade_maps[j][rarch_keysym_lut[RETROK_l]].key = RETROK_x;
+ icade_maps[j][rarch_keysym_lut[RETROK_v]].key = RETROK_x;
+ icade_maps[j][rarch_keysym_lut[RETROK_o]].key = RETROK_s;
+ icade_maps[j][rarch_keysym_lut[RETROK_g]].key = RETROK_s;
+
+ icade_maps[j][rarch_keysym_lut[RETROK_e]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_z]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_q]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_c]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_r]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_n]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_m]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_p]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_t]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_f]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_v]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_g]].up = true;
+
+ /* SNES30 8bitDo */
+ j = 3;
+
+ icade_maps[j][rarch_keysym_lut[RETROK_e]].key = RETROK_UP;
+ icade_maps[j][rarch_keysym_lut[RETROK_w]].key = RETROK_UP;
+ icade_maps[j][rarch_keysym_lut[RETROK_x]].key = RETROK_DOWN;
+ icade_maps[j][rarch_keysym_lut[RETROK_z]].key = RETROK_DOWN;
+ icade_maps[j][rarch_keysym_lut[RETROK_a]].key = RETROK_LEFT;
+ icade_maps[j][rarch_keysym_lut[RETROK_q]].key = RETROK_LEFT;
+ icade_maps[j][rarch_keysym_lut[RETROK_c]].key = RETROK_RIGHT;
+ icade_maps[j][rarch_keysym_lut[RETROK_d]].key = RETROK_RIGHT;
+ icade_maps[j][rarch_keysym_lut[RETROK_u]].key = RETROK_x;
+ icade_maps[j][rarch_keysym_lut[RETROK_f]].key = RETROK_x;
+ icade_maps[j][rarch_keysym_lut[RETROK_h]].key = RETROK_z;
+ icade_maps[j][rarch_keysym_lut[RETROK_r]].key = RETROK_z;
+ icade_maps[j][rarch_keysym_lut[RETROK_y]].key = RETROK_a;
+ icade_maps[j][rarch_keysym_lut[RETROK_t]].key = RETROK_a;
+ icade_maps[j][rarch_keysym_lut[RETROK_j]].key = RETROK_s;
+ icade_maps[j][rarch_keysym_lut[RETROK_n]].key = RETROK_s;
+ icade_maps[j][rarch_keysym_lut[RETROK_k]].key = RETROK_q;
+ icade_maps[j][rarch_keysym_lut[RETROK_p]].key = RETROK_q;
+ icade_maps[j][rarch_keysym_lut[RETROK_i]].key = RETROK_w;
+ icade_maps[j][rarch_keysym_lut[RETROK_m]].key = RETROK_w;
+ icade_maps[j][rarch_keysym_lut[RETROK_l]].key = RETROK_RSHIFT;
+ icade_maps[j][rarch_keysym_lut[RETROK_v]].key = RETROK_RSHIFT;
+ icade_maps[j][rarch_keysym_lut[RETROK_o]].key = RETROK_RETURN;
+ icade_maps[j][rarch_keysym_lut[RETROK_g]].key = RETROK_RETURN;
+
+ icade_maps[j][rarch_keysym_lut[RETROK_v]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_g]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_e]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_z]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_q]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_c]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_r]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_f]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_n]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_t]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_p]].up = true;
+ icade_maps[j][rarch_keysym_lut[RETROK_m]].up = true;
+
+ initialized = true;
+ }
+
+ if ((*code < 0x20) && (icade_maps[kb_type_idx][*code].key != RETROK_UNKNOWN))
+ {
+ *keydown = icade_maps[kb_type_idx][*code].up ? false : true;
+ ret = true;
+ *code = rarch_keysym_lut[icade_maps[kb_type_idx][*code].key];
+ }
+
+ return ret;
+}
+
+void apple_input_keyboard_event(bool down,
+ unsigned code, uint32_t character, uint32_t mod, unsigned device)
+{
+ settings_t *settings = config_get_ptr();
+ bool keyboard_gamepad_enable = settings->bools.input_keyboard_gamepad_enable;
+ bool small_keyboard_enable = settings->bools.input_small_keyboard_enable;
+ code = HIDKEY(code);
+
+ if (keyboard_gamepad_enable)
+ {
+ if (handle_icade_event(&code, &down))
+ character = 0;
+ else
+ code = 0;
+ }
+ else if (small_keyboard_enable)
+ {
+ if (handle_small_keyboard(&code, down))
+ character = 0;
+ }
+
+ if (code == 0 || code >= MAX_KEYS)
+ return;
+
+ apple_key_state[code] = down;
+
+ input_keyboard_event(down,
+ input_keymaps_translate_keysym_to_rk(code),
+ character, (enum retro_mod)mod, device);
+}
+#else
+/* Taken from https://github.com/depp/keycode,
+ * check keycode.h for license. */
+static const unsigned char MAC_NATIVE_TO_HID[128] = {
+ 4, 22, 7, 9, 11, 10, 29, 27, 6, 25,255, 5, 20, 26, 8, 21,
+ 28, 23, 30, 31, 32, 33, 35, 34, 46, 38, 36, 45, 37, 39, 48, 18,
+ 24, 47, 12, 19, 40, 15, 13, 52, 14, 51, 49, 54, 56, 17, 16, 55,
+ 43, 44, 53, 42,255, 41,231,227,225, 57,226,224,229,230,228,255,
+ 108, 99,255, 85,255, 87,255, 83,255,255,255, 84, 88,255, 86,109,
+ 110,103, 98, 89, 90, 91, 92, 93, 94, 95,111, 96, 97,255,255,255,
+ 62, 63, 64, 60, 65, 66,255, 68,255,104,107,105,255, 67,255, 69,
+ 255,106,117, 74, 75, 76, 61, 77, 59, 78, 58, 80, 79, 81, 82,255
+};
+
+#define HIDKEY(X) (X < 128) ? MAC_NATIVE_TO_HID[X] : 0
+
+void apple_input_keyboard_event(bool down,
+ unsigned code, uint32_t character, uint32_t mod, unsigned device)
+{
+ code = HIDKEY(code);
+ if (code == 0 || code >= MAX_KEYS)
+ return;
+
+ apple_key_state[code] = down;
+
+ input_keyboard_event(down,
+ input_keymaps_translate_keysym_to_rk(code),
+ character, (enum retro_mod)mod, device);
+}
+#endif
+
static void *cocoa_input_init(const char *joypad_driver)
{
cocoa_input_data_t *apple = (cocoa_input_data_t*)calloc(1, sizeof(*apple));
diff --git a/input/drivers_keyboard/keyboard_event_apple.c b/input/drivers_keyboard/keyboard_event_apple.c
deleted file mode 100644
index 5743db4e6e..0000000000
--- a/input/drivers_keyboard/keyboard_event_apple.c
+++ /dev/null
@@ -1,316 +0,0 @@
-/* RetroArch - A frontend for libretro.
- * Copyright (C) 2011-2017 - Daniel De Matteis
- * Copyright (C) 2013-2014 - Jason Fetters
- *
- * RetroArch is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Found-
- * ation, either version 3 of the License, or (at your option) any later version.
- *
- * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
- * PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with RetroArch.
- * If not, see .
- */
-
-#include
-#include
-
-#ifdef HAVE_CONFIG_H
-#include "../../config.h"
-#endif
-
-#include "../input_keymaps.h"
-
-#include "../../driver.h"
-#include "../../retroarch.h"
-
-#include "keyboard_event_apple.h"
-
-uint32_t apple_key_state[MAX_KEYS];
-
-#if TARGET_OS_IPHONE
-/* TODO/FIXME - static globals */
-static bool small_keyboard_active = false;
-
-#define HIDKEY(X) X
-#define MAX_ICADE_PROFILES 4
-#define MAX_ICADE_KEYS 0x100
-
-typedef struct icade_map
-{
- bool up;
- enum retro_key key;
-} icade_map_t;
-
-static icade_map_t icade_maps[MAX_ICADE_PROFILES][MAX_ICADE_KEYS];
-
-static bool handle_small_keyboard(unsigned* code, bool down)
-{
- static uint8_t mapping[128];
- static bool map_initialized;
- static const struct { uint8_t orig; uint8_t mod; } mapping_def[] =
- {
- { KEY_Grave, KEY_Escape }, { KEY_1, KEY_F1 },
- { KEY_2, KEY_F2 }, { KEY_3, KEY_F3 },
- { KEY_4, KEY_F4 }, { KEY_5, KEY_F5 },
- { KEY_6, KEY_F6 }, { KEY_7, KEY_F7 },
- { KEY_8, KEY_F8 }, { KEY_9, KEY_F9 },
- { KEY_0, KEY_F10 }, { KEY_Minus, KEY_F11 },
- { KEY_Equals, KEY_F12 }, { KEY_Up, KEY_PageUp },
- { KEY_Down, KEY_PageDown }, { KEY_Left, KEY_Home },
- { KEY_Right, KEY_End }, { KEY_Q, KP_7 },
- { KEY_W, KP_8 }, { KEY_E, KP_9 },
- { KEY_A, KP_4 }, { KEY_S, KP_5 },
- { KEY_D, KP_6 }, { KEY_Z, KP_1 },
- { KEY_X, KP_2 }, { KEY_C, KP_3 },
- { 0 }
- };
- unsigned translated_code = 0;
-
- if (!map_initialized)
- {
- int i;
- for (i = 0; mapping_def[i].orig; i ++)
- mapping[mapping_def[i].orig] = mapping_def[i].mod;
- map_initialized = true;
- }
-
- if (*code == KEY_RightShift)
- {
- small_keyboard_active = down;
- *code = 0;
- return true;
- }
-
- if (*code < 128)
- translated_code = mapping[*code];
-
- /* Allow old keys to be released. */
- if (!down && apple_key_state[*code])
- return false;
-
- if ((!down && apple_key_state[translated_code]) ||
- small_keyboard_active)
- {
- *code = translated_code;
- return true;
- }
-
- return false;
-}
-
-static bool handle_icade_event(unsigned *code, bool *keydown)
-{
- static bool initialized = false;
- bool ret = false;
- settings_t *settings = config_get_ptr();
- unsigned kb_type_idx = settings->uints.input_keyboard_gamepad_mapping_type;
-
- if (!initialized)
- {
- unsigned i;
- unsigned j = 0;
-
- for (j = 0; j < MAX_ICADE_PROFILES; j++)
- {
- for (i = 0; i < MAX_ICADE_KEYS; i++)
- {
- icade_maps[j][i].key = RETROK_UNKNOWN;
- icade_maps[j][i].up = false;
- }
- }
-
- /* iPega PG-9017 */
- j = 1;
-
- icade_maps[j][rarch_keysym_lut[RETROK_a]].key = RETROK_LEFT;
- icade_maps[j][rarch_keysym_lut[RETROK_q]].key = RETROK_LEFT;
- icade_maps[j][rarch_keysym_lut[RETROK_c]].key = RETROK_RIGHT;
- icade_maps[j][rarch_keysym_lut[RETROK_d]].key = RETROK_RIGHT;
- icade_maps[j][rarch_keysym_lut[RETROK_e]].key = RETROK_UP;
- icade_maps[j][rarch_keysym_lut[RETROK_w]].key = RETROK_UP;
- icade_maps[j][rarch_keysym_lut[RETROK_x]].key = RETROK_DOWN;
- icade_maps[j][rarch_keysym_lut[RETROK_z]].key = RETROK_DOWN;
- icade_maps[j][rarch_keysym_lut[RETROK_f]].key = RETROK_z;
- icade_maps[j][rarch_keysym_lut[RETROK_u]].key = RETROK_z;
- icade_maps[j][rarch_keysym_lut[RETROK_i]].key = RETROK_q;
- icade_maps[j][rarch_keysym_lut[RETROK_m]].key = RETROK_q;
- icade_maps[j][rarch_keysym_lut[RETROK_j]].key = RETROK_a;
- icade_maps[j][rarch_keysym_lut[RETROK_n]].key = RETROK_a;
- icade_maps[j][rarch_keysym_lut[RETROK_k]].key = RETROK_w;
- icade_maps[j][rarch_keysym_lut[RETROK_p]].key = RETROK_w;
- icade_maps[j][rarch_keysym_lut[RETROK_h]].key = RETROK_x;
- icade_maps[j][rarch_keysym_lut[RETROK_r]].key = RETROK_x;
- icade_maps[j][rarch_keysym_lut[RETROK_y]].key = RETROK_s;
- icade_maps[j][rarch_keysym_lut[RETROK_t]].key = RETROK_s;
-
- icade_maps[j][rarch_keysym_lut[RETROK_e]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_z]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_q]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_c]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_f]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_m]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_t]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_n]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_p]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_r]].up = true;
-
- /* 8-bitty */
- j = 2;
-
- icade_maps[j][rarch_keysym_lut[RETROK_a]].key = RETROK_LEFT;
- icade_maps[j][rarch_keysym_lut[RETROK_q]].key = RETROK_LEFT;
- icade_maps[j][rarch_keysym_lut[RETROK_c]].key = RETROK_RIGHT;
- icade_maps[j][rarch_keysym_lut[RETROK_d]].key = RETROK_RIGHT;
- icade_maps[j][rarch_keysym_lut[RETROK_e]].key = RETROK_UP;
- icade_maps[j][rarch_keysym_lut[RETROK_w]].key = RETROK_UP;
- icade_maps[j][rarch_keysym_lut[RETROK_x]].key = RETROK_DOWN;
- icade_maps[j][rarch_keysym_lut[RETROK_z]].key = RETROK_DOWN;
- icade_maps[j][rarch_keysym_lut[RETROK_h]].key = RETROK_q;
- icade_maps[j][rarch_keysym_lut[RETROK_r]].key = RETROK_q;
- icade_maps[j][rarch_keysym_lut[RETROK_j]].key = RETROK_w;
- icade_maps[j][rarch_keysym_lut[RETROK_n]].key = RETROK_w;
- icade_maps[j][rarch_keysym_lut[RETROK_i]].key = RETROK_a;
- icade_maps[j][rarch_keysym_lut[RETROK_m]].key = RETROK_a;
- icade_maps[j][rarch_keysym_lut[RETROK_k]].key = RETROK_z;
- icade_maps[j][rarch_keysym_lut[RETROK_p]].key = RETROK_z;
- icade_maps[j][rarch_keysym_lut[RETROK_y]].key = RETROK_RSHIFT;
- icade_maps[j][rarch_keysym_lut[RETROK_t]].key = RETROK_RSHIFT;
- icade_maps[j][rarch_keysym_lut[RETROK_u]].key = RETROK_RETURN;
- icade_maps[j][rarch_keysym_lut[RETROK_f]].key = RETROK_RETURN;
- icade_maps[j][rarch_keysym_lut[RETROK_l]].key = RETROK_x;
- icade_maps[j][rarch_keysym_lut[RETROK_v]].key = RETROK_x;
- icade_maps[j][rarch_keysym_lut[RETROK_o]].key = RETROK_s;
- icade_maps[j][rarch_keysym_lut[RETROK_g]].key = RETROK_s;
-
- icade_maps[j][rarch_keysym_lut[RETROK_e]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_z]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_q]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_c]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_r]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_n]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_m]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_p]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_t]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_f]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_v]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_g]].up = true;
-
- /* SNES30 8bitDo */
- j = 3;
-
- icade_maps[j][rarch_keysym_lut[RETROK_e]].key = RETROK_UP;
- icade_maps[j][rarch_keysym_lut[RETROK_w]].key = RETROK_UP;
- icade_maps[j][rarch_keysym_lut[RETROK_x]].key = RETROK_DOWN;
- icade_maps[j][rarch_keysym_lut[RETROK_z]].key = RETROK_DOWN;
- icade_maps[j][rarch_keysym_lut[RETROK_a]].key = RETROK_LEFT;
- icade_maps[j][rarch_keysym_lut[RETROK_q]].key = RETROK_LEFT;
- icade_maps[j][rarch_keysym_lut[RETROK_c]].key = RETROK_RIGHT;
- icade_maps[j][rarch_keysym_lut[RETROK_d]].key = RETROK_RIGHT;
- icade_maps[j][rarch_keysym_lut[RETROK_u]].key = RETROK_x;
- icade_maps[j][rarch_keysym_lut[RETROK_f]].key = RETROK_x;
- icade_maps[j][rarch_keysym_lut[RETROK_h]].key = RETROK_z;
- icade_maps[j][rarch_keysym_lut[RETROK_r]].key = RETROK_z;
- icade_maps[j][rarch_keysym_lut[RETROK_y]].key = RETROK_a;
- icade_maps[j][rarch_keysym_lut[RETROK_t]].key = RETROK_a;
- icade_maps[j][rarch_keysym_lut[RETROK_j]].key = RETROK_s;
- icade_maps[j][rarch_keysym_lut[RETROK_n]].key = RETROK_s;
- icade_maps[j][rarch_keysym_lut[RETROK_k]].key = RETROK_q;
- icade_maps[j][rarch_keysym_lut[RETROK_p]].key = RETROK_q;
- icade_maps[j][rarch_keysym_lut[RETROK_i]].key = RETROK_w;
- icade_maps[j][rarch_keysym_lut[RETROK_m]].key = RETROK_w;
- icade_maps[j][rarch_keysym_lut[RETROK_l]].key = RETROK_RSHIFT;
- icade_maps[j][rarch_keysym_lut[RETROK_v]].key = RETROK_RSHIFT;
- icade_maps[j][rarch_keysym_lut[RETROK_o]].key = RETROK_RETURN;
- icade_maps[j][rarch_keysym_lut[RETROK_g]].key = RETROK_RETURN;
-
- icade_maps[j][rarch_keysym_lut[RETROK_v]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_g]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_e]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_z]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_q]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_c]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_r]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_f]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_n]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_t]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_p]].up = true;
- icade_maps[j][rarch_keysym_lut[RETROK_m]].up = true;
-
- initialized = true;
- }
-
- if ((*code < 0x20) && (icade_maps[kb_type_idx][*code].key != RETROK_UNKNOWN))
- {
- *keydown = icade_maps[kb_type_idx][*code].up ? false : true;
- ret = true;
- *code = rarch_keysym_lut[icade_maps[kb_type_idx][*code].key];
- }
-
- return ret;
-}
-
-void apple_input_keyboard_event(bool down,
- unsigned code, uint32_t character, uint32_t mod, unsigned device)
-{
- settings_t *settings = config_get_ptr();
- bool keyboard_gamepad_enable = settings->bools.input_keyboard_gamepad_enable;
- bool small_keyboard_enable = settings->bools.input_small_keyboard_enable;
- code = HIDKEY(code);
-
- if (keyboard_gamepad_enable)
- {
- if (handle_icade_event(&code, &down))
- character = 0;
- else
- code = 0;
- }
- else if (small_keyboard_enable)
- {
- if (handle_small_keyboard(&code, down))
- character = 0;
- }
-
- if (code == 0 || code >= MAX_KEYS)
- return;
-
- apple_key_state[code] = down;
-
- input_keyboard_event(down,
- input_keymaps_translate_keysym_to_rk(code),
- character, (enum retro_mod)mod, device);
-}
-#else
-/* Taken from https://github.com/depp/keycode,
- * check keycode.h for license. */
-
-static const unsigned char MAC_NATIVE_TO_HID[128] = {
- 4, 22, 7, 9, 11, 10, 29, 27, 6, 25,255, 5, 20, 26, 8, 21,
- 28, 23, 30, 31, 32, 33, 35, 34, 46, 38, 36, 45, 37, 39, 48, 18,
- 24, 47, 12, 19, 40, 15, 13, 52, 14, 51, 49, 54, 56, 17, 16, 55,
- 43, 44, 53, 42,255, 41,231,227,225, 57,226,224,229,230,228,255,
- 108, 99,255, 85,255, 87,255, 83,255,255,255, 84, 88,255, 86,109,
- 110,103, 98, 89, 90, 91, 92, 93, 94, 95,111, 96, 97,255,255,255,
- 62, 63, 64, 60, 65, 66,255, 68,255,104,107,105,255, 67,255, 69,
- 255,106,117, 74, 75, 76, 61, 77, 59, 78, 58, 80, 79, 81, 82,255
-};
-
-#define HIDKEY(X) (X < 128) ? MAC_NATIVE_TO_HID[X] : 0
-
-void apple_input_keyboard_event(bool down,
- unsigned code, uint32_t character, uint32_t mod, unsigned device)
-{
- code = HIDKEY(code);
- if (code == 0 || code >= MAX_KEYS)
- return;
-
- apple_key_state[code] = down;
-
- input_keyboard_event(down,
- input_keymaps_translate_keysym_to_rk(code),
- character, (enum retro_mod)mod, device);
-}
-#endif
-
diff --git a/input/drivers_keyboard/keyboard_event_apple.h b/input/drivers_keyboard/keyboard_event_apple.h
index e608799df9..4cb4064dda 100644
--- a/input/drivers_keyboard/keyboard_event_apple.h
+++ b/input/drivers_keyboard/keyboard_event_apple.h
@@ -169,8 +169,6 @@ RETRO_BEGIN_DECLS
void apple_input_keyboard_event(bool down,
unsigned code, uint32_t character, uint32_t mod, unsigned device);
-extern uint32_t apple_key_state[MAX_KEYS];
-
RETRO_END_DECLS
#endif