Ejemplo n.º 1
0
static int16_t udev_input_state(void *data, const struct retro_keybind **binds,
      unsigned port, unsigned device, unsigned idx, unsigned id)
{
   int16_t ret;
   udev_input_t *udev = (udev_input_t*)data;

   switch (device)
   {
      case RETRO_DEVICE_JOYPAD:
         return udev_input_is_pressed(udev, binds[port], id) ||
            input_joypad_pressed(udev->joypad, port, binds[port], id);

      case RETRO_DEVICE_ANALOG:
         ret = udev_analog_pressed(udev, binds[port], idx, id);
         if (!ret)
            ret = input_joypad_analog(udev->joypad, port, idx, id, binds[port]);
         return ret;

      case RETRO_DEVICE_KEYBOARD:
         {
            unsigned bit = input_keymaps_translate_rk_to_keysym((enum retro_key)id);
            return id < RETROK_LAST && BIT_GET(udev->key_state, bit);
         }
      case RETRO_DEVICE_MOUSE:
         return udev_mouse_state(udev, id);

      case RETRO_DEVICE_LIGHTGUN:
         return udev_lightgun_state(udev, id);
   }

   return 0;
}
Ejemplo n.º 2
0
static int16_t udev_analog_pressed(const struct retro_keybind *binds, unsigned idx, unsigned id)
{
   unsigned id_minus     = 0;
   unsigned id_plus      = 0;
   int16_t pressed_minus = 0;
   int16_t pressed_plus  = 0;

   input_conv_analog_id_to_bind_id(idx, id, &id_minus, &id_plus);

   if (binds && binds[id_minus].valid && 
         BIT_GET(udev_key_state, input_keymaps_translate_rk_to_keysym(binds[id_minus].key)))
      pressed_minus = -0x7fff;
   if (binds && binds[id_plus].valid && 
      BIT_GET(udev_key_state, input_keymaps_translate_rk_to_keysym(binds[id_plus].key)))
      pressed_plus = 0x7fff;

   return pressed_plus + pressed_minus;
}
Ejemplo n.º 3
0
bool android_keyboard_port_input_pressed(const struct retro_keybind *binds, unsigned id)
{
   if (id < RARCH_BIND_LIST_END)
   {
      const struct retro_keybind *bind = &binds[id];
      unsigned bit = input_keymaps_translate_rk_to_keysym(binds[id].key);
      return bind->valid && BIT_GET(android_key_state[ANDROID_KEYBOARD_PORT], bit);
   }
   return false;
}
Ejemplo n.º 4
0
static bool udev_input_is_pressed(udev_input_t *udev, const struct retro_keybind *binds, unsigned id)
{
   if (id < RARCH_BIND_LIST_END)
   {
      const struct retro_keybind *bind = &binds[id];
      unsigned bit = input_keymaps_translate_rk_to_keysym(binds[id].key);
      return bind->valid && BIT_GET(udev->key_state, bit);
   }
   return false;
}
Ejemplo n.º 5
0
static bool dinput_keyboard_pressed(struct dinput_input *di, unsigned key)
{
   unsigned sym;

   if (key >= RETROK_LAST)
      return false;

   sym = input_keymaps_translate_rk_to_keysym((enum retro_key)key);
   return di->state[sym] & 0x80;
}
Ejemplo n.º 6
0
static int16_t udev_input_state(void *data,
      rarch_joypad_info_t joypad_info,
      const struct retro_keybind **binds,
      unsigned port, unsigned device, unsigned idx, unsigned id)
{
   int16_t ret;
   unsigned bit;
   udev_input_t *udev         = (udev_input_t*)data;

   if (!udev)
      return 0;

   switch (device)
   {
      case RETRO_DEVICE_JOYPAD:
         bit = input_keymaps_translate_rk_to_keysym(binds[port][id].key);
         if (BIT_GET(udev_key_state, bit))
            return true;
         return input_joypad_pressed(udev->joypad, joypad_info, port, binds[port], id);
      case RETRO_DEVICE_ANALOG:
         ret = udev_analog_pressed(binds[port], idx, id);
         if (!ret && binds[port])
            ret = input_joypad_analog(udev->joypad, joypad_info, port, idx, id, binds[port]);
         return ret;

      case RETRO_DEVICE_KEYBOARD:
         bit = input_keymaps_translate_rk_to_keysym((enum retro_key)id);
         return id < RETROK_LAST && BIT_GET(udev_key_state, bit);
      case RETRO_DEVICE_MOUSE:
         return udev_mouse_state(udev, id);

      case RETRO_DEVICE_POINTER:
      case RARCH_DEVICE_POINTER_SCREEN:
         if (idx == 0)
            return udev_pointer_state(udev, idx, id,
                  device == RARCH_DEVICE_POINTER_SCREEN);
         break;
      case RETRO_DEVICE_LIGHTGUN:
         return udev_lightgun_state(udev, id);
   }

   return 0;
}
Ejemplo n.º 7
0
int16_t apple_input_is_pressed(unsigned port_num,
   const struct retro_keybind *binds, unsigned id)
{
   if (id < RARCH_BIND_LIST_END)
   {
      const struct retro_keybind *bind = &binds[id];
      unsigned bit = input_keymaps_translate_rk_to_keysym(bind->key);
      return apple_key_state[bit];
   }
   return 0;
}
Ejemplo n.º 8
0
static int16_t cocoa_input_is_pressed(cocoa_input_data_t *apple, unsigned port_num,
   const struct retro_keybind *binds, unsigned id)
{
   if (id < RARCH_BIND_LIST_END)
   {
      const struct retro_keybind *bind = &binds[id];
      unsigned bit = input_keymaps_translate_rk_to_keysym(bind->key);
      return bind->valid && apple->key_state[bit];
   }
   return 0;
}
Ejemplo n.º 9
0
static bool sdl_key_pressed(int key)
{
   int num_keys;
   const uint8_t *keymap;
   unsigned sym;

   if (key >= RETROK_LAST)
      return false;

   sym = input_keymaps_translate_rk_to_keysym((enum retro_key)key);

#ifdef HAVE_SDL2
   sym = SDL_GetScancodeFromKey(sym);
   keymap = SDL_GetKeyboardState(&num_keys);
#else
   keymap = SDL_GetKeyState(&num_keys);
#endif
   if (sym >= (unsigned)num_keys)
      return false;

   return keymap[sym];
}
Ejemplo n.º 10
0
int16_t apple_keyboard_state(unsigned id)
{
   unsigned bit = input_keymaps_translate_rk_to_keysym((enum retro_key)id);
   return (id < RETROK_LAST) && apple_key_state[bit];
}
Ejemplo n.º 11
0
static bool handle_icade_event(unsigned *code, bool *keydown)
{
   settings_t *settings = config_get_ptr();
   static bool initialized = false;
   bool ret = false;
   unsigned kb_type_idx = settings->input.keyboard_gamepad_mapping_type;

   if (!initialized)
   {
      unsigned i;
      unsigned j = 0;

      for (j = 0; j < MAX_ICADE_PROFILES; j++)
      {
         for (i = 0; i < MAX_ICADE_KEYS; i++)
         {
            icade_maps[j][i].key = RETROK_UNKNOWN;
            icade_maps[j][i].up  = false;
         }
      }

      /* iPega PG-9017 */
      j = 1;

      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_a)].key = RETROK_LEFT;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_q)].key = RETROK_LEFT;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_c)].key = RETROK_RIGHT;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_d)].key = RETROK_RIGHT;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_e)].key = RETROK_UP;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_w)].key = RETROK_UP;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_x)].key = RETROK_DOWN;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_z)].key = RETROK_DOWN;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_f)].key = RETROK_z;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_u)].key = RETROK_z;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_i)].key = RETROK_q;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_m)].key = RETROK_q;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_j)].key = RETROK_a;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_n)].key = RETROK_a;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_k)].key = RETROK_w;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_p)].key = RETROK_w;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_h)].key = RETROK_x;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_r)].key = RETROK_x;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_y)].key = RETROK_s;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_t)].key = RETROK_s;

      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_e)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_z)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_q)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_c)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_f)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_m)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_t)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_n)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_p)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_r)].up  = true;

      /* 8-bitty */
      j = 2;

      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_a)].key = RETROK_LEFT;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_q)].key = RETROK_LEFT;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_c)].key = RETROK_RIGHT;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_d)].key = RETROK_RIGHT;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_e)].key = RETROK_UP;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_w)].key = RETROK_UP;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_x)].key = RETROK_DOWN;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_z)].key = RETROK_DOWN;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_h)].key = RETROK_q;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_r)].key = RETROK_q;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_j)].key = RETROK_w;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_n)].key = RETROK_w;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_i)].key = RETROK_a;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_m)].key = RETROK_a;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_k)].key = RETROK_z;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_p)].key = RETROK_z;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_y)].key = RETROK_RSHIFT;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_t)].key = RETROK_RSHIFT;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_u)].key = RETROK_RETURN;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_f)].key = RETROK_RETURN;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_l)].key = RETROK_x;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_v)].key = RETROK_x;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_o)].key = RETROK_s;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_g)].key = RETROK_s;

      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_e)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_z)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_q)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_c)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_r)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_n)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_m)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_p)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_t)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_f)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_v)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_g)].up  = true;

      /* SNES30 8bitDo */
      j = 3;

      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_e)].key = RETROK_UP;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_w)].key = RETROK_UP;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_x)].key = RETROK_DOWN;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_z)].key = RETROK_DOWN;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_a)].key = RETROK_LEFT;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_q)].key = RETROK_LEFT;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_c)].key = RETROK_RIGHT;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_d)].key = RETROK_RIGHT;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_u)].key = RETROK_x;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_f)].key = RETROK_x;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_h)].key = RETROK_z;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_r)].key = RETROK_z;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_y)].key = RETROK_a;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_t)].key = RETROK_a;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_j)].key = RETROK_s;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_n)].key = RETROK_s;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_k)].key = RETROK_q;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_p)].key = RETROK_q;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_i)].key = RETROK_w;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_m)].key = RETROK_w;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_l)].key = RETROK_RSHIFT;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_v)].key = RETROK_RSHIFT;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_o)].key = RETROK_RETURN;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_g)].key = RETROK_RETURN;

      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_v)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_g)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_e)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_z)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_q)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_c)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_r)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_f)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_n)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_t)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_p)].up  = true;
      icade_maps[j][input_keymaps_translate_rk_to_keysym(RETROK_m)].up  = true;

      initialized = true;
   }

   if ((*code < 0x20) && (icade_maps[kb_type_idx][*code].key != RETROK_UNKNOWN))
   {
      *keydown     = icade_maps[kb_type_idx][*code].up ? false : true;
      ret          = true;
      *code        = input_keymaps_translate_rk_to_keysym(icade_maps[kb_type_idx][*code].key);
   }

   return ret;
}
Ejemplo n.º 12
0
static bool linuxraw_key_pressed(linuxraw_input_t *linuxraw, int key)
{
   unsigned sym = input_keymaps_translate_rk_to_keysym((enum retro_key)key);
   return linuxraw->state[sym];
}
Ejemplo n.º 13
0
static int16_t cocoa_keyboard_state(cocoa_input_data_t *apple, unsigned id)
{
   unsigned bit = input_keymaps_translate_rk_to_keysym((enum retro_key)id);
   return (id < RETROK_LAST) && apple->key_state[bit];
}
Ejemplo n.º 14
0
bool udev_input_state_kb(void *data, const struct retro_keybind **binds,
      unsigned port, unsigned device, unsigned idx, unsigned id)
{
   unsigned bit = input_keymaps_translate_rk_to_keysym((enum retro_key)id);
   return id < RETROK_LAST && BIT_GET(udev_key_state, bit);
}
Ejemplo n.º 15
0
bool qnx_keyboard_pressed(qnx_input_t *qnx, unsigned id)
{
    unsigned bit = input_keymaps_translate_rk_to_keysym((enum retro_key)id);
    return id < RETROK_LAST && BIT_GET(qnx->keyboard_state, bit);
}