From 26d6c8243aabd098f0213f2d58761333a7cfbf5c Mon Sep 17 00:00:00 2001 From: sonninnos Date: Sat, 21 Aug 2021 22:01:12 +0300 Subject: [PATCH] (WINRAW) Add missing analog keybinds --- input/drivers/winraw_input.c | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/input/drivers/winraw_input.c b/input/drivers/winraw_input.c index 30a22fdfbd..0536189a83 100644 --- a/input/drivers/winraw_input.c +++ b/input/drivers/winraw_input.c @@ -771,6 +771,35 @@ static int16_t winraw_input_state( } break; case RETRO_DEVICE_ANALOG: + if (binds[port]) + { + int id_minus_key = 0; + int id_plus_key = 0; + unsigned id_minus = 0; + unsigned id_plus = 0; + int16_t ret = 0; + bool id_plus_valid = false; + bool id_minus_valid = false; + + input_conv_analog_id_to_bind_id(idx, id, id_minus, id_plus); + + id_minus_valid = binds[port][id_minus].valid; + id_plus_valid = binds[port][id_plus].valid; + id_minus_key = binds[port][id_minus].key; + id_plus_key = binds[port][id_plus].key; + + if (id_plus_valid && id_plus_key < RETROK_LAST) + { + if (WINRAW_KEYBOARD_PRESSED(wr, id_plus_key)) + ret = 0x7fff; + } + if (id_minus_valid && id_minus_key < RETROK_LAST) + { + if (WINRAW_KEYBOARD_PRESSED(wr, id_minus_key)) + ret += -0x7fff; + } + return ret; + } break; case RETRO_DEVICE_KEYBOARD: return (id < RETROK_LAST) && WINRAW_KEYBOARD_PRESSED(wr, id);