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
16#include "./geometry.h"
17
18namespace asw::input {
21 constexpr int NUM_MOUSE_BUTTONS = 6;
22
24 constexpr int NUM_KEYS = SDL_SCANCODE_COUNT;
25
27 enum class MouseButton {
28 Left = SDL_BUTTON_LEFT,
29 Middle = SDL_BUTTON_MIDDLE,
30 Right = SDL_BUTTON_RIGHT,
31 X1 = SDL_BUTTON_X1,
32 X2 = SDL_BUTTON_X2,
34 };
35
37 enum class Key {
38 Unknown = SDL_SCANCODE_UNKNOWN,
39 A = SDL_SCANCODE_A,
40 B = SDL_SCANCODE_B,
41 C = SDL_SCANCODE_C,
42 D = SDL_SCANCODE_D,
43 E = SDL_SCANCODE_E,
44 F = SDL_SCANCODE_F,
45 G = SDL_SCANCODE_G,
46 H = SDL_SCANCODE_H,
47 I = SDL_SCANCODE_I,
48 J = SDL_SCANCODE_J,
49 K = SDL_SCANCODE_K,
50 L = SDL_SCANCODE_L,
51 M = SDL_SCANCODE_M,
52 N = SDL_SCANCODE_N,
53 O = SDL_SCANCODE_O,
54 P = SDL_SCANCODE_P,
55 Q = SDL_SCANCODE_Q,
56 R = SDL_SCANCODE_R,
57 S = SDL_SCANCODE_S,
58 T = SDL_SCANCODE_T,
59 U = SDL_SCANCODE_U,
60 V = SDL_SCANCODE_V,
61 W = SDL_SCANCODE_W,
62 X = SDL_SCANCODE_X,
63 Y = SDL_SCANCODE_Y,
64 Z = SDL_SCANCODE_Z,
65 Num1 = SDL_SCANCODE_1,
66 Num2 = SDL_SCANCODE_2,
67 Num3 = SDL_SCANCODE_3,
68 Num4 = SDL_SCANCODE_4,
69 Num5 = SDL_SCANCODE_5,
70 Num6 = SDL_SCANCODE_6,
71 Num7 = SDL_SCANCODE_7,
72 Num8 = SDL_SCANCODE_8,
73 Num9 = SDL_SCANCODE_9,
74 Num0 = SDL_SCANCODE_0,
75 Return = SDL_SCANCODE_RETURN,
76 Escape = SDL_SCANCODE_ESCAPE,
77 Backspace = SDL_SCANCODE_BACKSPACE,
78 Tab = SDL_SCANCODE_TAB,
79 Space = SDL_SCANCODE_SPACE,
80 Minux = SDL_SCANCODE_MINUS,
81 Equals = SDL_SCANCODE_EQUALS,
82 LeftBracket = SDL_SCANCODE_LEFTBRACKET,
83 RightBracket = SDL_SCANCODE_RIGHTBRACKET,
84 Backslash = SDL_SCANCODE_BACKSLASH,
85 Nonoshash = SDL_SCANCODE_NONUSHASH,
86 Semicolon = SDL_SCANCODE_SEMICOLON,
87 Apostrophe = SDL_SCANCODE_APOSTROPHE,
88 Grave = SDL_SCANCODE_GRAVE,
89 Comma = SDL_SCANCODE_COMMA,
90 Period = SDL_SCANCODE_PERIOD,
91 Slash = SDL_SCANCODE_SLASH,
92 Capslock = SDL_SCANCODE_CAPSLOCK,
93 F1 = SDL_SCANCODE_F1,
94 F2 = SDL_SCANCODE_F2,
95 F3 = SDL_SCANCODE_F3,
96 F4 = SDL_SCANCODE_F4,
97 F5 = SDL_SCANCODE_F5,
98 F6 = SDL_SCANCODE_F6,
99 F7 = SDL_SCANCODE_F7,
100 F8 = SDL_SCANCODE_F8,
101 F9 = SDL_SCANCODE_F9,
102 F10 = SDL_SCANCODE_F10,
103 F11 = SDL_SCANCODE_F11,
104 F12 = SDL_SCANCODE_F12,
105 PrintScreen = SDL_SCANCODE_PRINTSCREEN,
106 ScrollLock = SDL_SCANCODE_SCROLLLOCK,
107 Pause = SDL_SCANCODE_PAUSE,
108 Insert = SDL_SCANCODE_INSERT,
109 Home = SDL_SCANCODE_HOME,
110 PageUp = SDL_SCANCODE_PAGEUP,
111 Delete = SDL_SCANCODE_DELETE,
112 End = SDL_SCANCODE_END,
113 PageDown = SDL_SCANCODE_PAGEDOWN,
114 Right = SDL_SCANCODE_RIGHT,
115 Left = SDL_SCANCODE_LEFT,
116 Down = SDL_SCANCODE_DOWN,
117 Up = SDL_SCANCODE_UP,
118 NumLockClear = SDL_SCANCODE_NUMLOCKCLEAR,
119 KpDivide = SDL_SCANCODE_KP_DIVIDE,
120 KpMultiply = SDL_SCANCODE_KP_MULTIPLY,
121 KpMinus = SDL_SCANCODE_KP_MINUS,
122 KpPlus = SDL_SCANCODE_KP_PLUS,
123 KpEnter = SDL_SCANCODE_KP_ENTER,
124 Kp1 = SDL_SCANCODE_KP_1,
125 Kp2 = SDL_SCANCODE_KP_2,
126 Kp3 = SDL_SCANCODE_KP_3,
127 Kp4 = SDL_SCANCODE_KP_4,
128 Kp5 = SDL_SCANCODE_KP_5,
129 Kp6 = SDL_SCANCODE_KP_6,
130 Kp7 = SDL_SCANCODE_KP_7,
131 Kp8 = SDL_SCANCODE_KP_8,
132 Kp9 = SDL_SCANCODE_KP_9,
133 Kp0 = SDL_SCANCODE_KP_0,
134 KpPeriod = SDL_SCANCODE_KP_PERIOD,
135 NonusBackslash = SDL_SCANCODE_NONUSBACKSLASH,
136 Application = SDL_SCANCODE_APPLICATION,
137 Power = SDL_SCANCODE_POWER,
138 KpEquals = SDL_SCANCODE_KP_EQUALS,
139 F13 = SDL_SCANCODE_F13,
140 F14 = SDL_SCANCODE_F14,
141 F15 = SDL_SCANCODE_F15,
142 F16 = SDL_SCANCODE_F16,
143 F17 = SDL_SCANCODE_F17,
144 F18 = SDL_SCANCODE_F18,
145 F19 = SDL_SCANCODE_F19,
146 F20 = SDL_SCANCODE_F20,
147 F21 = SDL_SCANCODE_F21,
148 F22 = SDL_SCANCODE_F22,
149 F23 = SDL_SCANCODE_F23,
150 F24 = SDL_SCANCODE_F24,
151 Execute = SDL_SCANCODE_EXECUTE,
152 Help = SDL_SCANCODE_HELP,
153 Menu = SDL_SCANCODE_MENU,
154 Select = SDL_SCANCODE_SELECT,
155 Stop = SDL_SCANCODE_STOP,
156 Again = SDL_SCANCODE_AGAIN,
157 Undo = SDL_SCANCODE_UNDO,
158 Cut = SDL_SCANCODE_CUT,
159 Copy = SDL_SCANCODE_COPY,
160 Paste = SDL_SCANCODE_PASTE,
161 Find = SDL_SCANCODE_FIND,
162 Mute = SDL_SCANCODE_MUTE,
163 VolumeUp = SDL_SCANCODE_VOLUMEUP,
164 VolumeDown = SDL_SCANCODE_VOLUMEDOWN,
165 KpComma = SDL_SCANCODE_KP_COMMA,
166 KpEqualsSas400 = SDL_SCANCODE_KP_EQUALSAS400,
167 International1 = SDL_SCANCODE_INTERNATIONAL1,
168 International2 = SDL_SCANCODE_INTERNATIONAL2,
169 International3 = SDL_SCANCODE_INTERNATIONAL3,
170 International4 = SDL_SCANCODE_INTERNATIONAL4,
171 International5 = SDL_SCANCODE_INTERNATIONAL5,
172 International6 = SDL_SCANCODE_INTERNATIONAL6,
173 International7 = SDL_SCANCODE_INTERNATIONAL7,
174 International8 = SDL_SCANCODE_INTERNATIONAL8,
175 International9 = SDL_SCANCODE_INTERNATIONAL9,
176 Lang1 = SDL_SCANCODE_LANG1,
177 Lang2 = SDL_SCANCODE_LANG2,
178 Lang3 = SDL_SCANCODE_LANG3,
179 Lang4 = SDL_SCANCODE_LANG4,
180 Lang5 = SDL_SCANCODE_LANG5,
181 Lang6 = SDL_SCANCODE_LANG6,
182 Lang7 = SDL_SCANCODE_LANG7,
183 Lang8 = SDL_SCANCODE_LANG8,
184 Lang9 = SDL_SCANCODE_LANG9,
185 AltErase = SDL_SCANCODE_ALTERASE,
186 SysReq = SDL_SCANCODE_SYSREQ,
187 Cancel = SDL_SCANCODE_CANCEL,
188 Clear = SDL_SCANCODE_CLEAR,
189 Prior = SDL_SCANCODE_PRIOR,
190 Return2 = SDL_SCANCODE_RETURN2,
191 Separator = SDL_SCANCODE_SEPARATOR,
192 Out = SDL_SCANCODE_OUT,
193 Oper = SDL_SCANCODE_OPER,
194 ClearAgain = SDL_SCANCODE_CLEARAGAIN,
195 Crsel = SDL_SCANCODE_CRSEL,
196 Exsel = SDL_SCANCODE_EXSEL,
197 Kp00 = SDL_SCANCODE_KP_00,
198 Kp000 = SDL_SCANCODE_KP_000,
199 ThousandsSeparator = SDL_SCANCODE_THOUSANDSSEPARATOR,
200 DecimalSeparator = SDL_SCANCODE_DECIMALSEPARATOR,
201 CurrencyUnit = SDL_SCANCODE_CURRENCYUNIT,
202 CurrencySubunit = SDL_SCANCODE_CURRENCYSUBUNIT,
203 KpLeftParen = SDL_SCANCODE_KP_LEFTPAREN,
204 KpRightParan = SDL_SCANCODE_KP_RIGHTPAREN,
205 KpLeftBrace = SDL_SCANCODE_KP_LEFTBRACE,
206 KpRightBrace = SDL_SCANCODE_KP_RIGHTBRACE,
207 KpTab = SDL_SCANCODE_KP_TAB,
208 KpBackspace = SDL_SCANCODE_KP_BACKSPACE,
209 KpA = SDL_SCANCODE_KP_A,
210 KpB = SDL_SCANCODE_KP_B,
211 KpC = SDL_SCANCODE_KP_C,
212 KpD = SDL_SCANCODE_KP_D,
213 KpE = SDL_SCANCODE_KP_E,
214 KpF = SDL_SCANCODE_KP_F,
215 KpXor = SDL_SCANCODE_KP_XOR,
216 KpPower = SDL_SCANCODE_KP_POWER,
217 KpPercent = SDL_SCANCODE_KP_PERCENT,
218 KpLess = SDL_SCANCODE_KP_LESS,
219 KpGreater = SDL_SCANCODE_KP_GREATER,
220 KpAmpersand = SDL_SCANCODE_KP_AMPERSAND,
221 KpDoubleAmpersand = SDL_SCANCODE_KP_DBLAMPERSAND,
222 KpVerticalBar = SDL_SCANCODE_KP_VERTICALBAR,
223 KpDoubleVerticalBar = SDL_SCANCODE_KP_DBLVERTICALBAR,
224 KpColon = SDL_SCANCODE_KP_COLON,
225 KpHash = SDL_SCANCODE_KP_HASH,
226 KpSpace = SDL_SCANCODE_KP_SPACE,
227 KpAt = SDL_SCANCODE_KP_AT,
228 KpExclam = SDL_SCANCODE_KP_EXCLAM,
229 KpMemStore = SDL_SCANCODE_KP_MEMSTORE,
230 KpMemRecall = SDL_SCANCODE_KP_MEMRECALL,
231 KpMemClear = SDL_SCANCODE_KP_MEMCLEAR,
232 KpMemAdd = SDL_SCANCODE_KP_MEMADD,
233 KpMemSubtract = SDL_SCANCODE_KP_MEMSUBTRACT,
234 KpMemMultiply = SDL_SCANCODE_KP_MEMMULTIPLY,
235 KpMemDivide = SDL_SCANCODE_KP_MEMDIVIDE,
236 KpPlusMinus = SDL_SCANCODE_KP_PLUSMINUS,
237 KpClear = SDL_SCANCODE_KP_CLEAR,
238 KpClearEntry = SDL_SCANCODE_KP_CLEARENTRY,
239 KpBinary = SDL_SCANCODE_KP_BINARY,
240 KpOctal = SDL_SCANCODE_KP_OCTAL,
241 KpDecimal = SDL_SCANCODE_KP_DECIMAL,
242 KpHexadecimal = SDL_SCANCODE_KP_HEXADECIMAL,
243 LCtrl = SDL_SCANCODE_LCTRL,
244 LShift = SDL_SCANCODE_LSHIFT,
245 LAlt = SDL_SCANCODE_LALT,
246 LGui = SDL_SCANCODE_LGUI,
247 RCtrl = SDL_SCANCODE_RCTRL,
248 RShift = SDL_SCANCODE_RSHIFT,
249 RAlt = SDL_SCANCODE_RALT,
250 RGui = SDL_SCANCODE_RGUI,
251 Mode = SDL_SCANCODE_MODE,
252 MediaNextTrack = SDL_SCANCODE_MEDIA_NEXT_TRACK,
253 MediaPreviousTrack = SDL_SCANCODE_MEDIA_PREVIOUS_TRACK,
254 MediaStop = SDL_SCANCODE_MEDIA_STOP,
255 MediaPlay = SDL_SCANCODE_MEDIA_PLAY,
256 MediaSelect = SDL_SCANCODE_MEDIA_SELECT,
257 AcSearch = SDL_SCANCODE_AC_SEARCH,
258 AcHome = SDL_SCANCODE_AC_HOME,
259 AcBack = SDL_SCANCODE_AC_BACK,
260 AcForward = SDL_SCANCODE_AC_FORWARD,
261 AcStop = SDL_SCANCODE_AC_STOP,
262 AcRefresh = SDL_SCANCODE_AC_REFRESH,
263 AcBookmarks = SDL_SCANCODE_AC_BOOKMARKS,
264 Eject = SDL_SCANCODE_MEDIA_EJECT,
265 Sleep = SDL_SCANCODE_SLEEP,
266 AudioRewind = SDL_SCANCODE_MEDIA_REWIND,
267 AudioFastForward = SDL_SCANCODE_MEDIA_FAST_FORWARD,
268 SoftLeft = SDL_SCANCODE_SOFTLEFT,
269 SoftRight = SDL_SCANCODE_SOFTRIGHT,
270 Call = SDL_SCANCODE_CALL,
271 EndCall = SDL_SCANCODE_ENDCALL,
273 };
274
276 constexpr int NUM_CURSORS = SDL_SYSTEM_CURSOR_COUNT;
277
279 enum class CursorId {
280 Default = SDL_SYSTEM_CURSOR_DEFAULT,
281 Text = SDL_SYSTEM_CURSOR_TEXT,
282 Wait = SDL_SYSTEM_CURSOR_WAIT,
283 Crosshair = SDL_SYSTEM_CURSOR_CROSSHAIR,
284 Progress = SDL_SYSTEM_CURSOR_PROGRESS,
285 NwseResize = SDL_SYSTEM_CURSOR_NWSE_RESIZE,
286 NeswResize = SDL_SYSTEM_CURSOR_NESW_RESIZE,
287 EwResize = SDL_SYSTEM_CURSOR_EW_RESIZE,
288 NsResize = SDL_SYSTEM_CURSOR_NS_RESIZE,
289 Move = SDL_SYSTEM_CURSOR_MOVE,
290 NotAllowed = SDL_SYSTEM_CURSOR_NOT_ALLOWED,
291 Pointer = SDL_SYSTEM_CURSOR_POINTER,
292 NwResize = SDL_SYSTEM_CURSOR_NW_RESIZE,
293 NResize = SDL_SYSTEM_CURSOR_N_RESIZE,
294 NeResize = SDL_SYSTEM_CURSOR_NE_RESIZE,
295 EResize = SDL_SYSTEM_CURSOR_E_RESIZE,
296 SEResize = SDL_SYSTEM_CURSOR_SE_RESIZE,
297 SResize = SDL_SYSTEM_CURSOR_S_RESIZE,
298 SWResize = SDL_SYSTEM_CURSOR_SW_RESIZE,
299 WResize = SDL_SYSTEM_CURSOR_W_RESIZE,
301 };
302
303 namespace {
306 std::array<SDL_Cursor*, NUM_CURSORS> cursors{nullptr};
307 } // namespace
308
311 using MouseState = struct MouseState {
312 bool anyPressed{false};
313 int lastPressed{-1};
314
315 float xChange{0.0F};
316 float yChange{0.0F};
317
318 Vec2<float> position{0.0F, 0.0F};
319 float z{0.0F};
320
321 std::array<bool, NUM_MOUSE_BUTTONS> pressed{false};
322 std::array<bool, NUM_MOUSE_BUTTONS> released{false};
323 std::array<bool, NUM_MOUSE_BUTTONS> down{false};
324 };
325
327 extern MouseState mouse;
328
336
344
352
356 using KeyState = struct KeyState {
357 std::array<bool, NUM_KEYS> pressed{false};
358 std::array<bool, NUM_KEYS> released{false};
359 std::array<bool, NUM_KEYS> down{false};
360
361 bool anyPressed{false};
362 int lastPressed{-1};
363 };
364
367 extern KeyState keyboard;
368
375 bool getKey(asw::input::Key key);
376
383 bool getKeyDown(asw::input::Key key);
384
391 bool getKeyUp(asw::input::Key key);
392
400 void setCursor(asw::input::CursorId cursor);
401
405 constexpr int NUM_CONTROLLER_BUTTONS = SDL_GAMEPAD_BUTTON_COUNT;
406
410 enum class ControllerButton {
411 A = SDL_GAMEPAD_BUTTON_SOUTH,
412 B = SDL_GAMEPAD_BUTTON_EAST,
413 X = SDL_GAMEPAD_BUTTON_WEST,
414 Y = SDL_GAMEPAD_BUTTON_NORTH,
415 Back = SDL_GAMEPAD_BUTTON_BACK,
416 Guide = SDL_GAMEPAD_BUTTON_GUIDE,
417 Start = SDL_GAMEPAD_BUTTON_START,
418 LeftStick = SDL_GAMEPAD_BUTTON_LEFT_STICK,
419 RightStick = SDL_GAMEPAD_BUTTON_RIGHT_STICK,
420 LeftShoulder = SDL_GAMEPAD_BUTTON_LEFT_SHOULDER,
421 RightShoulder = SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER,
422 DPadUp = SDL_GAMEPAD_BUTTON_DPAD_UP,
423 DPadDown = SDL_GAMEPAD_BUTTON_DPAD_DOWN,
424 DPadLeft = SDL_GAMEPAD_BUTTON_DPAD_LEFT,
425 DPadRight = SDL_GAMEPAD_BUTTON_DPAD_RIGHT,
426 Misc1 = SDL_GAMEPAD_BUTTON_MISC1,
427 RightPaddle1 = SDL_GAMEPAD_BUTTON_RIGHT_PADDLE1,
428 LeftPaddle1 = SDL_GAMEPAD_BUTTON_LEFT_PADDLE1,
429 RightPaddle2 = SDL_GAMEPAD_BUTTON_RIGHT_PADDLE2,
430 LeftPaddle2 = SDL_GAMEPAD_BUTTON_LEFT_PADDLE2,
431 TouchPad = SDL_GAMEPAD_BUTTON_TOUCHPAD,
433 };
434
438 constexpr int NUM_CONTROLLER_AXES = SDL_GAMEPAD_AXIS_COUNT;
439
443 enum class ControllerAxis {
444 LeftX = SDL_GAMEPAD_AXIS_LEFTX,
445 LeftY = SDL_GAMEPAD_AXIS_LEFTY,
446 RightX = SDL_GAMEPAD_AXIS_RIGHTX,
447 RightY = SDL_GAMEPAD_AXIS_RIGHTY,
448 LeftTrigger = SDL_GAMEPAD_AXIS_LEFT_TRIGGER,
449 RightTrigger = SDL_GAMEPAD_AXIS_RIGHT_TRIGGER,
451 };
452
458 std::array<bool, NUM_CONTROLLER_BUTTONS> pressed{false};
459 std::array<bool, NUM_CONTROLLER_BUTTONS> released{false};
460 std::array<bool, NUM_CONTROLLER_BUTTONS> down{false};
461
462 bool anyPressed{false};
463 int lastPressed{-1};
464 float deadZone{0.25F};
465
466 std::array<float, NUM_CONTROLLER_AXES> axis{0};
467 };
468
472 constexpr int MAX_CONTROLLERS = 8;
473
477 extern std::array<ControllerState, MAX_CONTROLLERS> controller;
478
488
498
508
516 float getControllerAxis(int index, asw::input::ControllerAxis axis);
517
521 void setControllerDeadZone(int index, float deadZone);
522
526 int getControllerCount();
527
531 std::string getControllerName(int index);
532
536 void reset();
537} // namespace asw::input
538
539#endif // ASW_INPUT_H
A 2D vector in space.
Definition geometry.h:22
Common geometry types.
std::array< SDL_Cursor *, NUM_CURSORS > cursors
Active cursor stores the current active cursor. It is updated by the core.
Definition input.h:306
void setControllerDeadZone(int index, float deadZone)
Definition input.cpp:115
CursorId
System cursor Ids.
Definition input.h:279
void setCursor(asw::input::CursorId cursor)
Change cursor.
Definition input.cpp:80
std::string getControllerName(int index)
Definition input.cpp:129
float getControllerAxis(int index, asw::input::ControllerAxis axis)
Get the value of a controller axis.
Definition input.cpp:110
bool getMouseButton(asw::input::MouseButton button)
Check if a mouse button is down.
Definition input.cpp:56
int getControllerCount()
Definition input.cpp:119
bool getMouseButtonUp(asw::input::MouseButton button)
Check if a mouse button was released since the last update.
Definition input.cpp:64
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:356
bool getControllerButtonDown(int index, asw::input::ControllerButton button)
Check if a controller button was pressed since the last update.
Definition input.cpp:100
bool getMouseButtonDown(asw::input::MouseButton button)
Check if a mouse button was pressed since the last update.
Definition input.cpp:60
bool getControllerButtonUp(int index, asw::input::ControllerButton button)
Check if a controller button was released since the last update.
Definition input.cpp:105
void reset()
Reset all input states. Called by the core.
Definition input.cpp:10
constexpr int MAX_CONTROLLERS
Maximum number of controllers supported.
Definition input.h:472
std::array< ControllerState, MAX_CONTROLLERS > controller
Global controller state.
Definition input.cpp:8
Key
Enumeration of keys in the ASW library.
Definition input.h:37
bool getKeyUp(asw::input::Key key)
Check if a key was released since the last update.
Definition input.cpp:76
struct MouseState { bool anyPressed{false}; int lastPressed{-1}; float xChange{0.0F}; float yChange{0.0F}; Vec2< float > position{0.0F, 0.0F}; float z{0.0F}; 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:311
constexpr int NUM_CONTROLLER_AXES
Definition input.h:438
constexpr int NUM_MOUSE_BUTTONS
Number of mouse buttons in the ASW library.
Definition input.h:21
constexpr int NUM_CURSORS
Cursor count.
Definition input.h:276
ControllerButton
Mappings from SDL game controller buttons to ASW buttons.
Definition input.h:410
MouseState mouse
Global mouse state.
Definition input.cpp:5
constexpr int NUM_KEYS
Number of keys in the ASW library.
Definition input.h:24
KeyState keyboard
Global keyboard state.
Definition input.cpp:3
MouseButton
Enumeration of mouse buttons in the ASW library.
Definition input.h:27
constexpr int NUM_CONTROLLER_BUTTONS
Number of buttons on a game controller.
Definition input.h:405
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:457
bool getKeyDown(asw::input::Key key)
Check if a key was pressed since the last update.
Definition input.cpp:72
bool getKey(asw::input::Key key)
Check if a key is down.
Definition input.cpp:68
bool getControllerButton(int index, asw::input::ControllerButton button)
Check if a controller button is down.
Definition input.cpp:95
ControllerAxis
Mappings from SDL game controller axes to ASW axes.
Definition input.h:443