Example #1
0
/**
 * 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;
}
Example #2
0
/**
 * 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;
}
Example #3
0
/**
 * 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;
}