/** * input_keys_pressed: * * Grab an input sample for this frame. * * TODO: In case RARCH_BIND_LIST_END starts exceeding 64, * and you need a bitmask of more than 64 entries, reimplement * it to use something like rarch_bits_t. * * Returns: Input sample containg a mask of all pressed keys. */ retro_input_t input_keys_pressed(void) { unsigned i, key; const struct retro_keybind *binds[MAX_USERS]; retro_input_t ret = {0}; settings_t *settings = config_get_ptr(); for (i = 0; i < MAX_USERS; i++) binds[i] = settings->input.binds[i]; if (!current_input || !current_input_data) return ret; input_driver_turbo_btns.count++; key = RARCH_ENABLE_HOTKEY; if (check_input_driver_block_hotkey(input_driver_key_pressed(&key))) input_driver_set_libretro_input_blocked(); else input_driver_unset_libretro_input_blocked(); for (i = 0; i < settings->input.max_users; i++) { input_push_analog_dpad(settings->input.binds[i], settings->input.analog_dpad_mode[i]); input_push_analog_dpad(settings->input.autoconf_binds[i], settings->input.analog_dpad_mode[i]); input_driver_turbo_btns.frame_enable[i] = 0; } if (!input_driver_is_libretro_input_blocked()) { for (i = 0; i < settings->input.max_users; i++) input_driver_turbo_btns.frame_enable[i] = input_driver_state(binds, i, RETRO_DEVICE_JOYPAD, 0, RARCH_TURBO_ENABLE); } ret = input_driver_keys_pressed(); for (i = 0; i < settings->input.max_users; i++) { input_pop_analog_dpad(settings->input.binds[i]); input_pop_analog_dpad(settings->input.autoconf_binds[i]); } return ret; }
/** * input_keys_pressed: * * Grab an input sample for this frame. * * TODO: In case RARCH_BIND_LIST_END starts exceeding 64, * and you need a bitmask of more than 64 entries, reimplement * it to use something like rarch_bits_t. * * Returns: Input sample containg a mask of all pressed keys. */ static INLINE retro_input_t input_keys_pressed(driver_t *driver, settings_t *settings, global_t *global, uint64_t *devices) { unsigned i; const struct retro_keybind *binds[MAX_USERS]; retro_input_t ret = 0; enum input_device_type device = INPUT_DEVICE_TYPE_NONE; for (i = 0; i < MAX_USERS; i++) binds[i] = settings->input.binds[i]; if (!driver->input || !driver->input_data) return 0; global->turbo.count++; driver->block_libretro_input = check_block_hotkey(driver, settings, driver->input->key_pressed( driver->input_data, RARCH_ENABLE_HOTKEY, &device)); for (i = 0; i < settings->input.max_users; i++) { input_push_analog_dpad(settings->input.binds[i], settings->input.analog_dpad_mode[i]); input_push_analog_dpad(settings->input.autoconf_binds[i], settings->input.analog_dpad_mode[i]); global->turbo.frame_enable[i] = 0; } if (!driver->block_libretro_input) { for (i = 0; i < settings->input.max_users; i++) global->turbo.frame_enable[i] = input_driver_state(binds, i, RETRO_DEVICE_JOYPAD, 0, RARCH_TURBO_ENABLE); } ret = input_driver_keys_pressed(devices); for (i = 0; i < settings->input.max_users; i++) { input_pop_analog_dpad(settings->input.binds[i]); input_pop_analog_dpad(settings->input.autoconf_binds[i]); } return ret; }
/** * input_keys_pressed: * * Grab an input sample for this frame. * * TODO: In case RARCH_BIND_LIST_END starts exceeding 64, * and you need a bitmask of more than 64 entries, reimplement * it to use something like rarch_bits_t. * * Returns: Input sample containg a mask of all pressed keys. */ static inline retro_input_t input_keys_pressed(void) { unsigned i; static const struct retro_keybind *binds[MAX_USERS] = { g_settings.input.binds[0], g_settings.input.binds[1], g_settings.input.binds[2], g_settings.input.binds[3], g_settings.input.binds[4], g_settings.input.binds[5], g_settings.input.binds[6], g_settings.input.binds[7], g_settings.input.binds[8], g_settings.input.binds[9], g_settings.input.binds[10], g_settings.input.binds[11], g_settings.input.binds[12], g_settings.input.binds[13], g_settings.input.binds[14], g_settings.input.binds[15], }; retro_input_t ret = 0; if (!driver.input || !driver.input_data) return 0; g_extern.turbo_count++; driver.block_libretro_input = check_block_hotkey( driver.input->key_pressed(driver.input_data, RARCH_ENABLE_HOTKEY)); for (i = 0; i < g_settings.input.max_users; i++) { input_push_analog_dpad(g_settings.input.binds[i], g_settings.input.analog_dpad_mode[i]); input_push_analog_dpad(g_settings.input.autoconf_binds[i], g_settings.input.analog_dpad_mode[i]); g_extern.turbo_frame_enable[i] = 0; } if (!driver.block_libretro_input) { for (i = 0; i < g_settings.input.max_users; i++) { g_extern.turbo_frame_enable[i] = driver.input->input_state(driver.input_data, binds, i, RETRO_DEVICE_JOYPAD, 0, RARCH_TURBO_ENABLE); } } ret = input_driver_keys_pressed(); for (i = 0; i < g_settings.input.max_users; i++) { input_pop_analog_dpad(g_settings.input.binds[i]); input_pop_analog_dpad(g_settings.input.autoconf_binds[i]); } return ret; }