mirror of
https://github.com/0ldsk00l/nestopia.git
synced 2025-04-02 10:31:51 -04:00
119 lines
2.6 KiB
C++
119 lines
2.6 KiB
C++
/*
|
|
NEStopia / Linux
|
|
David B. Robins (nestopia@davidrobins.net)
|
|
R. Belmont
|
|
|
|
kentry.cpp - key code mapping
|
|
*/
|
|
|
|
#include "kentry.h"
|
|
#include "input.h"
|
|
#include "core/api/NstApiInput.hpp"
|
|
|
|
const KEntry keycodes[] =
|
|
{
|
|
{ "ENTER", SDLK_RETURN },
|
|
{ "LCTRL", SDLK_LCTRL },
|
|
{ "RCTRL", SDLK_RCTRL },
|
|
{ "LALT", SDLK_LALT },
|
|
{ "RALT", SDLK_RALT },
|
|
{ "SPACE", SDLK_SPACE },
|
|
{ "LSHIFT", SDLK_LSHIFT },
|
|
{ "RSHIFT", SDLK_RSHIFT },
|
|
{ "TAB", SDLK_TAB },
|
|
{ "UP", SDLK_UP },
|
|
{ "DOWN", SDLK_DOWN },
|
|
{ "LEFT", SDLK_LEFT },
|
|
{ "RIGHT", SDLK_RIGHT },
|
|
{ "KPENTER", SDLK_KP_ENTER },
|
|
{ "KP0", SDLK_KP0 },
|
|
{ "KP1", SDLK_KP1 },
|
|
{ "KP2", SDLK_KP2 },
|
|
{ "KP3", SDLK_KP3 },
|
|
{ "KP4", SDLK_KP4 },
|
|
{ "KP5", SDLK_KP5 },
|
|
{ "KP6", SDLK_KP6 },
|
|
{ "KP7", SDLK_KP7 },
|
|
{ "KP8", SDLK_KP8 },
|
|
{ "KP9", SDLK_KP9 },
|
|
{ "KPDOT", SDLK_KP_PERIOD },
|
|
{ "KPSLASH", SDLK_KP_DIVIDE },
|
|
{ "KPSTAR", SDLK_KP_MULTIPLY },
|
|
{ "KPMINUS", SDLK_KP_MINUS },
|
|
{ "KPPLUS", SDLK_KP_PLUS },
|
|
{ "ESCAPE", SDLK_ESCAPE },
|
|
{ "BACKSPACE", SDLK_BACKSPACE },
|
|
{ "F1", SDLK_F1 },
|
|
{ "F2", SDLK_F2 },
|
|
{ "F3", SDLK_F3 },
|
|
{ "F4", SDLK_F4 },
|
|
{ "F5", SDLK_F5 },
|
|
{ "F6", SDLK_F6 },
|
|
{ "F7", SDLK_F7 },
|
|
{ "F8", SDLK_F8 },
|
|
{ "F9", SDLK_F9 },
|
|
{ "F10", SDLK_F10 },
|
|
{ "F11", SDLK_F11 },
|
|
{ "F12", SDLK_F12 },
|
|
{ NULL, -1 }
|
|
};
|
|
|
|
|
|
#define DEFINE_META(x) { #x, x }
|
|
const KEntry metacodes[] =
|
|
{
|
|
DEFINE_META(RESET), // 0
|
|
DEFINE_META(QSAVE1), // 1
|
|
DEFINE_META(QLOAD1), // 2
|
|
DEFINE_META(QSAVE2), // 3
|
|
DEFINE_META(QLOAD2), // 4
|
|
DEFINE_META(SAVE), // 5
|
|
DEFINE_META(LOAD), // 6
|
|
DEFINE_META(MSAVE), // 7
|
|
DEFINE_META(MLOAD), // 8
|
|
DEFINE_META(MSTOP), // 9
|
|
DEFINE_META(FLIP), // 10
|
|
DEFINE_META(FSCREEN), // 11
|
|
DEFINE_META(RBACK), // 12
|
|
DEFINE_META(RFORE), // 13
|
|
DEFINE_META(STOP), // 14
|
|
DEFINE_META(EXIT), // 15
|
|
DEFINE_META(COIN1), // 16
|
|
DEFINE_META(COIN2), // 17
|
|
{ NULL, -1 }
|
|
};
|
|
#undef DEFINE_META
|
|
|
|
|
|
#define DEFINE_CONTROL(string, code) { #string, Nes::Api::Input::Controllers::Pad::code }
|
|
const KEntry controlcodes[] =
|
|
{
|
|
DEFINE_CONTROL(UP, UP),
|
|
DEFINE_CONTROL(DN, DOWN),
|
|
DEFINE_CONTROL(LT, LEFT),
|
|
DEFINE_CONTROL(RT, RIGHT),
|
|
DEFINE_CONTROL(A, A),
|
|
DEFINE_CONTROL(B, B),
|
|
DEFINE_CONTROL(START, START),
|
|
DEFINE_CONTROL(SELECT, SELECT),
|
|
{ NULL, -1 }
|
|
};
|
|
#undef DEFINE_CONTROL
|
|
|
|
|
|
// try to match str in kentry; returns -1 on failure
|
|
int kentry_find_str(const KEntry *kentry, const char *str)
|
|
{
|
|
for (; kentry->code != -1 && strcmp(str, kentry->string); ++kentry);
|
|
return kentry->code;
|
|
}
|
|
|
|
|
|
// try to match code in kentry; returns null on failure
|
|
const char *kentry_find_code(const KEntry *kentry, int code)
|
|
{
|
|
for (; kentry->code != -1 && kentry->code != code; ++kentry);
|
|
return kentry->string;
|
|
}
|
|
|
|
|