int menu_input_key_bind_set_mode(void *data, enum menu_input_bind_mode type) { unsigned index_offset; menu_handle_t *menu = menu_driver_get_ptr(); menu_input_t *menu_input = menu_input_get_ptr(); rarch_setting_t *setting = (rarch_setting_t*)data; settings_t *settings = config_get_ptr(); if (!setting) return -1; if (menu_input_key_bind_set_mode_common(setting, type) == -1) return -1; index_offset = menu_setting_get_index_offset(setting); bind_port = settings->input.joypad_map[index_offset]; menu_input_key_bind_poll_bind_get_rested_axes(&menu_input->binds, bind_port); menu_input_key_bind_poll_bind_state(&menu_input->binds, bind_port, false); menu_input->binds.timeout_end = retro_get_time_usec() + MENU_KEYBOARD_BIND_TIMEOUT_SECONDS * 1000000; input_keyboard_wait_keys(menu, menu_input_key_bind_custom_bind_keyboard_cb); return 0; }
bool menu_input_key_bind_set_mode( enum menu_input_binds_ctl_state state, void *data) { unsigned index_offset; input_keyboard_ctx_wait_t keys; menu_handle_t *menu = NULL; rarch_setting_t *setting = (rarch_setting_t*)data; settings_t *settings = config_get_ptr(); if (!setting) return false; if (!menu_driver_ctl(RARCH_MENU_CTL_DRIVER_DATA_GET, &menu)) return false; if (menu_input_key_bind_set_mode_common(state, setting) == -1) return false; index_offset = setting->index_offset; menu_bind_port = settings->uints.input_joypad_map[index_offset]; menu_input_key_bind_poll_bind_get_rested_axes( &menu_input_binds, menu_bind_port); menu_input_key_bind_poll_bind_state( &menu_input_binds, menu_bind_port, false); rarch_timer_begin_new_time(&menu_input_binds.timer, settings->uints.input_bind_timeout); keys.userdata = menu; keys.cb = menu_input_key_bind_custom_bind_keyboard_cb; input_keyboard_ctl(RARCH_INPUT_KEYBOARD_CTL_START_WAIT_KEYS, &keys); return true; }
static bool menu_input_key_bind_set_mode( enum menu_input_ctl_state state, void *data) { unsigned index_offset; input_keyboard_ctx_wait_t keys; menu_handle_t *menu = NULL; menu_input_t *menu_input = menu_input_get_ptr(); rarch_setting_t *setting = (rarch_setting_t*)data; settings_t *settings = config_get_ptr(); if (!setting) return false; if (!menu_driver_ctl(RARCH_MENU_CTL_DRIVER_DATA_GET, &menu)) return false; if (menu_input_key_bind_set_mode_common(state, setting) == -1) return false; index_offset = menu_setting_get_index_offset(setting); bind_port = settings->input.joypad_map[index_offset]; menu_input_key_bind_poll_bind_get_rested_axes( &menu_input->binds, bind_port); menu_input_key_bind_poll_bind_state( &menu_input->binds, bind_port, false); menu_input->binds.timeout_end = cpu_features_get_time_usec() + MENU_KEYBOARD_BIND_TIMEOUT_SECONDS * 1000000; keys.userdata = menu; keys.cb = menu_input_key_bind_custom_bind_keyboard_cb; input_keyboard_ctl(RARCH_INPUT_KEYBOARD_CTL_START_WAIT_KEYS, &keys); return true; }
int menu_input_key_bind_set_mode(void *data, enum menu_input_bind_mode type) { menu_handle_t *menu = menu_driver_get_ptr(); menu_input_t *menu_input = menu_input_get_ptr(); rarch_setting_t *setting = (rarch_setting_t*)data; settings_t *settings = config_get_ptr(); bool joypad_pressed = BIT64_GET(menu_input->devices_mask, settings->menu_ok_btn); if (!setting) return -1; if (menu_input_key_bind_set_mode_common(setting, type) == -1) return -1; switch (settings->input.bind_mode) { case 0: break; case 1: joypad_pressed = false; break; case 2: joypad_pressed = true; break; } if (joypad_pressed) { unsigned index_offset = menu_setting_get_index_offset(setting); bind_port = settings->input.joypad_map[index_offset]; menu_input_key_bind_poll_bind_get_rested_axes(&menu_input->binds, bind_port); menu_input_key_bind_poll_bind_state(&menu_input->binds, bind_port, false); menu_input_key_bind_set_timeout(); menu_input->bind_mode_keyboard = false; return 0; } menu_input->bind_mode_keyboard = true; menu_input_key_bind_set_timeout(); input_keyboard_wait_keys(menu, menu_input_key_bind_custom_bind_keyboard_cb); return 0; }