diff --git a/input/input_common.h b/input/input_common.h new file mode 100644 index 0000000000..d1c8c1c631 --- /dev/null +++ b/input/input_common.h @@ -0,0 +1,49 @@ +/* RetroArch - A frontend for libretro. + * Copyright (C) 2010-2012 - Hans-Kristian Arntzen + * + * RetroArch is free software: you can redistribute it and/or modify it under the terms + * of the GNU General Public License as published by the Free Software Found- + * ation, either version 3 of the License, or (at your option) any later version. + * + * RetroArch is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; + * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with RetroArch. + * If not, see . + */ + +#ifndef INPUT_COMMON_H__ +#define INPUT_COMMON_H__ + +#include "../driver.h" + +static inline void input_conv_analog_id_to_bind_id(unsigned index, unsigned id, + unsigned *id_minus, unsigned *id_plus) +{ + switch ((index << 1) | id) + { + case (RETRO_DEVICE_INDEX_ANALOG_LEFT << 1) | RETRO_DEVICE_ID_ANALOG_X: + *id_minus = RARCH_ANALOG_LEFT_X_MINUS; + *id_plus = RARCH_ANALOG_LEFT_X_PLUS; + break; + + case (RETRO_DEVICE_INDEX_ANALOG_LEFT << 1) | RETRO_DEVICE_ID_ANALOG_Y: + *id_minus = RARCH_ANALOG_LEFT_Y_MINUS; + *id_plus = RARCH_ANALOG_LEFT_Y_PLUS; + break; + + case (RETRO_DEVICE_INDEX_ANALOG_RIGHT << 1) | RETRO_DEVICE_ID_ANALOG_X: + *id_minus = RARCH_ANALOG_RIGHT_X_MINUS; + *id_plus = RARCH_ANALOG_RIGHT_X_PLUS; + break; + + case (RETRO_DEVICE_INDEX_ANALOG_RIGHT << 1) | RETRO_DEVICE_ID_ANALOG_Y: + *id_minus = RARCH_ANALOG_RIGHT_Y_MINUS; + *id_plus = RARCH_ANALOG_RIGHT_Y_PLUS; + break; + } +} + +#endif + diff --git a/input/linuxraw_input.c b/input/linuxraw_input.c index 5054083442..92aab5937a 100644 --- a/input/linuxraw_input.c +++ b/input/linuxraw_input.c @@ -25,6 +25,7 @@ #include "../general.h" #include "linuxraw_input.h" #include "rarch_sdl_input.h" +#include "input_common.h" static long oldKbmd = 0xffff; static struct termios oldTerm, newTerm; @@ -256,33 +257,6 @@ static bool linuxraw_bind_button_pressed(void *data, int key) input_sdl.key_pressed(linuxraw->sdl, key); } -static void conv_analog_id_to_bind_id(unsigned index, unsigned id, - unsigned *id_minus, unsigned *id_plus) -{ - switch ((index << 1) | id) - { - case (RETRO_DEVICE_INDEX_ANALOG_LEFT << 1) | RETRO_DEVICE_ID_ANALOG_X: - *id_minus = RARCH_ANALOG_LEFT_X_MINUS; - *id_plus = RARCH_ANALOG_LEFT_X_PLUS; - break; - - case (RETRO_DEVICE_INDEX_ANALOG_LEFT << 1) | RETRO_DEVICE_ID_ANALOG_Y: - *id_minus = RARCH_ANALOG_LEFT_Y_MINUS; - *id_plus = RARCH_ANALOG_LEFT_Y_PLUS; - break; - - case (RETRO_DEVICE_INDEX_ANALOG_RIGHT << 1) | RETRO_DEVICE_ID_ANALOG_X: - *id_minus = RARCH_ANALOG_RIGHT_X_MINUS; - *id_plus = RARCH_ANALOG_RIGHT_X_PLUS; - break; - - case (RETRO_DEVICE_INDEX_ANALOG_RIGHT << 1) | RETRO_DEVICE_ID_ANALOG_Y: - *id_minus = RARCH_ANALOG_RIGHT_Y_MINUS; - *id_plus = RARCH_ANALOG_RIGHT_Y_PLUS; - break; - } -} - static int16_t raw_analog_state(linuxraw_input_t *linuxraw, const struct retro_keybind **binds_, unsigned port, unsigned index, unsigned id) { @@ -293,7 +267,7 @@ static int16_t raw_analog_state(linuxraw_input_t *linuxraw, const struct retro_k unsigned id_minus = 0; unsigned id_plus = 0; - conv_analog_id_to_bind_id(index, id, &id_minus, &id_plus); + input_conv_analog_id_to_bind_id(index, id, &id_minus, &id_plus); const struct retro_keybind *bind_minus = &binds[id_minus]; const struct retro_keybind *bind_plus = &binds[id_plus]; diff --git a/input/sdl_input.c b/input/sdl_input.c index 468af8b226..64f02875ca 100644 --- a/input/sdl_input.c +++ b/input/sdl_input.c @@ -22,6 +22,7 @@ #include #include "../libretro.h" #include "rarch_sdl_input.h" +#include "input_common.h" struct key_bind { @@ -309,33 +310,6 @@ static int16_t sdl_joypad_device_state(sdl_input_t *sdl, const struct retro_keyb return 0; } -static void conv_analog_id_to_bind_id(unsigned index, unsigned id, - unsigned *id_minus, unsigned *id_plus) -{ - switch ((index << 1) | id) - { - case (RETRO_DEVICE_INDEX_ANALOG_LEFT << 1) | RETRO_DEVICE_ID_ANALOG_X: - *id_minus = RARCH_ANALOG_LEFT_X_MINUS; - *id_plus = RARCH_ANALOG_LEFT_X_PLUS; - break; - - case (RETRO_DEVICE_INDEX_ANALOG_LEFT << 1) | RETRO_DEVICE_ID_ANALOG_Y: - *id_minus = RARCH_ANALOG_LEFT_Y_MINUS; - *id_plus = RARCH_ANALOG_LEFT_Y_PLUS; - break; - - case (RETRO_DEVICE_INDEX_ANALOG_RIGHT << 1) | RETRO_DEVICE_ID_ANALOG_X: - *id_minus = RARCH_ANALOG_RIGHT_X_MINUS; - *id_plus = RARCH_ANALOG_RIGHT_X_PLUS; - break; - - case (RETRO_DEVICE_INDEX_ANALOG_RIGHT << 1) | RETRO_DEVICE_ID_ANALOG_Y: - *id_minus = RARCH_ANALOG_RIGHT_Y_MINUS; - *id_plus = RARCH_ANALOG_RIGHT_Y_PLUS; - break; - } -} - static int16_t sdl_analog_device_state(sdl_input_t *sdl, const struct retro_keybind **binds_, unsigned port_num, unsigned index, unsigned id) { @@ -345,7 +319,7 @@ static int16_t sdl_analog_device_state(sdl_input_t *sdl, const struct retro_keyb unsigned id_minus = 0; unsigned id_plus = 0; - conv_analog_id_to_bind_id(index, id, &id_minus, &id_plus); + input_conv_analog_id_to_bind_id(index, id, &id_minus, &id_plus); const struct retro_keybind *bind_minus = &binds[id_minus]; const struct retro_keybind *bind_plus = &binds[id_plus]; diff --git a/input/x11_input.c b/input/x11_input.c index 08b0bcffe1..bf795fb1d9 100644 --- a/input/x11_input.c +++ b/input/x11_input.c @@ -14,6 +14,7 @@ */ #include "x11_input.h" +#include "input_common.h" struct key_bind { @@ -182,33 +183,6 @@ static bool x_bind_button_pressed(void *data, int key) input_sdl.key_pressed(x11->sdl, key); } -static void conv_analog_id_to_bind_id(unsigned index, unsigned id, - unsigned *id_minus, unsigned *id_plus) -{ - switch ((index << 1) | id) - { - case (RETRO_DEVICE_INDEX_ANALOG_LEFT << 1) | RETRO_DEVICE_ID_ANALOG_X: - *id_minus = RARCH_ANALOG_LEFT_X_MINUS; - *id_plus = RARCH_ANALOG_LEFT_X_PLUS; - break; - - case (RETRO_DEVICE_INDEX_ANALOG_LEFT << 1) | RETRO_DEVICE_ID_ANALOG_Y: - *id_minus = RARCH_ANALOG_LEFT_Y_MINUS; - *id_plus = RARCH_ANALOG_LEFT_Y_PLUS; - break; - - case (RETRO_DEVICE_INDEX_ANALOG_RIGHT << 1) | RETRO_DEVICE_ID_ANALOG_X: - *id_minus = RARCH_ANALOG_RIGHT_X_MINUS; - *id_plus = RARCH_ANALOG_RIGHT_X_PLUS; - break; - - case (RETRO_DEVICE_INDEX_ANALOG_RIGHT << 1) | RETRO_DEVICE_ID_ANALOG_Y: - *id_minus = RARCH_ANALOG_RIGHT_Y_MINUS; - *id_plus = RARCH_ANALOG_RIGHT_Y_PLUS; - break; - } -} - static int16_t x_analog_state(x11_input_t *x11, const struct retro_keybind **binds_, unsigned port, unsigned index, unsigned id) { @@ -219,7 +193,7 @@ static int16_t x_analog_state(x11_input_t *x11, const struct retro_keybind **bin unsigned id_minus = 0; unsigned id_plus = 0; - conv_analog_id_to_bind_id(index, id, &id_minus, &id_plus); + input_conv_analog_id_to_bind_id(index, id, &id_minus, &id_plus); const struct retro_keybind *bind_minus = &binds[id_minus]; const struct retro_keybind *bind_plus = &binds[id_plus];