Files
dusk/src/duskpsp/input/inputpsp.c
T
2026-06-07 21:16:46 -05:00

97 lines
3.2 KiB
C

/**
* Copyright (c) 2026 Dominic Masters
*
* This software is released under the MIT License.
* https://opensource.org/licenses/MIT
*/
#include "input/input.h"
// #define INPUT_PSP_GAMEPAD_BUTTON_ACCEPT INPUT_SDL2_GAMEPAD_BUTTON_CUSTOM
// #define INPUT_PSP_GAMEPAD_BUTTON_CANCEL INPUT_SDL2_GAMEPAD_BUTTON_CUSTOM
inputbuttondata_t INPUT_BUTTON_DATA[] = {
{ .name = "triangle", {
.type = INPUT_BUTTON_TYPE_GAMEPAD,
.gpButton = SDL_CONTROLLER_BUTTON_Y } },
{ .name = "cross", {
.type = INPUT_BUTTON_TYPE_GAMEPAD,
.gpButton = SDL_CONTROLLER_BUTTON_A } },
{ .name = "circle", {
.type = INPUT_BUTTON_TYPE_GAMEPAD,
.gpButton = SDL_CONTROLLER_BUTTON_B } },
{ .name = "square", {
.type = INPUT_BUTTON_TYPE_GAMEPAD,
.gpButton = SDL_CONTROLLER_BUTTON_X } },
{ .name = "start", {
.type = INPUT_BUTTON_TYPE_GAMEPAD,
.gpButton = SDL_CONTROLLER_BUTTON_START } },
{ .name = "select", {
.type = INPUT_BUTTON_TYPE_GAMEPAD,
.gpButton = SDL_CONTROLLER_BUTTON_BACK } },
{ .name = "up", {
.type = INPUT_BUTTON_TYPE_GAMEPAD,
.gpButton = SDL_CONTROLLER_BUTTON_DPAD_UP } },
{ .name = "down", {
.type = INPUT_BUTTON_TYPE_GAMEPAD,
.gpButton = SDL_CONTROLLER_BUTTON_DPAD_DOWN } },
{ .name = "left", {
.type = INPUT_BUTTON_TYPE_GAMEPAD,
.gpButton = SDL_CONTROLLER_BUTTON_DPAD_LEFT } },
{ .name = "right", {
.type = INPUT_BUTTON_TYPE_GAMEPAD,
.gpButton = SDL_CONTROLLER_BUTTON_DPAD_RIGHT } },
{ .name = "l", {
.type = INPUT_BUTTON_TYPE_GAMEPAD,
.gpButton = SDL_CONTROLLER_BUTTON_LEFTSHOULDER } },
{ .name = "r", {
.type = INPUT_BUTTON_TYPE_GAMEPAD,
.gpButton = SDL_CONTROLLER_BUTTON_RIGHTSHOULDER } },
// Refer to systempsp.c for some extra info.
{ .name = "accept", {
.type = INPUT_BUTTON_TYPE_GAMEPAD,
.gpButton = SDL_CONTROLLER_BUTTON_A } },
{ .name = "cancel", {
.type = INPUT_BUTTON_TYPE_GAMEPAD,
.gpButton = SDL_CONTROLLER_BUTTON_B } },
{ .name = "lstick_down", {
.type = INPUT_BUTTON_TYPE_GAMEPAD_AXIS,
.gpAxis = { .axis = SDL_CONTROLLER_AXIS_LEFTY, .positive = true } } },
{ .name = "lstick_up", {
.type = INPUT_BUTTON_TYPE_GAMEPAD_AXIS,
.gpAxis = { .axis = SDL_CONTROLLER_AXIS_LEFTY, .positive = false } } },
{ .name = "lstick_right", {
.type = INPUT_BUTTON_TYPE_GAMEPAD_AXIS,
.gpAxis = { .axis = SDL_CONTROLLER_AXIS_LEFTX, .positive = true } } },
{ .name = "lstick_left", {
.type = INPUT_BUTTON_TYPE_GAMEPAD_AXIS,
.gpAxis = { .axis = SDL_CONTROLLER_AXIS_LEFTX, .positive = false } } },
{ .name = NULL }
};
errorret_t inputInitPSP(void) {
#define X(buttonName, buttonAction) \
inputBind(inputButtonGetByName(buttonName), buttonAction);
X("up", INPUT_ACTION_UP);
X("down", INPUT_ACTION_DOWN);
X("left", INPUT_ACTION_LEFT);
X("right", INPUT_ACTION_RIGHT);
X("accept", INPUT_ACTION_ACCEPT);
X("cancel", INPUT_ACTION_CANCEL);
X("triangle", INPUT_ACTION_CONSOLE);
X("select", INPUT_ACTION_RAGEQUIT);
X("lstick_up", INPUT_ACTION_UP);
X("lstick_down", INPUT_ACTION_DOWN);
X("lstick_left", INPUT_ACTION_LEFT);
X("lstick_right", INPUT_ACTION_RIGHT);
#undef X
errorOk();
}
float_t inputGetDeadzoneSDL2(const inputbutton_t button) {
return 0.2f;
}