From 5d8d9079236d022e7f0db795aa18616856d24451 Mon Sep 17 00:00:00 2001 From: notaz Date: Sun, 18 May 2025 01:59:20 +0300 Subject: [PATCH] in_sdl: clean keyboard keys from gamepad --- in_sdl.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/in_sdl.c b/in_sdl.c index 69be4cb..8c3f08a 100644 --- a/in_sdl.c +++ b/in_sdl.c @@ -658,19 +658,24 @@ static int in_sdl_menu_translate(void *drv_data, int keycode, char *charcode) return ret; } -static int in_sdl_clean_binds(void *drv_data, int *binds, int *def_finds) +static int in_sdl_clean_binds(void *drv_data, int *binds, int *def_binds) { struct in_sdl_state *state = drv_data; int i, t, cnt = 0; memset(state->emu_keys, 0, sizeof(state->emu_keys)); - for (t = 0; t < IN_BINDTYPE_COUNT; t++) - for (i = 0; i < SDLK_LAST; i++) - if (binds[IN_BIND_OFFS(i, t)]) { + for (t = 0; t < IN_BINDTYPE_COUNT; t++) { + for (i = 0; i < SDLK_LAST; i++) { + int offs = IN_BIND_OFFS(i, t); + if (state->joy && i < SDLK_WORLD_0) + binds[offs] = def_binds[offs] = 0; + if (binds[offs]) { if (t == IN_BINDTYPE_EMU) update_keystate(state->emu_keys, i, 1); cnt ++; } + } + } return cnt; } -- 2.39.5