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; }
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; }
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; }
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; }
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; }
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; }
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; }
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; }
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]; }
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]; }
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; }
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]; }
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]; }
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); }
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); }