mirror of
https://github.com/esuo1198/TaikoArcadeLoader.git
synced 2026-09-28 09:47:58 +03:00
306 lines
7.4 KiB
C
306 lines
7.4 KiB
C
#pragma once
|
|
#include "poll.h"
|
|
|
|
struct KeyCodePair {
|
|
const char *string;
|
|
u8 keycode;
|
|
};
|
|
size_t ConfigKeyboardButtonsCount = 0;
|
|
KeyCodePair *ConfigKeyboardButtons = nullptr;
|
|
KeyCodePair ConfigKeyboardButtons_US[] = {
|
|
// Reference:https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
|
|
// Wayback Machine:https://web.archive.org/web/20231223135232/https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
|
|
// Row 1
|
|
{"ESCAPE", VK_ESCAPE},
|
|
{"F1", VK_F1},
|
|
{"F2", VK_F2},
|
|
{"F3", VK_F3},
|
|
{"F4", VK_F4},
|
|
{"F5", VK_F5},
|
|
{"F6", VK_F6},
|
|
{"F7", VK_F7},
|
|
{"F8", VK_F8},
|
|
{"F9", VK_F9},
|
|
{"F10", VK_F10},
|
|
{"F11", VK_F11},
|
|
{"F12", VK_F12},
|
|
|
|
// Row 2
|
|
{"`", VK_OEM_3},
|
|
{"1", '1'},
|
|
{"2", '2'},
|
|
{"3", '3'},
|
|
{"4", '4'},
|
|
{"5", '5'},
|
|
{"6", '6'},
|
|
{"7", '7'},
|
|
{"8", '8'},
|
|
{"9", '9'},
|
|
{"0", '0'},
|
|
{"-", VK_OEM_MINUS},
|
|
{"=", VK_OEM_PLUS},
|
|
{"BACKSPACE", VK_BACK},
|
|
|
|
// Row 3
|
|
{"TAB", VK_TAB},
|
|
{"Q", 'Q'},
|
|
{"W", 'W'},
|
|
{"E", 'E'},
|
|
{"R", 'R'},
|
|
{"T", 'T'},
|
|
{"Y", 'Y'},
|
|
{"U", 'U'},
|
|
{"I", 'I'},
|
|
{"O", 'O'},
|
|
{"P", 'P'},
|
|
{"[", VK_OEM_4},
|
|
{"]", VK_OEM_6},
|
|
{"BACKSLASH", VK_OEM_5},
|
|
|
|
// Row 4
|
|
{"CAPS_LOCK", VK_CAPITAL},
|
|
{"A", 'A'},
|
|
{"S", 'S'},
|
|
{"D", 'D'},
|
|
{"F", 'F'},
|
|
{"G", 'G'},
|
|
{"H", 'H'},
|
|
{"J", 'J'},
|
|
{"K", 'K'},
|
|
{"L", 'L'},
|
|
{";", VK_OEM_1},
|
|
{"'", VK_OEM_7},
|
|
{"ENTER", VK_RETURN},
|
|
|
|
// Row 5
|
|
{"SHIFT", VK_SHIFT},
|
|
{"Z", 'Z'},
|
|
{"X", 'X'},
|
|
{"C", 'C'},
|
|
{"V", 'V'},
|
|
{"B", 'B'},
|
|
{"N", 'N'},
|
|
{"M", 'M'},
|
|
{",", VK_OEM_COMMA},
|
|
{".", VK_OEM_PERIOD},
|
|
{"SLASH", VK_OEM_2},
|
|
|
|
// Row 6
|
|
{"CONTROL", VK_CONTROL},
|
|
{"L_WIN", VK_LWIN},
|
|
{"ALT", VK_MENU},
|
|
{"SPACE", VK_SPACE},
|
|
{"R_WIN", VK_RWIN},
|
|
{"MENU", VK_APPS},
|
|
|
|
// Other Keys
|
|
// PrtSc is more important when making snapshots, therefore comment it as reserved
|
|
//{"PRINT_SCREEN", VK_SNAPSHOT},
|
|
{"SCROLL_LOCK", VK_SCROLL},
|
|
{"PAUSE", VK_PAUSE},
|
|
{"INSERT", VK_INSERT},
|
|
{"DELETE", VK_DELETE},
|
|
{"HOME", VK_HOME},
|
|
{"END", VK_END},
|
|
{"PAGE_UP", VK_PRIOR},
|
|
{"PAGE_DOWN", VK_NEXT},
|
|
|
|
// Arrow Keys
|
|
{"UPARROW", VK_UP},
|
|
{"LEFTARROW", VK_LEFT},
|
|
{"DOWNARROW", VK_DOWN},
|
|
{"RIGHTARROW", VK_RIGHT},
|
|
|
|
// NUMPAD Keys
|
|
{"NUM_LOCK", VK_NUMLOCK},
|
|
{"DIVIDE", VK_DIVIDE},
|
|
{"MULTIPLY", VK_MULTIPLY},
|
|
{"SUBTRACT", VK_SUBTRACT},
|
|
{"NUM7", VK_NUMPAD7},
|
|
{"NUM8", VK_NUMPAD8},
|
|
{"NUM9", VK_NUMPAD9},
|
|
{"ADD", VK_ADD},
|
|
{"NUM4", VK_NUMPAD4},
|
|
{"NUM5", VK_NUMPAD5},
|
|
{"NUM6", VK_NUMPAD6},
|
|
{"NUM1", VK_NUMPAD1},
|
|
{"NUM2", VK_NUMPAD2},
|
|
{"NUM3", VK_NUMPAD3},
|
|
{"NUM0", VK_NUMPAD0},
|
|
{"DECIMAL", VK_DECIMAL},
|
|
};
|
|
KeyCodePair ConfigKeyboardButtons_JP[] = {
|
|
// Reference:https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
|
|
// Wayback Machine:https://web.archive.org/web/20231223135232/https://learn.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
|
|
// Row 1
|
|
{"ESCAPE", VK_ESCAPE},
|
|
{"F1", VK_F1},
|
|
{"F2", VK_F2},
|
|
{"F3", VK_F3},
|
|
{"F4", VK_F4},
|
|
{"F5", VK_F5},
|
|
{"F6", VK_F6},
|
|
{"F7", VK_F7},
|
|
{"F8", VK_F8},
|
|
{"F9", VK_F9},
|
|
{"F10", VK_F10},
|
|
{"F11", VK_F11},
|
|
{"F12", VK_F12},
|
|
|
|
// Row 2
|
|
{"1", '1'},
|
|
{"2", '2'},
|
|
{"3", '3'},
|
|
{"4", '4'},
|
|
{"5", '5'},
|
|
{"6", '6'},
|
|
{"7", '7'},
|
|
{"8", '8'},
|
|
{"9", '9'},
|
|
{"0", '0'},
|
|
{"-", VK_OEM_MINUS},
|
|
{"^", VK_OEM_7},
|
|
{"YEN", VK_OEM_5},
|
|
{"BACKSPACE", VK_BACK},
|
|
|
|
// Row 3
|
|
{"TAB", VK_TAB},
|
|
{"Q", 'Q'},
|
|
{"W", 'W'},
|
|
{"E", 'E'},
|
|
{"R", 'R'},
|
|
{"T", 'T'},
|
|
{"Y", 'Y'},
|
|
{"U", 'U'},
|
|
{"I", 'I'},
|
|
{"O", 'O'},
|
|
{"P", 'P'},
|
|
{"@", VK_OEM_3},
|
|
{"[", VK_OEM_4},
|
|
|
|
// Row 4
|
|
{"CAPS_LOCK", VK_CAPITAL},
|
|
{"A", 'A'},
|
|
{"S", 'S'},
|
|
{"D", 'D'},
|
|
{"F", 'F'},
|
|
{"G", 'G'},
|
|
{"H", 'H'},
|
|
{"J", 'J'},
|
|
{"K", 'K'},
|
|
{"L", 'L'},
|
|
{";", VK_OEM_PLUS},
|
|
{":", VK_OEM_1},
|
|
{"]", VK_OEM_6},
|
|
{"ENTER", VK_RETURN},
|
|
|
|
// Row 5
|
|
{"SHIFT", VK_SHIFT},
|
|
{"Z", 'Z'},
|
|
{"X", 'X'},
|
|
{"C", 'C'},
|
|
{"V", 'V'},
|
|
{"B", 'B'},
|
|
{"N", 'N'},
|
|
{"M", 'M'},
|
|
{",", VK_OEM_COMMA},
|
|
{".", VK_OEM_PERIOD},
|
|
{"SLASH", VK_OEM_2},
|
|
{"BACKSLASH", VK_OEM_102},
|
|
|
|
// Row 6
|
|
{"CONTROL", VK_CONTROL},
|
|
{"L_WIN", VK_LWIN},
|
|
{"ALT", VK_MENU},
|
|
{"SPACE", VK_SPACE},
|
|
{"R_WIN", VK_RWIN},
|
|
{"MENU", VK_APPS},
|
|
|
|
// Other Keys
|
|
// PrtSc is more important when making snapshots, therefore comment it as reserved
|
|
//{"PRINT_SCREEN", VK_SNAPSHOT},
|
|
{"SCROLL_LOCK", VK_SCROLL},
|
|
{"PAUSE", VK_PAUSE},
|
|
{"INSERT", VK_INSERT},
|
|
{"DELETE", VK_DELETE},
|
|
{"HOME", VK_HOME},
|
|
{"END", VK_END},
|
|
{"PAGE_UP", VK_PRIOR},
|
|
{"PAGE_DOWN", VK_NEXT},
|
|
|
|
// Arrow Keys
|
|
{"UPARROW", VK_UP},
|
|
{"LEFTARROW", VK_LEFT},
|
|
{"DOWNARROW", VK_DOWN},
|
|
{"RIGHTARROW", VK_RIGHT},
|
|
|
|
// NUMPAD Keys
|
|
{"NUM_LOCK", VK_NUMLOCK},
|
|
{"DIVIDE", VK_DIVIDE},
|
|
{"MULTIPLY", VK_MULTIPLY},
|
|
{"SUBTRACT", VK_SUBTRACT},
|
|
{"NUM7", VK_NUMPAD7},
|
|
{"NUM8", VK_NUMPAD8},
|
|
{"NUM9", VK_NUMPAD9},
|
|
{"ADD", VK_ADD},
|
|
{"NUM4", VK_NUMPAD4},
|
|
{"NUM5", VK_NUMPAD5},
|
|
{"NUM6", VK_NUMPAD6},
|
|
{"NUM1", VK_NUMPAD1},
|
|
{"NUM2", VK_NUMPAD2},
|
|
{"NUM3", VK_NUMPAD3},
|
|
{"NUM0", VK_NUMPAD0},
|
|
{"DECIMAL", VK_DECIMAL},
|
|
};
|
|
|
|
struct {
|
|
const char *string;
|
|
SDL_GamepadButton button;
|
|
} ConfigControllerButtons[] = {
|
|
{"SDL_A", SDL_GAMEPAD_BUTTON_SOUTH},
|
|
{"SDL_B", SDL_GAMEPAD_BUTTON_EAST},
|
|
{"SDL_X", SDL_GAMEPAD_BUTTON_WEST},
|
|
{"SDL_Y", SDL_GAMEPAD_BUTTON_NORTH},
|
|
{"SDL_BACK", SDL_GAMEPAD_BUTTON_BACK},
|
|
{"SDL_GUIDE", SDL_GAMEPAD_BUTTON_GUIDE},
|
|
{"SDL_START", SDL_GAMEPAD_BUTTON_START},
|
|
{"SDL_LSTICK_PRESS", SDL_GAMEPAD_BUTTON_LEFT_STICK},
|
|
{"SDL_RSTICK_PRESS", SDL_GAMEPAD_BUTTON_RIGHT_STICK},
|
|
{"SDL_LSHOULDER", SDL_GAMEPAD_BUTTON_LEFT_SHOULDER},
|
|
{"SDL_RSHOULDER", SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER},
|
|
{"SDL_DPAD_UP", SDL_GAMEPAD_BUTTON_DPAD_UP},
|
|
{"SDL_DPAD_DOWN", SDL_GAMEPAD_BUTTON_DPAD_DOWN},
|
|
{"SDL_DPAD_LEFT", SDL_GAMEPAD_BUTTON_DPAD_LEFT},
|
|
{"SDL_DPAD_RIGHT", SDL_GAMEPAD_BUTTON_DPAD_RIGHT},
|
|
{"SDL_MISC", SDL_GAMEPAD_BUTTON_MISC1},
|
|
{"SDL_PADDLE1", SDL_GAMEPAD_BUTTON_RIGHT_PADDLE1},
|
|
{"SDL_PADDLE2", SDL_GAMEPAD_BUTTON_LEFT_PADDLE1},
|
|
{"SDL_PADDLE3", SDL_GAMEPAD_BUTTON_RIGHT_PADDLE2},
|
|
{"SDL_PADDLE4", SDL_GAMEPAD_BUTTON_LEFT_PADDLE2},
|
|
{"SDL_TOUCHPAD", SDL_GAMEPAD_BUTTON_TOUCHPAD},
|
|
};
|
|
|
|
struct {
|
|
const char *string;
|
|
SDLAxis axis;
|
|
} ConfigControllerAXIS[] = {
|
|
{"SDL_LSTICK_LEFT", SDL_AXIS_LEFT_LEFT}, {"SDL_LSTICK_UP", SDL_AXIS_LEFT_UP}, {"SDL_LSTICK_DOWN", SDL_AXIS_LEFT_DOWN},
|
|
{"SDL_LSTICK_RIGHT", SDL_AXIS_LEFT_RIGHT}, {"SDL_RSTICK_LEFT", SDL_AXIS_RIGHT_LEFT}, {"SDL_RSTICK_UP", SDL_AXIS_RIGHT_UP},
|
|
{"SDL_RSTICK_DOWN", SDL_AXIS_RIGHT_DOWN}, {"SDL_RSTICK_RIGHT", SDL_AXIS_RIGHT_RIGHT}, {"SDL_LTRIGGER", SDL_AXIS_LTRIGGER_DOWN},
|
|
{"SDL_RTRIGGER", SDL_AXIS_RTRIGGER_DOWN},
|
|
};
|
|
|
|
struct {
|
|
const char *string;
|
|
Scroll scroll;
|
|
} ConfigMouseScroll[] = {
|
|
{"SCROLL_UP", MOUSE_SCROLL_UP},
|
|
{"SCROLL_DOWN", MOUSE_SCROLL_DOWN},
|
|
};
|
|
|
|
struct MouseState {
|
|
POINT Position;
|
|
POINT RelativePosition;
|
|
bool ScrolledUp;
|
|
bool ScrolledDown;
|
|
} currentMouseState, lastMouseState; |