Compare commits
1 Commits
main
...
padrewrite
Author | SHA1 | Date |
---|---|---|
georgemoralis | 1d8c2456dd |
|
@ -511,6 +511,8 @@ set(VIDEO_CORE src/video_core/amdgpu/liverpool.cpp
|
||||||
|
|
||||||
set(INPUT src/input/controller.cpp
|
set(INPUT src/input/controller.cpp
|
||||||
src/input/controller.h
|
src/input/controller.h
|
||||||
|
src/input/devices/devices.h
|
||||||
|
src/input/devices/sdl_keyboard.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
set(EMULATOR src/emulator.cpp
|
set(EMULATOR src/emulator.cpp
|
||||||
|
|
|
@ -10,6 +10,7 @@ namespace Input {
|
||||||
GameController::GameController() {
|
GameController::GameController() {
|
||||||
m_states_num = 0;
|
m_states_num = 0;
|
||||||
m_last_state = State();
|
m_last_state = State();
|
||||||
|
m_device = std::make_unique<SDLKeyboard>();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GameController::ReadState(State* state, bool* isConnected, int* connectedCount) {
|
void GameController::ReadState(State* state, bool* isConnected, int* connectedCount) {
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
|
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
#include "common/types.h"
|
#include "common/types.h"
|
||||||
|
#include "devices/devices.h"
|
||||||
|
|
||||||
namespace Input {
|
namespace Input {
|
||||||
|
|
||||||
|
@ -57,6 +58,7 @@ private:
|
||||||
u32 m_first_state = 0;
|
u32 m_first_state = 0;
|
||||||
std::array<State, MAX_STATES> m_states;
|
std::array<State, MAX_STATES> m_states;
|
||||||
std::array<StateInternal, MAX_STATES> m_private;
|
std::array<StateInternal, MAX_STATES> m_private;
|
||||||
|
std::unique_ptr<InputDevices> m_device;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Input
|
} // namespace Input
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <unordered_map>
|
||||||
|
#include <common/types.h>
|
||||||
|
|
||||||
|
namespace Input {
|
||||||
|
|
||||||
|
struct InputMappings {
|
||||||
|
using Scancode = u32;
|
||||||
|
using Container = std::unordered_map<Scancode, u32>;
|
||||||
|
|
||||||
|
u32 getMapping(Scancode scancode) const {
|
||||||
|
auto it = container.find(scancode);
|
||||||
|
return it != container.end() ? it->second : -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setMapping(Scancode scancode, u32 key) {
|
||||||
|
container[scancode] = key;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
Container container;
|
||||||
|
};
|
||||||
|
|
||||||
|
class InputDevices {
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual ~InputDevices() = default;
|
||||||
|
virtual InputMappings GetMappings() = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class SDLKeyboard : public InputDevices {
|
||||||
|
public:
|
||||||
|
virtual ~SDLKeyboard();
|
||||||
|
virtual InputMappings GetMappings() override;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace Input
|
|
@ -0,0 +1,19 @@
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#include <SDL3/SDL_keycode.h>
|
||||||
|
#include "core/libraries/pad/pad.h"
|
||||||
|
#include "devices.h"
|
||||||
|
|
||||||
|
namespace Input {
|
||||||
|
|
||||||
|
SDLKeyboard::~SDLKeyboard() {}
|
||||||
|
|
||||||
|
InputMappings SDLKeyboard::GetMappings() {
|
||||||
|
using Libraries::Pad::OrbisPadButtonDataOffset;
|
||||||
|
InputMappings mappings;
|
||||||
|
mappings.setMapping(SDLK_UP, OrbisPadButtonDataOffset::ORBIS_PAD_BUTTON_UP);
|
||||||
|
// TODO the rest
|
||||||
|
return mappings;
|
||||||
|
}
|
||||||
|
} // namespace Input
|
Loading…
Reference in New Issue