ASW Lib
A.D.S. Games SDL Wrapper Library. A library targeted at Allegro4 users who want to switch to SDL3 and use modern c++.
Loading...
Searching...
No Matches
input.h
Go to the documentation of this file.
1
8
9#ifndef ASW_INPUT_H
10#define ASW_INPUT_H
11
12#include <SDL3/SDL.h>
13#include <array>
14#include <string>
15
16namespace asw::input {
19 constexpr int NUM_MOUSE_BUTTONS = 5;
20
22 constexpr int NUM_KEYS = SDL_SCANCODE_COUNT;
23
25 enum class MouseButton {
26 LEFT = SDL_BUTTON_LEFT,
27 MIDDLE = SDL_BUTTON_MIDDLE,
28 RIGHT = SDL_BUTTON_RIGHT,
29 X1 = SDL_BUTTON_X1,
30 X2 = SDL_BUTTON_X2,
32 };
33
35 enum class Key {
36 UNKNOWN = SDL_SCANCODE_UNKNOWN,
37 A = SDL_SCANCODE_A,
38 B = SDL_SCANCODE_B,
39 C = SDL_SCANCODE_C,
40 D = SDL_SCANCODE_D,
41 E = SDL_SCANCODE_E,
42 F = SDL_SCANCODE_F,
43 G = SDL_SCANCODE_G,
44 H = SDL_SCANCODE_H,
45 I = SDL_SCANCODE_I,
46 J = SDL_SCANCODE_J,
47 K = SDL_SCANCODE_K,
48 L = SDL_SCANCODE_L,
49 M = SDL_SCANCODE_M,
50 N = SDL_SCANCODE_N,
51 O = SDL_SCANCODE_O,
52 P = SDL_SCANCODE_P,
53 Q = SDL_SCANCODE_Q,
54 R = SDL_SCANCODE_R,
55 S = SDL_SCANCODE_S,
56 T = SDL_SCANCODE_T,
57 U = SDL_SCANCODE_U,
58 V = SDL_SCANCODE_V,
59 W = SDL_SCANCODE_W,
60 X = SDL_SCANCODE_X,
61 Y = SDL_SCANCODE_Y,
62 Z = SDL_SCANCODE_Z,
63 NUM_1 = SDL_SCANCODE_1,
64 NUM_2 = SDL_SCANCODE_2,
65 NUM_3 = SDL_SCANCODE_3,
66 NUM_4 = SDL_SCANCODE_4,
67 NUM_5 = SDL_SCANCODE_5,
68 NUM_6 = SDL_SCANCODE_6,
69 NUM_7 = SDL_SCANCODE_7,
70 NUM_8 = SDL_SCANCODE_8,
71 NUM_9 = SDL_SCANCODE_9,
72 NUM_0 = SDL_SCANCODE_0,
73 RETURN = SDL_SCANCODE_RETURN,
74 ESCAPE = SDL_SCANCODE_ESCAPE,
75 BACKSPACE = SDL_SCANCODE_BACKSPACE,
76 TAB = SDL_SCANCODE_TAB,
77 SPACE = SDL_SCANCODE_SPACE,
78 MINUS = SDL_SCANCODE_MINUS,
79 EQUALS = SDL_SCANCODE_EQUALS,
80 LEFT_BRACKET = SDL_SCANCODE_LEFTBRACKET,
81 RIGHT_BRACKET = SDL_SCANCODE_RIGHTBRACKET,
82 BACKSLASH = SDL_SCANCODE_BACKSLASH,
83 NONUSHASH = SDL_SCANCODE_NONUSHASH,
84 SEMICOLON = SDL_SCANCODE_SEMICOLON,
85 APOSTROPHE = SDL_SCANCODE_APOSTROPHE,
86 GRAVE = SDL_SCANCODE_GRAVE,
87 COMMA = SDL_SCANCODE_COMMA,
88 PERIOD = SDL_SCANCODE_PERIOD,
89 SLASH = SDL_SCANCODE_SLASH,
90 CAPSLOCK = SDL_SCANCODE_CAPSLOCK,
91 F1 = SDL_SCANCODE_F1,
92 F2 = SDL_SCANCODE_F2,
93 F3 = SDL_SCANCODE_F3,
94 F4 = SDL_SCANCODE_F4,
95 F5 = SDL_SCANCODE_F5,
96 F6 = SDL_SCANCODE_F6,
97 F7 = SDL_SCANCODE_F7,
98 F8 = SDL_SCANCODE_F8,
99 F9 = SDL_SCANCODE_F9,
100 F10 = SDL_SCANCODE_F10,
101 F11 = SDL_SCANCODE_F11,
102 F12 = SDL_SCANCODE_F12,
103 PRINT_SCREEN = SDL_SCANCODE_PRINTSCREEN,
104 SCROL_LLOCK = SDL_SCANCODE_SCROLLLOCK,
105 PAUSE = SDL_SCANCODE_PAUSE,
106 INSERT = SDL_SCANCODE_INSERT,
107 HOME = SDL_SCANCODE_HOME,
108 PAGE_UP = SDL_SCANCODE_PAGEUP,
109 DELETE = SDL_SCANCODE_DELETE,
110 END = SDL_SCANCODE_END,
111 PAGE_DOWN = SDL_SCANCODE_PAGEDOWN,
112 RIGHT = SDL_SCANCODE_RIGHT,
113 LEFT = SDL_SCANCODE_LEFT,
114 DOWN = SDL_SCANCODE_DOWN,
115 UP = SDL_SCANCODE_UP,
116 NUM_LOCK_CLEAR = SDL_SCANCODE_NUMLOCKCLEAR,
117 KP_DIVIDE = SDL_SCANCODE_KP_DIVIDE,
118 KP_MULTIPLY = SDL_SCANCODE_KP_MULTIPLY,
119 KP_MINUS = SDL_SCANCODE_KP_MINUS,
120 KP_PLUS = SDL_SCANCODE_KP_PLUS,
121 KP_ENTER = SDL_SCANCODE_KP_ENTER,
122 KP_1 = SDL_SCANCODE_KP_1,
123 KP_2 = SDL_SCANCODE_KP_2,
124 KP_3 = SDL_SCANCODE_KP_3,
125 KP_4 = SDL_SCANCODE_KP_4,
126 KP_5 = SDL_SCANCODE_KP_5,
127 KP_6 = SDL_SCANCODE_KP_6,
128 KP_7 = SDL_SCANCODE_KP_7,
129 KP_8 = SDL_SCANCODE_KP_8,
130 KP_9 = SDL_SCANCODE_KP_9,
131 KP_0 = SDL_SCANCODE_KP_0,
132 KP_PERIOD = SDL_SCANCODE_KP_PERIOD,
133 NONUS_BACKSLASH = SDL_SCANCODE_NONUSBACKSLASH,
134 APPLICATION = SDL_SCANCODE_APPLICATION,
135 POWER = SDL_SCANCODE_POWER,
136 KP_EQUALS = SDL_SCANCODE_KP_EQUALS,
137 F13 = SDL_SCANCODE_F13,
138 F14 = SDL_SCANCODE_F14,
139 F15 = SDL_SCANCODE_F15,
140 F16 = SDL_SCANCODE_F16,
141 F17 = SDL_SCANCODE_F17,
142 F18 = SDL_SCANCODE_F18,
143 F19 = SDL_SCANCODE_F19,
144 F20 = SDL_SCANCODE_F20,
145 F21 = SDL_SCANCODE_F21,
146 F22 = SDL_SCANCODE_F22,
147 F23 = SDL_SCANCODE_F23,
148 F24 = SDL_SCANCODE_F24,
149 EXECUTE = SDL_SCANCODE_EXECUTE,
150 HELP = SDL_SCANCODE_HELP,
151 MENU = SDL_SCANCODE_MENU,
152 SELECT = SDL_SCANCODE_SELECT,
153 STOP = SDL_SCANCODE_STOP,
154 AGAIN = SDL_SCANCODE_AGAIN,
155 UNDO = SDL_SCANCODE_UNDO,
156 CUT = SDL_SCANCODE_CUT,
157 COPY = SDL_SCANCODE_COPY,
158 PASTE = SDL_SCANCODE_PASTE,
159 FIND = SDL_SCANCODE_FIND,
160 MUTE = SDL_SCANCODE_MUTE,
161 VOLUME_UP = SDL_SCANCODE_VOLUMEUP,
162 VOLUME_DOWN = SDL_SCANCODE_VOLUMEDOWN,
163 KP_COMMA = SDL_SCANCODE_KP_COMMA,
164 KP_EQUALSAS_400 = SDL_SCANCODE_KP_EQUALSAS400,
165 INTERNATIONAL_1 = SDL_SCANCODE_INTERNATIONAL1,
166 INTERNATIONAL_2 = SDL_SCANCODE_INTERNATIONAL2,
167 INTERNATIONAL_3 = SDL_SCANCODE_INTERNATIONAL3,
168 INTERNATIONAL_4 = SDL_SCANCODE_INTERNATIONAL4,
169 INTERNATIONAL_5 = SDL_SCANCODE_INTERNATIONAL5,
170 INTERNATIONAL_6 = SDL_SCANCODE_INTERNATIONAL6,
171 INTERNATIONAL_7 = SDL_SCANCODE_INTERNATIONAL7,
172 INTERNATIONAL_8 = SDL_SCANCODE_INTERNATIONAL8,
173 INTERNATIONAL_9 = SDL_SCANCODE_INTERNATIONAL9,
174 LANG_1 = SDL_SCANCODE_LANG1,
175 LANG_2 = SDL_SCANCODE_LANG2,
176 LANG_3 = SDL_SCANCODE_LANG3,
177 LANG_4 = SDL_SCANCODE_LANG4,
178 LANG_5 = SDL_SCANCODE_LANG5,
179 LANG_6 = SDL_SCANCODE_LANG6,
180 LANG_7 = SDL_SCANCODE_LANG7,
181 LANG_8 = SDL_SCANCODE_LANG8,
182 LANG_9 = SDL_SCANCODE_LANG9,
183 ALT_ERASE = SDL_SCANCODE_ALTERASE,
184 SYS_REQ = SDL_SCANCODE_SYSREQ,
185 CANCEL = SDL_SCANCODE_CANCEL,
186 CLEAR = SDL_SCANCODE_CLEAR,
187 PRIOR = SDL_SCANCODE_PRIOR,
188 RETURN_2 = SDL_SCANCODE_RETURN2,
189 SEPARATOR = SDL_SCANCODE_SEPARATOR,
190 OUT = SDL_SCANCODE_OUT,
191 OPER = SDL_SCANCODE_OPER,
192 CLEAR_AGAIN = SDL_SCANCODE_CLEARAGAIN,
193 CRSEL = SDL_SCANCODE_CRSEL,
194 EXSEL = SDL_SCANCODE_EXSEL,
195 KP_00 = SDL_SCANCODE_KP_00,
196 KP_000 = SDL_SCANCODE_KP_000,
197 THOUSANDS_SEPARATOR = SDL_SCANCODE_THOUSANDSSEPARATOR,
198 DECIMAL_SEPARATOR = SDL_SCANCODE_DECIMALSEPARATOR,
199 CURRENCY_UNIT = SDL_SCANCODE_CURRENCYUNIT,
200 CURRENCY_SUBUNIT = SDL_SCANCODE_CURRENCYSUBUNIT,
201 KP_LEFT_PAREN = SDL_SCANCODE_KP_LEFTPAREN,
202 KP_RIGHT_PAREN = SDL_SCANCODE_KP_RIGHTPAREN,
203 KP_LEFT_BRACE = SDL_SCANCODE_KP_LEFTBRACE,
204 KP_RIGHT_BRACE = SDL_SCANCODE_KP_RIGHTBRACE,
205 KP_TAB = SDL_SCANCODE_KP_TAB,
206 KP_BACKSPACE = SDL_SCANCODE_KP_BACKSPACE,
207 KP_A = SDL_SCANCODE_KP_A,
208 KP_B = SDL_SCANCODE_KP_B,
209 KP_C = SDL_SCANCODE_KP_C,
210 KP_D = SDL_SCANCODE_KP_D,
211 KP_E = SDL_SCANCODE_KP_E,
212 KP_F = SDL_SCANCODE_KP_F,
213 KP_XOR = SDL_SCANCODE_KP_XOR,
214 KP_POWER = SDL_SCANCODE_KP_POWER,
215 KP_PERCENT = SDL_SCANCODE_KP_PERCENT,
216 KP_LESS = SDL_SCANCODE_KP_LESS,
217 KP_GREATER = SDL_SCANCODE_KP_GREATER,
218 KP_AMPERSAND = SDL_SCANCODE_KP_AMPERSAND,
219 KP_DOUBLE_AMPERSAND = SDL_SCANCODE_KP_DBLAMPERSAND,
220 KP_VERTICAL_BAR = SDL_SCANCODE_KP_VERTICALBAR,
221 KP_DOUBLE_VERTICAL_BAR = SDL_SCANCODE_KP_DBLVERTICALBAR,
222 KP_COLON = SDL_SCANCODE_KP_COLON,
223 KP_HASH = SDL_SCANCODE_KP_HASH,
224 KP_SPACE = SDL_SCANCODE_KP_SPACE,
225 KP_AT = SDL_SCANCODE_KP_AT,
226 KP_EXCLAMATION = SDL_SCANCODE_KP_EXCLAM,
227 KP_MEM_STORE = SDL_SCANCODE_KP_MEMSTORE,
228 KP_MEM_RECALL = SDL_SCANCODE_KP_MEMRECALL,
229 KP_MEM_CLEAR = SDL_SCANCODE_KP_MEMCLEAR,
230 KP_MEM_ADD = SDL_SCANCODE_KP_MEMADD,
231 KP_MEM_SUBTRACT = SDL_SCANCODE_KP_MEMSUBTRACT,
232 KP_MEM_MULTIPLY = SDL_SCANCODE_KP_MEMMULTIPLY,
233 KP_MEM_DIVIDE = SDL_SCANCODE_KP_MEMDIVIDE,
234 KP_PLUS_MINUS = SDL_SCANCODE_KP_PLUSMINUS,
235 KP_CLEAR = SDL_SCANCODE_KP_CLEAR,
236 KP_CLEAR_ENTRY = SDL_SCANCODE_KP_CLEARENTRY,
237 KP_BINARY = SDL_SCANCODE_KP_BINARY,
238 KP_OCTAL = SDL_SCANCODE_KP_OCTAL,
239 KP_DECIMAL = SDL_SCANCODE_KP_DECIMAL,
240 KP_HEXADECIMAL = SDL_SCANCODE_KP_HEXADECIMAL,
241 LCTRL = SDL_SCANCODE_LCTRL,
242 LSHIFT = SDL_SCANCODE_LSHIFT,
243 LALT = SDL_SCANCODE_LALT,
244 LGUI = SDL_SCANCODE_LGUI,
245 RCTRL = SDL_SCANCODE_RCTRL,
246 RSHIFT = SDL_SCANCODE_RSHIFT,
247 RALT = SDL_SCANCODE_RALT,
248 RGUI = SDL_SCANCODE_RGUI,
249 MODE = SDL_SCANCODE_MODE,
250 AUDIO_NEXT = SDL_SCANCODE_MEDIA_NEXT_TRACK,
251 AUDIO_PREV = SDL_SCANCODE_MEDIA_PREVIOUS_TRACK,
252 AUDIO_STOP = SDL_SCANCODE_MEDIA_STOP,
253 AUDIO_PLAY = SDL_SCANCODE_MEDIA_PLAY,
254 MEDIA_SELECT = SDL_SCANCODE_MEDIA_SELECT,
255 AC_SEARCH = SDL_SCANCODE_AC_SEARCH,
256 AC_HOME = SDL_SCANCODE_AC_HOME,
257 AC_BACK = SDL_SCANCODE_AC_BACK,
258 AC_FORWARD = SDL_SCANCODE_AC_FORWARD,
259 AC_STOP = SDL_SCANCODE_AC_STOP,
260 AC_REFRESH = SDL_SCANCODE_AC_REFRESH,
261 AC_BOOKMARKS = SDL_SCANCODE_AC_BOOKMARKS,
262 EJECT = SDL_SCANCODE_MEDIA_EJECT,
263 SLEEP = SDL_SCANCODE_SLEEP,
264 AUDIO_REWIND = SDL_SCANCODE_MEDIA_REWIND,
265 AUDIO_FAST_FORWARD = SDL_SCANCODE_MEDIA_FAST_FORWARD,
266 SOFT_LEFT = SDL_SCANCODE_SOFTLEFT,
267 SOFT_RIGHT = SDL_SCANCODE_SOFTRIGHT,
268 CALL = SDL_SCANCODE_CALL,
269 ENDCALL = SDL_SCANCODE_ENDCALL,
271 };
272
274 constexpr int NUM_CURSORS = SDL_SYSTEM_CURSOR_COUNT;
275
277 enum class CursorId {
278 DEFAULT = SDL_SYSTEM_CURSOR_DEFAULT,
279 TEXT = SDL_SYSTEM_CURSOR_TEXT,
280 WAIT = SDL_SYSTEM_CURSOR_WAIT,
281 CROSSHAIR = SDL_SYSTEM_CURSOR_CROSSHAIR,
282 PROGRESS = SDL_SYSTEM_CURSOR_PROGRESS,
283 NWSE_RESIZE = SDL_SYSTEM_CURSOR_NWSE_RESIZE,
284 NESW_RESIZE = SDL_SYSTEM_CURSOR_NESW_RESIZE,
285 EW_RESIZE = SDL_SYSTEM_CURSOR_EW_RESIZE,
286 NS_RESIZE = SDL_SYSTEM_CURSOR_NS_RESIZE,
287 MOVE = SDL_SYSTEM_CURSOR_MOVE,
288 NOT_ALLOWED = SDL_SYSTEM_CURSOR_NOT_ALLOWED,
289 POINTER = SDL_SYSTEM_CURSOR_POINTER,
290 NW_RESIZE = SDL_SYSTEM_CURSOR_NW_RESIZE,
291 N_RESIZE = SDL_SYSTEM_CURSOR_N_RESIZE,
292 NE_RESIZE = SDL_SYSTEM_CURSOR_NE_RESIZE,
293 E_RESIZE = SDL_SYSTEM_CURSOR_E_RESIZE,
294 SE_RESIZE = SDL_SYSTEM_CURSOR_SE_RESIZE,
295 S_RESIZE = SDL_SYSTEM_CURSOR_S_RESIZE,
296 SW_RESIZE = SDL_SYSTEM_CURSOR_SW_RESIZE,
297 W_RESIZE = SDL_SYSTEM_CURSOR_W_RESIZE,
299 };
300
301 namespace {
304 std::array<SDL_Cursor*, NUM_CURSORS> cursors{nullptr};
305 } // namespace
306
309 using MouseState = struct MouseState {
310 bool anyPressed{false};
311 int lastPressed{-1};
312
313 float xChange{0};
314 float yChange{0};
315
316 float x{0};
317 float y{0};
318 float z{0};
319
320 std::array<bool, NUM_MOUSE_BUTTONS> pressed{false};
321 std::array<bool, NUM_MOUSE_BUTTONS> released{false};
322 std::array<bool, NUM_MOUSE_BUTTONS> down{false};
323 };
324
326 extern MouseState mouse;
327
335
343
351
355 using KeyState = struct KeyState {
356 std::array<bool, NUM_KEYS> pressed{false};
357 std::array<bool, NUM_KEYS> released{false};
358 std::array<bool, NUM_KEYS> down{false};
359
360 bool anyPressed{false};
361 int lastPressed{-1};
362 };
363
366 extern KeyState keyboard;
367
374 bool isKeyDown(asw::input::Key key);
375
383
391
399 void setCursor(asw::input::CursorId cursor);
400
404 constexpr int NUM_CONTROLLER_BUTTONS = SDL_GAMEPAD_BUTTON_COUNT;
405
409 enum class ControllerButton {
410 A = SDL_GAMEPAD_BUTTON_SOUTH,
411 B = SDL_GAMEPAD_BUTTON_EAST,
412 X = SDL_GAMEPAD_BUTTON_WEST,
413 Y = SDL_GAMEPAD_BUTTON_NORTH,
414 BACK = SDL_GAMEPAD_BUTTON_BACK,
415 GUIDE = SDL_GAMEPAD_BUTTON_GUIDE,
416 START = SDL_GAMEPAD_BUTTON_START,
417 LEFT_STICK = SDL_GAMEPAD_BUTTON_LEFT_STICK,
418 RIGHT_STICK = SDL_GAMEPAD_BUTTON_RIGHT_STICK,
419 LEFT_SHOULDER = SDL_GAMEPAD_BUTTON_LEFT_SHOULDER,
420 RIGHT_SHOULDER = SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER,
421 DPAD_UP = SDL_GAMEPAD_BUTTON_DPAD_UP,
422 DPAD_DOWN = SDL_GAMEPAD_BUTTON_DPAD_DOWN,
423 DPAD_LEFT = SDL_GAMEPAD_BUTTON_DPAD_LEFT,
424 DPAD_RIGHT = SDL_GAMEPAD_BUTTON_DPAD_RIGHT,
425 MISC_1 = SDL_GAMEPAD_BUTTON_MISC1,
426 RIGHT_PADDLE_1 = SDL_GAMEPAD_BUTTON_RIGHT_PADDLE1,
427 LEFT_PADDLE_2 = SDL_GAMEPAD_BUTTON_LEFT_PADDLE1,
428 RIGHT_PADDLE_3 = SDL_GAMEPAD_BUTTON_RIGHT_PADDLE2,
429 LEFT_PADDLE_4 = SDL_GAMEPAD_BUTTON_LEFT_PADDLE2,
430 TOUCH_PAD = SDL_GAMEPAD_BUTTON_TOUCHPAD,
432 };
433
437 constexpr int NUM_CONTROLLER_AXES = SDL_GAMEPAD_AXIS_COUNT;
438
442 enum class ControllerAxis {
443 LEFT_X = SDL_GAMEPAD_AXIS_LEFTX,
444 LEFT_Y = SDL_GAMEPAD_AXIS_LEFTY,
445 RIGHT_X = SDL_GAMEPAD_AXIS_RIGHTX,
446 RIGHT_Y = SDL_GAMEPAD_AXIS_RIGHTY,
447 LEFT_TRIGGER = SDL_GAMEPAD_AXIS_LEFT_TRIGGER,
448 RIGHT_TRIGGER = SDL_GAMEPAD_AXIS_RIGHT_TRIGGER,
450 };
451
457 std::array<bool, NUM_CONTROLLER_BUTTONS> pressed{false};
458 std::array<bool, NUM_CONTROLLER_BUTTONS> released{false};
459 std::array<bool, NUM_CONTROLLER_BUTTONS> down{false};
460
461 bool anyPressed{false};
462 int lastPressed{-1};
463 float deadZone{0.25F};
464
465 std::array<float, NUM_CONTROLLER_AXES> axis{0};
466 };
467
471 constexpr int MAX_CONTROLLERS = 8;
472
476 extern std::array<ControllerState, MAX_CONTROLLERS> controller;
477
487
496 bool wasControllerButtonPressed(int index,
498
507 bool wasControllerButtonReleased(int index,
509
517 float getControllerAxis(int index, asw::input::ControllerAxis axis);
518
522 void setControllerDeadZone(int index, float deadZone);
523
527 int getControllerCount();
528
532 std::string getControllerName(int index);
533
537 void reset();
538} // namespace asw::input
539
540#endif // ASW_INPUT_H
std::array< SDL_Cursor *, NUM_CURSORS > cursors
Active cursor stores the current active cursor. It is updated by the core.
Definition input.h:304
bool wasButtonReleased(asw::input::MouseButton button)
Check if a button was released since the last update.
Definition input.cpp:64
void setControllerDeadZone(int index, float deadZone)
Definition input.cpp:117
CursorId
System cursor Ids.
Definition input.h:277
bool wasKeyReleased(asw::input::Key key)
Check if a key was released since the last update.
Definition input.cpp:76
bool isControllerButtonDown(int index, asw::input::ControllerButton button)
Check if a controller button is down.
Definition input.cpp:95
void setCursor(asw::input::CursorId cursor)
Change cursor.
Definition input.cpp:80
std::string getControllerName(int index)
Definition input.cpp:131
bool isKeyDown(asw::input::Key key)
Check if a key is down.
Definition input.cpp:68
float getControllerAxis(int index, asw::input::ControllerAxis axis)
Get the value of a controller axis.
Definition input.cpp:112
bool wasControllerButtonReleased(int index, asw::input::ControllerButton button)
Check if a controller button was released since the last update.
Definition input.cpp:106
int getControllerCount()
Definition input.cpp:121
struct KeyState { std::array< bool, NUM_KEYS > pressed{false}; std::array< bool, NUM_KEYS > released{false}; std::array< bool, NUM_KEYS > down{false}; bool anyPressed{false}; int lastPressed{-1}; } KeyState
Keyboard state stores the current state of the keyboard. It is updated by the core.
Definition input.h:355
struct MouseState { bool anyPressed{false}; int lastPressed{-1}; float xChange{0}; float yChange{0}; float x{0}; float y{0}; float z{0}; std::array< bool, NUM_MOUSE_BUTTONS > pressed{false}; std::array< bool, NUM_MOUSE_BUTTONS > released{false}; std::array< bool, NUM_MOUSE_BUTTONS > down{false}; } MouseState
Mouse state stores the current state of the mouse. It is updated by the core.
Definition input.h:309
void reset()
Reset all input states. Called by the core.
Definition input.cpp:10
bool isButtonDown(asw::input::MouseButton button)
Check if a button is down.
Definition input.cpp:56
constexpr int MAX_CONTROLLERS
Maximum number of controllers supported.
Definition input.h:471
std::array< ControllerState, MAX_CONTROLLERS > controller
Global controller state.
Definition input.cpp:8
bool wasKeyPressed(asw::input::Key key)
Check if a key was pressed since the last update.
Definition input.cpp:72
Key
Enumeration of keys in the ASW library.
Definition input.h:35
bool wasButtonPressed(asw::input::MouseButton button)
Check if a button was pressed since the last update.
Definition input.cpp:60
bool wasControllerButtonPressed(int index, asw::input::ControllerButton button)
Check if a controller button was pressed since the last update.
Definition input.cpp:100
constexpr int NUM_CONTROLLER_AXES
Definition input.h:437
constexpr int NUM_MOUSE_BUTTONS
Number of mouse buttons in the ASW library.
Definition input.h:19
constexpr int NUM_CURSORS
Cursor count.
Definition input.h:274
ControllerButton
Mappings from SDL game controller buttons to ASW buttons.
Definition input.h:409
MouseState mouse
Global mouse state.
Definition input.cpp:5
constexpr int NUM_KEYS
Number of keys in the ASW library.
Definition input.h:22
KeyState keyboard
Global keyboard state.
Definition input.cpp:3
MouseButton
Enumeration of mouse buttons in the ASW library.
Definition input.h:25
constexpr int NUM_CONTROLLER_BUTTONS
Number of buttons on a game controller.
Definition input.h:404
struct ControllerState { std::array< bool, NUM_CONTROLLER_BUTTONS > pressed{false}; std::array< bool, NUM_CONTROLLER_BUTTONS > released{false}; std::array< bool, NUM_CONTROLLER_BUTTONS > down{false}; bool anyPressed{false}; int lastPressed{-1}; float deadZone{0.25F}; std::array< float, NUM_CONTROLLER_AXES > axis{0}; } ControllerState
Controller state stores the current state of a controller. It is updated by the core.
Definition input.h:456
ControllerAxis
Mappings from SDL game controller axes to ASW axes.
Definition input.h:442