196 lines
4.7 KiB
C++
196 lines
4.7 KiB
C++
#pragma once
|
|
|
|
#include <SDL.h>
|
|
|
|
namespace extra2d {
|
|
|
|
/**
|
|
* @brief 键盘按键码(跨平台统一)
|
|
*
|
|
* 使用 SDL Scancode 作为底层实现,确保跨平台一致性。
|
|
* Scancode 是物理按键位置,不依赖于键盘布局。
|
|
*/
|
|
enum class Key : int {
|
|
None = 0,
|
|
|
|
// 字母键
|
|
A = SDL_SCANCODE_A,
|
|
B = SDL_SCANCODE_B,
|
|
C = SDL_SCANCODE_C,
|
|
D = SDL_SCANCODE_D,
|
|
E = SDL_SCANCODE_E,
|
|
F = SDL_SCANCODE_F,
|
|
G = SDL_SCANCODE_G,
|
|
H = SDL_SCANCODE_H,
|
|
I = SDL_SCANCODE_I,
|
|
J = SDL_SCANCODE_J,
|
|
K = SDL_SCANCODE_K,
|
|
L = SDL_SCANCODE_L,
|
|
M = SDL_SCANCODE_M,
|
|
N = SDL_SCANCODE_N,
|
|
O = SDL_SCANCODE_O,
|
|
P = SDL_SCANCODE_P,
|
|
Q = SDL_SCANCODE_Q,
|
|
R = SDL_SCANCODE_R,
|
|
S = SDL_SCANCODE_S,
|
|
T = SDL_SCANCODE_T,
|
|
U = SDL_SCANCODE_U,
|
|
V = SDL_SCANCODE_V,
|
|
W = SDL_SCANCODE_W,
|
|
X = SDL_SCANCODE_X,
|
|
Y = SDL_SCANCODE_Y,
|
|
Z = SDL_SCANCODE_Z,
|
|
|
|
// 数字键(主键盘)
|
|
Num0 = SDL_SCANCODE_0,
|
|
Num1 = SDL_SCANCODE_1,
|
|
Num2 = SDL_SCANCODE_2,
|
|
Num3 = SDL_SCANCODE_3,
|
|
Num4 = SDL_SCANCODE_4,
|
|
Num5 = SDL_SCANCODE_5,
|
|
Num6 = SDL_SCANCODE_6,
|
|
Num7 = SDL_SCANCODE_7,
|
|
Num8 = SDL_SCANCODE_8,
|
|
Num9 = SDL_SCANCODE_9,
|
|
|
|
// 功能键
|
|
F1 = SDL_SCANCODE_F1,
|
|
F2 = SDL_SCANCODE_F2,
|
|
F3 = SDL_SCANCODE_F3,
|
|
F4 = SDL_SCANCODE_F4,
|
|
F5 = SDL_SCANCODE_F5,
|
|
F6 = SDL_SCANCODE_F6,
|
|
F7 = SDL_SCANCODE_F7,
|
|
F8 = SDL_SCANCODE_F8,
|
|
F9 = SDL_SCANCODE_F9,
|
|
F10 = SDL_SCANCODE_F10,
|
|
F11 = SDL_SCANCODE_F11,
|
|
F12 = SDL_SCANCODE_F12,
|
|
|
|
// 特殊键
|
|
Space = SDL_SCANCODE_SPACE,
|
|
Enter = SDL_SCANCODE_RETURN,
|
|
Escape = SDL_SCANCODE_ESCAPE,
|
|
Tab = SDL_SCANCODE_TAB,
|
|
Backspace = SDL_SCANCODE_BACKSPACE,
|
|
Insert = SDL_SCANCODE_INSERT,
|
|
Delete = SDL_SCANCODE_DELETE,
|
|
Home = SDL_SCANCODE_HOME,
|
|
End = SDL_SCANCODE_END,
|
|
PageUp = SDL_SCANCODE_PAGEUP,
|
|
PageDown = SDL_SCANCODE_PAGEDOWN,
|
|
|
|
// 方向键
|
|
Up = SDL_SCANCODE_UP,
|
|
Down = SDL_SCANCODE_DOWN,
|
|
Left = SDL_SCANCODE_LEFT,
|
|
Right = SDL_SCANCODE_RIGHT,
|
|
|
|
// 修饰键
|
|
LShift = SDL_SCANCODE_LSHIFT,
|
|
RShift = SDL_SCANCODE_RSHIFT,
|
|
LCtrl = SDL_SCANCODE_LCTRL,
|
|
RCtrl = SDL_SCANCODE_RCTRL,
|
|
LAlt = SDL_SCANCODE_LALT,
|
|
RAlt = SDL_SCANCODE_RALT,
|
|
|
|
// 锁定键
|
|
CapsLock = SDL_SCANCODE_CAPSLOCK,
|
|
NumLock = SDL_SCANCODE_NUMLOCKCLEAR,
|
|
ScrollLock = SDL_SCANCODE_SCROLLLOCK,
|
|
|
|
// 小键盘
|
|
KP0 = SDL_SCANCODE_KP_0,
|
|
KP1 = SDL_SCANCODE_KP_1,
|
|
KP2 = SDL_SCANCODE_KP_2,
|
|
KP3 = SDL_SCANCODE_KP_3,
|
|
KP4 = SDL_SCANCODE_KP_4,
|
|
KP5 = SDL_SCANCODE_KP_5,
|
|
KP6 = SDL_SCANCODE_KP_6,
|
|
KP7 = SDL_SCANCODE_KP_7,
|
|
KP8 = SDL_SCANCODE_KP_8,
|
|
KP9 = SDL_SCANCODE_KP_9,
|
|
KPPlus = SDL_SCANCODE_KP_PLUS,
|
|
KPMinus = SDL_SCANCODE_KP_MINUS,
|
|
KPMultiply = SDL_SCANCODE_KP_MULTIPLY,
|
|
KPDivide = SDL_SCANCODE_KP_DIVIDE,
|
|
KPEnter = SDL_SCANCODE_KP_ENTER,
|
|
KPPeriod = SDL_SCANCODE_KP_PERIOD,
|
|
|
|
// 符号键
|
|
Minus = SDL_SCANCODE_MINUS,
|
|
Equals = SDL_SCANCODE_EQUALS,
|
|
LeftBracket = SDL_SCANCODE_LEFTBRACKET,
|
|
RightBracket = SDL_SCANCODE_RIGHTBRACKET,
|
|
Backslash = SDL_SCANCODE_BACKSLASH,
|
|
Semicolon = SDL_SCANCODE_SEMICOLON,
|
|
Apostrophe = SDL_SCANCODE_APOSTROPHE,
|
|
Grave = SDL_SCANCODE_GRAVE,
|
|
Comma = SDL_SCANCODE_COMMA,
|
|
Period = SDL_SCANCODE_PERIOD,
|
|
Slash = SDL_SCANCODE_SLASH,
|
|
|
|
// 其他
|
|
PrintScreen = SDL_SCANCODE_PRINTSCREEN,
|
|
Pause = SDL_SCANCODE_PAUSE,
|
|
|
|
Count = SDL_NUM_SCANCODES
|
|
};
|
|
|
|
/**
|
|
* @brief 鼠标按钮(跨平台统一)
|
|
*
|
|
* 使用 SDL 鼠标按钮定义
|
|
*/
|
|
enum class Mouse : int {
|
|
Left = SDL_BUTTON_LEFT,
|
|
Middle = SDL_BUTTON_MIDDLE,
|
|
Right = SDL_BUTTON_RIGHT,
|
|
X1 = SDL_BUTTON_X1,
|
|
X2 = SDL_BUTTON_X2,
|
|
Count
|
|
};
|
|
|
|
/**
|
|
* @brief 游戏手柄按钮(跨平台统一)
|
|
*
|
|
* 使用 SDL GameController 按钮定义
|
|
*/
|
|
enum class Gamepad : int {
|
|
A = SDL_CONTROLLER_BUTTON_A,
|
|
B = SDL_CONTROLLER_BUTTON_B,
|
|
X = SDL_CONTROLLER_BUTTON_X,
|
|
Y = SDL_CONTROLLER_BUTTON_Y,
|
|
Back = SDL_CONTROLLER_BUTTON_BACK,
|
|
Guide = SDL_CONTROLLER_BUTTON_GUIDE,
|
|
Start = SDL_CONTROLLER_BUTTON_START,
|
|
LStick = SDL_CONTROLLER_BUTTON_LEFTSTICK,
|
|
RStick = SDL_CONTROLLER_BUTTON_RIGHTSTICK,
|
|
LB = SDL_CONTROLLER_BUTTON_LEFTSHOULDER,
|
|
RB = SDL_CONTROLLER_BUTTON_RIGHTSHOULDER,
|
|
DUp = SDL_CONTROLLER_BUTTON_DPAD_UP,
|
|
DDown = SDL_CONTROLLER_BUTTON_DPAD_DOWN,
|
|
DLeft = SDL_CONTROLLER_BUTTON_DPAD_LEFT,
|
|
DRight = SDL_CONTROLLER_BUTTON_DPAD_RIGHT,
|
|
LT = SDL_CONTROLLER_BUTTON_MAX, // 轴映射
|
|
RT, // 轴映射
|
|
Count
|
|
};
|
|
|
|
/**
|
|
* @brief 手柄轴(跨平台统一)
|
|
*
|
|
* 使用 SDL GameController 轴定义
|
|
*/
|
|
enum class GamepadAxis : int {
|
|
LeftX = SDL_CONTROLLER_AXIS_LEFTX,
|
|
LeftY = SDL_CONTROLLER_AXIS_LEFTY,
|
|
RightX = SDL_CONTROLLER_AXIS_RIGHTX,
|
|
RightY = SDL_CONTROLLER_AXIS_RIGHTY,
|
|
LeftTrigger = SDL_CONTROLLER_AXIS_TRIGGERLEFT,
|
|
RightTrigger = SDL_CONTROLLER_AXIS_TRIGGERRIGHT,
|
|
Count
|
|
};
|
|
|
|
} // namespace extra2d
|