예제 #1
0
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;
}
예제 #2
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;
}
예제 #3
0
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;
}
예제 #4
0
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;
}