diff --git a/input/drivers/cocoa_input.h b/input/drivers/cocoa_input.h index a2a199699f..666e957e6f 100644 --- a/input/drivers/cocoa_input.h +++ b/input/drivers/cocoa_input.h @@ -71,7 +71,8 @@ extern "C" { #endif void cocoa_input_keyboard_event(bool down, unsigned code, - uint32_t character, uint32_t mod, unsigned device); + uint32_t character, uint32_t mod, unsigned device, + bool ignore_keyboard_gamepad); #ifdef __cplusplus } diff --git a/input/drivers_keyboard/keyboard_event_apple.c b/input/drivers_keyboard/keyboard_event_apple.c index 8441ed731a..54f3018077 100644 --- a/input/drivers_keyboard/keyboard_event_apple.c +++ b/input/drivers_keyboard/keyboard_event_apple.c @@ -105,13 +105,14 @@ static bool handle_small_keyboard(unsigned* code, bool down) return false; } +#endif extern const struct rarch_key_map rarch_key_map_apple_hid[]; typedef struct icade_map { - bool up; - enum retro_key key; + bool up; + enum retro_key key; } icade_map_t; #define MAX_ICADE_PROFILES 3 @@ -121,116 +122,116 @@ static icade_map_t icade_maps[MAX_ICADE_PROFILES][MAX_ICADE_KEYS]; static bool handle_icade_event(unsigned *code, bool *keydown) { - settings_t *settings = config_get_ptr(); - static bool initialized = false; - bool ret = false; - unsigned kb_type_idx = settings->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][input_keymaps_translate_rk_to_keysym(RETROK_a)].key = RETROK_LEFT; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_q)].key = RETROK_LEFT; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_c)].key = RETROK_RIGHT; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_d)].key = RETROK_RIGHT; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_e)].key = RETROK_UP; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_w)].key = RETROK_UP; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_x)].key = RETROK_DOWN; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_z)].key = RETROK_DOWN; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_f)].key = RETROK_z; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_u)].key = RETROK_z; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_i)].key = RETROK_q; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_m)].key = RETROK_q; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_j)].key = RETROK_a; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_n)].key = RETROK_a; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_k)].key = RETROK_w; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_p)].key = RETROK_w; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_h)].key = RETROK_x; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_r)].key = RETROK_x; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_y)].key = RETROK_s; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_t)].key = RETROK_s; - - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_e)].up = true; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_z)].up = true; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_q)].up = true; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_c)].up = true; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_f)].up = true; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_m)].up = true; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_t)].up = true; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_n)].up = true; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_p)].up = true; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_r)].up = true; - - /* 8-bitty */ - j = 2; - - initialized = true; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_a)].key = RETROK_LEFT; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_q)].key = RETROK_LEFT; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_c)].key = RETROK_RIGHT; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_d)].key = RETROK_RIGHT; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_e)].key = RETROK_UP; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_w)].key = RETROK_UP; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_x)].key = RETROK_DOWN; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_z)].key = RETROK_DOWN; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_h)].key = RETROK_q; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_r)].key = RETROK_q; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_j)].key = RETROK_w; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_n)].key = RETROK_w; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_i)].key = RETROK_a; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_m)].key = RETROK_a; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_k)].key = RETROK_z; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_p)].key = RETROK_z; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_y)].key = RETROK_RSHIFT; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_t)].key = RETROK_RSHIFT; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_u)].key = RETROK_RETURN; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_f)].key = RETROK_RETURN; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_l)].key = RETROK_x; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_v)].key = RETROK_x; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_o)].key = RETROK_s; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_g)].key = RETROK_s; - - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_e)].up = true; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_z)].up = true; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_q)].up = true; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_c)].up = true; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_r)].up = true; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_n)].up = true; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_m)].up = true; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_p)].up = true; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_t)].up = true; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_f)].up = true; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_v)].up = true; - icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_g)].up = 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 = input_keymaps_translate_rk_to_keysym(icade_maps[kb_type_idx][*code].key); - } - - return ret; + settings_t *settings = config_get_ptr(); + static bool initialized = false; + bool ret = false; + unsigned kb_type_idx = settings->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][input_keymaps_translate_rk_to_keysym(RETROK_a)].key = RETROK_LEFT; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_q)].key = RETROK_LEFT; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_c)].key = RETROK_RIGHT; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_d)].key = RETROK_RIGHT; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_e)].key = RETROK_UP; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_w)].key = RETROK_UP; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_x)].key = RETROK_DOWN; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_z)].key = RETROK_DOWN; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_f)].key = RETROK_z; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_u)].key = RETROK_z; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_i)].key = RETROK_q; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_m)].key = RETROK_q; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_j)].key = RETROK_a; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_n)].key = RETROK_a; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_k)].key = RETROK_w; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_p)].key = RETROK_w; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_h)].key = RETROK_x; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_r)].key = RETROK_x; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_y)].key = RETROK_s; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_t)].key = RETROK_s; + + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_e)].up = true; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_z)].up = true; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_q)].up = true; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_c)].up = true; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_f)].up = true; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_m)].up = true; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_t)].up = true; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_n)].up = true; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_p)].up = true; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_r)].up = true; + + /* 8-bitty */ + j = 2; + + initialized = true; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_a)].key = RETROK_LEFT; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_q)].key = RETROK_LEFT; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_c)].key = RETROK_RIGHT; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_d)].key = RETROK_RIGHT; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_e)].key = RETROK_UP; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_w)].key = RETROK_UP; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_x)].key = RETROK_DOWN; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_z)].key = RETROK_DOWN; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_h)].key = RETROK_q; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_r)].key = RETROK_q; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_j)].key = RETROK_w; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_n)].key = RETROK_w; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_i)].key = RETROK_a; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_m)].key = RETROK_a; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_k)].key = RETROK_z; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_p)].key = RETROK_z; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_y)].key = RETROK_RSHIFT; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_t)].key = RETROK_RSHIFT; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_u)].key = RETROK_RETURN; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_f)].key = RETROK_RETURN; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_l)].key = RETROK_x; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_v)].key = RETROK_x; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_o)].key = RETROK_s; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_g)].key = RETROK_s; + + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_e)].up = true; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_z)].up = true; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_q)].up = true; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_c)].up = true; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_r)].up = true; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_n)].up = true; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_m)].up = true; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_p)].up = true; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_t)].up = true; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_f)].up = true; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_v)].up = true; + icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_g)].up = 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 = input_keymaps_translate_rk_to_keysym(icade_maps[kb_type_idx][*code].key); + } + + return ret; } -#endif void cocoa_input_keyboard_event(bool down, - unsigned code, uint32_t character, uint32_t mod, unsigned device) + unsigned code, uint32_t character, uint32_t mod, unsigned device, + bool ignore_keyboard_gamepad) { driver_t *driver = driver_get_ptr(); settings_t *settings = config_get_ptr(); @@ -241,14 +242,15 @@ void cocoa_input_keyboard_event(bool down, code = HIDKEY(code); -#if TARGET_OS_IPHONE - if (settings->input.keyboard_gamepad_enable) + if (settings->input.keyboard_gamepad_enable && !ignore_keyboard_gamepad) { - if (handle_icade_event(&code, &down)) - character = 0; - else - code = 0; - } + unsigned orig_code = code; + if (handle_icade_event(&code, &down)) + character = 0; + else + code = orig_code; + } +#if TARGET_OS_IPHONE else if (settings->input.small_keyboard_enable) { if (handle_small_keyboard(&code, down)) diff --git a/pkg/apple/RetroArch.xcodeproj/project.pbxproj b/pkg/apple/RetroArch.xcodeproj/project.pbxproj index 5797e4b290..8025a3103e 100644 --- a/pkg/apple/RetroArch.xcodeproj/project.pbxproj +++ b/pkg/apple/RetroArch.xcodeproj/project.pbxproj @@ -23,6 +23,7 @@ 500845341B89300700CE6073 /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84DD5EB41A89E737007336C1 /* IOKit.framework */; }; 5061C8A41AE47E510080AE14 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 5061C8A31AE47E510080AE14 /* libz.dylib */; }; 509F0C9D1AA23AFC00619ECC /* griffin_objc.m in Sources */ = {isa = PBXBuildFile; fileRef = 509F0C9C1AA23AFC00619ECC /* griffin_objc.m */; }; + 50A1B3011BF69A8F007D47CD /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50A1B3001BF69A8F007D47CD /* Carbon.framework */; }; 840222FC1A889EE2009AB261 /* griffin.c in Sources */ = {isa = PBXBuildFile; fileRef = 840222FB1A889EE2009AB261 /* griffin.c */; }; 84DD5E9F1A88E45B007336C1 /* CoreVideo.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 84DD5E9E1A88E45B007336C1 /* CoreVideo.framework */; }; 84DD5EA31A89E2AA007336C1 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 29B97324FDCFA39411CA2CEA /* AppKit.framework */; }; @@ -77,10 +78,11 @@ 089C165DFE840E0CC02AAC07 /* InfoPlist.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = InfoPlist.strings; path = OSX/en.lproj/InfoPlist.strings; sourceTree = ""; }; 1DDD58150DA1D0A300B32029 /* MainMenu.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = MainMenu.xib; path = OSX/en.lproj/MainMenu.xib; sourceTree = ""; }; 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; - 5008453A1B89300700CE6073 /* RetroArchCg.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "RetroArchCg.app"; sourceTree = BUILT_PRODUCTS_DIR; }; - 5008453B1B89300700CE6073 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Info.plist"; path = "/../../pkg/apple/OSX/Info.plist"; sourceTree = SOURCE_ROOT; }; + 5008453A1B89300700CE6073 /* RetroArchCg.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RetroArchCg.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 5008453B1B89300700CE6073 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = /../../pkg/apple/OSX/Info.plist; sourceTree = SOURCE_ROOT; }; 5061C8A31AE47E510080AE14 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; }; 509F0C9C1AA23AFC00619ECC /* griffin_objc.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = griffin_objc.m; path = ../../griffin/griffin_objc.m; sourceTree = ""; }; + 50A1B3001BF69A8F007D47CD /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; }; 840222FB1A889EE2009AB261 /* griffin.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = griffin.c; path = ../../griffin/griffin.c; sourceTree = SOURCE_ROOT; }; 84DD5E9E1A88E45B007336C1 /* CoreVideo.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreVideo.framework; path = /System/Library/Frameworks/CoreVideo.framework; sourceTree = ""; }; 84DD5EA61A89E406007336C1 /* CoreLocation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = /System/Library/Frameworks/CoreLocation.framework; sourceTree = ""; }; @@ -90,7 +92,7 @@ 84DD5EB21A89E6C0007336C1 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = /System/Library/Frameworks/AudioUnit.framework; sourceTree = ""; }; 84DD5EB41A89E737007336C1 /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = ../../../../../../System/Library/Frameworks/IOKit.framework; sourceTree = ""; }; 84DD5EB71A89F1C7007336C1 /* retroarch.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = retroarch.icns; path = ../../media/retroarch.icns; sourceTree = ""; }; - 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = "Info.plist"; path = "OSX/Info.plist"; sourceTree = ""; }; + 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = OSX/Info.plist; sourceTree = ""; }; 8D1107320486CEB800E47090 /* RetroArch.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = RetroArch.app; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -99,6 +101,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 50A1B3011BF69A8F007D47CD /* Carbon.framework in Frameworks */, 5008452C1B89300700CE6073 /* libz.dylib in Frameworks */, 5008452D1B89300700CE6073 /* CoreAudio.framework in Frameworks */, 5008452E1B89300700CE6073 /* AudioUnit.framework in Frameworks */, @@ -204,6 +207,7 @@ 29B97323FDCFA39411CA2CEA /* Frameworks */ = { isa = PBXGroup; children = ( + 50A1B3001BF69A8F007D47CD /* Carbon.framework */, 5061C8A31AE47E510080AE14 /* libz.dylib */, 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */, @@ -378,12 +382,12 @@ "$(SRCROOT)/../../gfx/inc", "$(SRCROOT)/../../libretro-common/include", ); - INFOPLIST_FILE = "OSX/Info.plist"; + INFOPLIST_FILE = OSX/Info.plist; INSTALL_PATH = "$(HOME)/Applications"; MACOSX_DEPLOYMENT_TARGET = 10.5; OTHER_CFLAGS = ( "-DHAVE_GRIFFIN", - "-DHAVE_CHEEVOS", + "-DHAVE_CHEEVOS", "-DHAVE_IMAGEVIEWER", "-DHAVE_CORETEXT", "-DHAVE_IOHIDMANAGER", @@ -418,7 +422,7 @@ "-DHAVE_LIBRETRODB", ); PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = YES; - PRODUCT_NAME = "RetroArchCg"; + PRODUCT_NAME = RetroArchCg; }; name = Debug; }; @@ -439,12 +443,12 @@ "$(SRCROOT)/../../gfx/inc", "$(SRCROOT)/../../libretro-common/include", ); - INFOPLIST_FILE = "OSX/Info.plist"; + INFOPLIST_FILE = OSX/Info.plist; INSTALL_PATH = "$(HOME)/Applications"; MACOSX_DEPLOYMENT_TARGET = 10.5; OTHER_CFLAGS = ( "-DHAVE_GRIFFIN", - "-DHAVE_CHEEVOS", + "-DHAVE_CHEEVOS", "-DHAVE_IMAGEVIEWER", "-DHAVE_IOHIDMANAGER", "-DHAVE_CORETEXT", @@ -479,7 +483,7 @@ "-DHAVE_LIBRETRODB", ); PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = YES; - PRODUCT_NAME = "RetroArchCg"; + PRODUCT_NAME = RetroArchCg; }; name = Release; }; @@ -507,7 +511,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.5; OTHER_CFLAGS = ( "-DHAVE_GRIFFIN", - "-DHAVE_CHEEVOS", + "-DHAVE_CHEEVOS", "-DHAVE_IMAGEVIEWER", "-DHAVE_CORETEXT", "-DHAVE_IOHIDMANAGER", @@ -567,7 +571,7 @@ MACOSX_DEPLOYMENT_TARGET = 10.5; OTHER_CFLAGS = ( "-DHAVE_GRIFFIN", - "-DHAVE_CHEEVOS", + "-DHAVE_CHEEVOS", "-DHAVE_IMAGEVIEWER", "-DHAVE_IOHIDMANAGER", "-DHAVE_CORETEXT", diff --git a/ui/drivers/ui_cocoa.m b/ui/drivers/ui_cocoa.m index 1d50516bcd..2f84f3a79c 100644 --- a/ui/drivers/ui_cocoa.m +++ b/ui/drivers/ui_cocoa.m @@ -43,12 +43,21 @@ void apple_rarch_exited(void) - (void)sendEvent:(NSEvent *)event { + unsigned kbt; NSEventType event_type; cocoa_input_data_t *apple = NULL; driver_t *driver = driver_get_ptr(); if (!driver) return; [super sendEvent:event]; + + EventRef ce = (EventRef)[event eventRef]; + if (ce) + { + GetEventParameter(ce, kEventParamKeyboardType, + typeUInt32, NULL, sizeof(kbt), NULL, &kbt); + NSLog(@"kbt is: %d", kbt); + } apple = (cocoa_input_data_t*)driver->input_data; event_type = event.type; @@ -85,11 +94,13 @@ void apple_rarch_exited(void) for (i = 1; i < ch.length; i++) cocoa_input_keyboard_event(event_type == NSKeyDown, - 0, [ch characterAtIndex:i], mod, RETRO_DEVICE_KEYBOARD); + 0, [ch characterAtIndex:i], mod, RETRO_DEVICE_KEYBOARD, + (kbt == 44) ? true : false); } cocoa_input_keyboard_event(event_type == NSKeyDown, - event.keyCode, character, mod, RETRO_DEVICE_KEYBOARD); + (uint32_t)event.keyCode, character, mod, RETRO_DEVICE_KEYBOARD, + (kbt == 44) ? true : false); } break; case NSFlagsChanged: @@ -100,7 +111,8 @@ void apple_rarch_exited(void) old_flags = new_flags; cocoa_input_keyboard_event(down, event.keyCode, - 0, event.modifierFlags, RETRO_DEVICE_KEYBOARD); + 0, event.modifierFlags, RETRO_DEVICE_KEYBOARD, + (kbt == 44) ? true : false); } break; case NSMouseMoved: