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, pressed_plus = 0; input_conv_analog_id_to_bind_id(idx, id, &id_minus, &id_plus); if (udev_input_is_pressed(binds, id_minus)) pressed_minus = -0x7fff; if (udev_input_is_pressed(binds, id_plus)) pressed_plus = 0x7fff; return pressed_plus + pressed_minus; }
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_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(binds[port], id) || input_joypad_pressed(udev->joypad, port, binds[port], id); case RETRO_DEVICE_ANALOG: ret = udev_analog_pressed(binds[port], idx, id); if (!ret) ret = input_joypad_analog(udev->joypad, port, idx, id, binds[port]); return ret; case RETRO_DEVICE_KEYBOARD: return udev_input_state_kb(data, binds, port, device, idx, id); case RETRO_DEVICE_MOUSE: return udev_mouse_state(udev, id); case RETRO_DEVICE_POINTER: case RARCH_DEVICE_POINTER_SCREEN: return udev_pointer_state(udev, idx, id, device == RARCH_DEVICE_POINTER_SCREEN); case RETRO_DEVICE_LIGHTGUN: return udev_lightgun_state(udev, id); } return 0; }
static bool udev_input_key_pressed(void *data, int key) { udev_input_t *udev = (udev_input_t*)data; settings_t *settings = config_get_ptr(); return udev_input_is_pressed(udev, settings->input.binds[0], key) || input_joypad_pressed(udev->joypad, 0, settings->input.binds[0], key); }
static bool udev_input_key_pressed(void *data, int key) { udev_input_t *udev = (udev_input_t*)data; settings_t *settings = config_get_ptr(); if (udev_input_is_pressed(settings->input.binds[0], key)) return true; if (input_joypad_pressed(udev->joypad, 0, settings->input.binds[0], key)) return true; return false; }
static bool udev_input_key_pressed(void *data, int key, enum input_device_type *device) { udev_input_t *udev = (udev_input_t*)data; settings_t *settings = config_get_ptr(); if (udev_input_is_pressed(udev, settings->input.binds[0], key)) { *device = INPUT_DEVICE_TYPE_KEYBOARD; return true; } if (input_joypad_pressed(udev->joypad, 0, settings->input.binds[0], key)) { *device = INPUT_DEVICE_TYPE_JOYPAD; return true; } return false; }
static bool udev_input_key_pressed(void *data, int key) { udev_input_t *udev = (udev_input_t*)data; settings_t *settings = config_get_ptr(); int port = 0; if (udev_input_is_pressed(settings->input.binds[0], key)) return true; if (settings->input.all_users_control_menu) { for (port = 0; port < MAX_USERS; port++) if (input_joypad_pressed(udev->joypad, port, settings->input.binds[0], key)) return true; } else if (input_joypad_pressed(udev->joypad, 0, settings->input.binds[0], key)) return true; return false; }
static bool udev_input_bind_button_pressed(void *data, int key) { udev_input_t *udev = (udev_input_t*)data; return udev_input_is_pressed(udev, g_settings.input.binds[0], key) || input_joypad_pressed(udev->joypad, 0, g_settings.input.binds[0], key); }