diff --git a/input/drivers/cocoa_input.c b/input/drivers/cocoa_input.c index b80baedc70..369576c817 100644 --- a/input/drivers/cocoa_input.c +++ b/input/drivers/cocoa_input.c @@ -209,22 +209,22 @@ static int16_t cocoa_input_state(void *data, { unsigned i; int16_t ret = 0; - int16_t ret = - apple->joypad->state( - joypad_info, binds[port], port) -#ifdef HAVE_MFI - | apple->sec_joypad->state( - joypad_info, binds[port], port) -#endif - ; - - if (!input_dinput.keyboard_mapping_blocked) + for (i = 0; i < RARCH_FIRST_CUSTOM_BIND; i++) { - for (i = 0; i < RARCH_FIRST_CUSTOM_BIND; i++) + if (binds[port][i].valid) { - if ((binds[port][i].key < RETROK_LAST) && - apple_key_state[rarch_keysym_lut[binds[port][i].key]] & 0x80) - ret |= (1 << i); + if (button_is_pressed( + apple->joypad, + joypad_info, binds[port], port, i)) + ret |= (1 << i); +#ifdef HAVE_MFI + else if (button_is_pressed( + apple->sec_joypad, + joypad_info, binds[port], port, i)) + ret |= (1 << i); +#endif + else if (apple_key_state[rarch_keysym_lut[binds[port][i].key]]) + ret |= (1 << i); } } return ret;