redefinir tecles
This commit is contained in:
@@ -74,10 +74,10 @@ namespace Gamepad {
|
||||
pad_ = nullptr;
|
||||
pad_id_ = 0;
|
||||
// Neteja qualsevol tecla virtual que poguera estar premuda
|
||||
JI_SetVirtualKey(SDL_SCANCODE_UP, false);
|
||||
JI_SetVirtualKey(SDL_SCANCODE_DOWN, false);
|
||||
JI_SetVirtualKey(SDL_SCANCODE_LEFT, false);
|
||||
JI_SetVirtualKey(SDL_SCANCODE_RIGHT, false);
|
||||
JI_SetVirtualKey(SDL_SCANCODE_UP, JI_VSRC_GAMEPAD, false);
|
||||
JI_SetVirtualKey(SDL_SCANCODE_DOWN, JI_VSRC_GAMEPAD, false);
|
||||
JI_SetVirtualKey(SDL_SCANCODE_LEFT, JI_VSRC_GAMEPAD, false);
|
||||
JI_SetVirtualKey(SDL_SCANCODE_RIGHT, JI_VSRC_GAMEPAD, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -140,16 +140,16 @@ namespace Gamepad {
|
||||
if (b && !prev_b_) pushKey(SDL_SCANCODE_BACKSPACE);
|
||||
|
||||
// Assegura que el joc no rep tecles de moviment mentre el menú està obert
|
||||
JI_SetVirtualKey(SDL_SCANCODE_UP, false);
|
||||
JI_SetVirtualKey(SDL_SCANCODE_DOWN, false);
|
||||
JI_SetVirtualKey(SDL_SCANCODE_LEFT, false);
|
||||
JI_SetVirtualKey(SDL_SCANCODE_RIGHT, false);
|
||||
JI_SetVirtualKey(SDL_SCANCODE_UP, JI_VSRC_GAMEPAD, false);
|
||||
JI_SetVirtualKey(SDL_SCANCODE_DOWN, JI_VSRC_GAMEPAD, false);
|
||||
JI_SetVirtualKey(SDL_SCANCODE_LEFT, JI_VSRC_GAMEPAD, false);
|
||||
JI_SetVirtualKey(SDL_SCANCODE_RIGHT, JI_VSRC_GAMEPAD, false);
|
||||
} else {
|
||||
// Moviment al joc — level-triggered (polling)
|
||||
JI_SetVirtualKey(SDL_SCANCODE_UP, up);
|
||||
JI_SetVirtualKey(SDL_SCANCODE_DOWN, dn);
|
||||
JI_SetVirtualKey(SDL_SCANCODE_LEFT, lt);
|
||||
JI_SetVirtualKey(SDL_SCANCODE_RIGHT, rt);
|
||||
JI_SetVirtualKey(SDL_SCANCODE_UP, JI_VSRC_GAMEPAD, up);
|
||||
JI_SetVirtualKey(SDL_SCANCODE_DOWN, JI_VSRC_GAMEPAD, dn);
|
||||
JI_SetVirtualKey(SDL_SCANCODE_LEFT, JI_VSRC_GAMEPAD, lt);
|
||||
JI_SetVirtualKey(SDL_SCANCODE_RIGHT, JI_VSRC_GAMEPAD, rt);
|
||||
// Botó A al joc: emet Enter per avançar seqüències (JI_AnyKey)
|
||||
if (a && !prev_a_) pushKey(SDL_SCANCODE_RETURN);
|
||||
}
|
||||
|
||||
27
source/core/input/key_remap.cpp
Normal file
27
source/core/input/key_remap.cpp
Normal file
@@ -0,0 +1,27 @@
|
||||
#include "core/input/key_remap.hpp"
|
||||
|
||||
#include <SDL3/SDL.h>
|
||||
|
||||
#include "core/jail/jinput.hpp"
|
||||
#include "game/options.hpp"
|
||||
|
||||
namespace KeyRemap {
|
||||
|
||||
static void mirror(SDL_Scancode custom, SDL_Scancode standard, const bool* ks) {
|
||||
if (custom == standard || custom == SDL_SCANCODE_UNKNOWN) {
|
||||
JI_SetVirtualKey(standard, JI_VSRC_REMAP, false);
|
||||
return;
|
||||
}
|
||||
JI_SetVirtualKey(standard, JI_VSRC_REMAP, ks[custom]);
|
||||
}
|
||||
|
||||
void update() {
|
||||
const bool* ks = SDL_GetKeyboardState(nullptr);
|
||||
if (!ks) return;
|
||||
mirror(Options::keys_game.up, SDL_SCANCODE_UP, ks);
|
||||
mirror(Options::keys_game.down, SDL_SCANCODE_DOWN, ks);
|
||||
mirror(Options::keys_game.left, SDL_SCANCODE_LEFT, ks);
|
||||
mirror(Options::keys_game.right, SDL_SCANCODE_RIGHT, ks);
|
||||
}
|
||||
|
||||
} // namespace KeyRemap
|
||||
8
source/core/input/key_remap.hpp
Normal file
8
source/core/input/key_remap.hpp
Normal file
@@ -0,0 +1,8 @@
|
||||
#pragma once
|
||||
|
||||
// Remapeja tecles del joc: llig les tecles personalitzades de l'usuari
|
||||
// (Options::keys_game) i les reflecteix a les tecles estàndard virtuals
|
||||
// que el joc polla (SDL_SCANCODE_UP/DOWN/LEFT/RIGHT).
|
||||
namespace KeyRemap {
|
||||
void update(); // cridat cada frame des del Director
|
||||
}
|
||||
Reference in New Issue
Block a user