(udev input) Cut down on code duplication

This commit is contained in:
twinaphex 2021-04-11 06:37:49 +02:00
parent 1f506615d3
commit 05a2623875
1 changed files with 47 additions and 92 deletions

View File

@ -965,33 +965,38 @@ static int16_t udev_pointer_state(udev_input_t *udev,
return 0; return 0;
} }
static int16_t udev_input_lightgun_state( static unsigned udev_retro_id_to_rarch(unsigned id)
udev_input_t *udev,
const input_device_driver_t *joypad,
rarch_joypad_info_t *joypad_info,
const struct retro_keybind **binds,
bool keyboard_mapping_blocked,
unsigned port,
unsigned device,
unsigned idx,
unsigned id)
{ {
if (!keyboard_mapping_blocked) switch (id)
if ((binds[port][id].key < RETROK_LAST)
&& udev_keyboard_pressed(udev, binds[port]
[id].key) )
return 1;
if (binds[port][id].valid)
{ {
unsigned new_id = id; case RETRO_DEVICE_ID_LIGHTGUN_DPAD_RIGHT:
if (button_is_pressed(joypad, return RARCH_LIGHTGUN_DPAD_RIGHT;
joypad_info, binds[port], case RETRO_DEVICE_ID_LIGHTGUN_DPAD_LEFT:
new_id) return RARCH_LIGHTGUN_DPAD_LEFT;
|| udev_mouse_button_pressed(udev, port, case RETRO_DEVICE_ID_LIGHTGUN_DPAD_UP:
binds[port][new_id].mbutton) return RARCH_LIGHTGUN_DPAD_UP;
) case RETRO_DEVICE_ID_LIGHTGUN_DPAD_DOWN:
return 1; return RARCH_LIGHTGUN_DPAD_DOWN;
case RETRO_DEVICE_ID_LIGHTGUN_SELECT:
return RARCH_LIGHTGUN_SELECT;
case RETRO_DEVICE_ID_LIGHTGUN_PAUSE:
return RARCH_LIGHTGUN_START;
case RETRO_DEVICE_ID_LIGHTGUN_RELOAD:
return RARCH_LIGHTGUN_RELOAD;
case RETRO_DEVICE_ID_LIGHTGUN_TRIGGER:
return RARCH_LIGHTGUN_TRIGGER;
case RETRO_DEVICE_ID_LIGHTGUN_AUX_A:
return RARCH_LIGHTGUN_AUX_A;
case RETRO_DEVICE_ID_LIGHTGUN_AUX_B:
return RARCH_LIGHTGUN_AUX_B;
case RETRO_DEVICE_ID_LIGHTGUN_AUX_C:
return RARCH_LIGHTGUN_AUX_C;
case RETRO_DEVICE_ID_LIGHTGUN_START:
return RARCH_LIGHTGUN_START;
default:
break;
} }
return 0; return 0;
} }
@ -1118,71 +1123,34 @@ static int16_t udev_input_state(
/*buttons*/ /*buttons*/
case RETRO_DEVICE_ID_LIGHTGUN_TRIGGER: case RETRO_DEVICE_ID_LIGHTGUN_TRIGGER:
return udev_input_lightgun_state(udev, joypad,
joypad_info,
binds,
keyboard_mapping_blocked,
port, device, idx, RARCH_LIGHTGUN_TRIGGER);
case RETRO_DEVICE_ID_LIGHTGUN_RELOAD: case RETRO_DEVICE_ID_LIGHTGUN_RELOAD:
return udev_input_lightgun_state(udev, joypad,
joypad_info,
binds,
keyboard_mapping_blocked,
port, device, idx, RARCH_LIGHTGUN_RELOAD);
case RETRO_DEVICE_ID_LIGHTGUN_AUX_A: case RETRO_DEVICE_ID_LIGHTGUN_AUX_A:
return udev_input_lightgun_state(udev, joypad,
joypad_info,
binds,
keyboard_mapping_blocked,
port, device, idx, RARCH_LIGHTGUN_AUX_A);
case RETRO_DEVICE_ID_LIGHTGUN_AUX_B: case RETRO_DEVICE_ID_LIGHTGUN_AUX_B:
return udev_input_lightgun_state(udev, joypad,
joypad_info,
binds,
keyboard_mapping_blocked,
port, device, idx, RARCH_LIGHTGUN_AUX_B);
case RETRO_DEVICE_ID_LIGHTGUN_AUX_C: case RETRO_DEVICE_ID_LIGHTGUN_AUX_C:
return udev_input_lightgun_state(udev, joypad,
joypad_info,
binds,
keyboard_mapping_blocked,
port, device, idx, RARCH_LIGHTGUN_AUX_C);
case RETRO_DEVICE_ID_LIGHTGUN_START: case RETRO_DEVICE_ID_LIGHTGUN_START:
return udev_input_lightgun_state(udev, joypad,
joypad_info,
binds,
keyboard_mapping_blocked,
port, device, idx, RARCH_LIGHTGUN_START);
case RETRO_DEVICE_ID_LIGHTGUN_SELECT: case RETRO_DEVICE_ID_LIGHTGUN_SELECT:
return udev_input_lightgun_state(udev, joypad,
joypad_info,
binds,
keyboard_mapping_blocked,
port, device, idx, RARCH_LIGHTGUN_SELECT);
case RETRO_DEVICE_ID_LIGHTGUN_DPAD_UP: case RETRO_DEVICE_ID_LIGHTGUN_DPAD_UP:
return udev_input_lightgun_state(udev, joypad,
joypad_info,
binds,
keyboard_mapping_blocked,
port, device, idx, RARCH_LIGHTGUN_DPAD_UP);
case RETRO_DEVICE_ID_LIGHTGUN_DPAD_DOWN: case RETRO_DEVICE_ID_LIGHTGUN_DPAD_DOWN:
return udev_input_lightgun_state(udev, joypad,
joypad_info,
binds,
keyboard_mapping_blocked,
port, device, idx, RARCH_LIGHTGUN_DPAD_DOWN);
case RETRO_DEVICE_ID_LIGHTGUN_DPAD_LEFT: case RETRO_DEVICE_ID_LIGHTGUN_DPAD_LEFT:
return udev_input_lightgun_state(udev, joypad,
joypad_info,
binds,
keyboard_mapping_blocked,
port, device, idx, RARCH_LIGHTGUN_DPAD_LEFT);
case RETRO_DEVICE_ID_LIGHTGUN_DPAD_RIGHT: case RETRO_DEVICE_ID_LIGHTGUN_DPAD_RIGHT:
return udev_input_lightgun_state(udev, joypad, case RETRO_DEVICE_ID_LIGHTGUN_PAUSE: /* deprecated */
joypad_info, id = udev_retro_id_to_rarch(id);
binds, if (!keyboard_mapping_blocked)
keyboard_mapping_blocked, if ((binds[port][id].key < RETROK_LAST)
port, device, idx, RARCH_LIGHTGUN_DPAD_RIGHT); && udev_keyboard_pressed(udev, binds[port]
[id].key))
return 1;
if (binds[port][id].valid)
{
unsigned new_id = id;
if (button_is_pressed(joypad,
joypad_info, binds[port],
new_id)
|| udev_mouse_button_pressed(udev, port,
binds[port][new_id].mbutton)
)
return 1;
}
/*deprecated*/ /*deprecated*/
case RETRO_DEVICE_ID_LIGHTGUN_X: case RETRO_DEVICE_ID_LIGHTGUN_X:
{ {
@ -1198,19 +1166,6 @@ static int16_t udev_input_state(
return udev_mouse_get_y(mouse); return udev_mouse_get_y(mouse);
} }
break; break;
case RETRO_DEVICE_ID_LIGHTGUN_PAUSE:
if (binds[port][RARCH_LIGHTGUN_START].valid)
{
unsigned new_id = RARCH_LIGHTGUN_START;
if (button_is_pressed(joypad,
joypad_info, binds[port],
new_id)
|| udev_mouse_button_pressed(udev, port,
binds[port][new_id].mbutton)
)
return 1;
}
break;
} }
break; break;
} }