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 <cstdint>
15#include <string>
16
17#include "./geometry.h"
18
19namespace asw::input {
22constexpr int NUM_MOUSE_BUTTONS = 6;
23
25constexpr int NUM_KEYS = SDL_SCANCODE_COUNT;
26
28enum class MouseButton {
29 Left = SDL_BUTTON_LEFT,
30 Middle = SDL_BUTTON_MIDDLE,
31 Right = SDL_BUTTON_RIGHT,
32 X1 = SDL_BUTTON_X1,
33 X2 = SDL_BUTTON_X2,
35};
36
38enum class Key {
39 Unknown = SDL_SCANCODE_UNKNOWN,
40 A = SDL_SCANCODE_A,
41 B = SDL_SCANCODE_B,
42 C = SDL_SCANCODE_C,
43 D = SDL_SCANCODE_D,
44 E = SDL_SCANCODE_E,
45 F = SDL_SCANCODE_F,
46 G = SDL_SCANCODE_G,
47 H = SDL_SCANCODE_H,
48 I = SDL_SCANCODE_I,
49 J = SDL_SCANCODE_J,
50 K = SDL_SCANCODE_K,
51 L = SDL_SCANCODE_L,
52 M = SDL_SCANCODE_M,
53 N = SDL_SCANCODE_N,
54 O = SDL_SCANCODE_O,
55 P = SDL_SCANCODE_P,
56 Q = SDL_SCANCODE_Q,
57 R = SDL_SCANCODE_R,
58 S = SDL_SCANCODE_S,
59 T = SDL_SCANCODE_T,
60 U = SDL_SCANCODE_U,
61 V = SDL_SCANCODE_V,
62 W = SDL_SCANCODE_W,
63 X = SDL_SCANCODE_X,
64 Y = SDL_SCANCODE_Y,
65 Z = SDL_SCANCODE_Z,
66 Num1 = SDL_SCANCODE_1,
67 Num2 = SDL_SCANCODE_2,
68 Num3 = SDL_SCANCODE_3,
69 Num4 = SDL_SCANCODE_4,
70 Num5 = SDL_SCANCODE_5,
71 Num6 = SDL_SCANCODE_6,
72 Num7 = SDL_SCANCODE_7,
73 Num8 = SDL_SCANCODE_8,
74 Num9 = SDL_SCANCODE_9,
75 Num0 = SDL_SCANCODE_0,
76 Return = SDL_SCANCODE_RETURN,
77 Escape = SDL_SCANCODE_ESCAPE,
78 Backspace = SDL_SCANCODE_BACKSPACE,
79 Tab = SDL_SCANCODE_TAB,
80 Space = SDL_SCANCODE_SPACE,
81 Minus = SDL_SCANCODE_MINUS,
82 Equals = SDL_SCANCODE_EQUALS,
83 LeftBracket = SDL_SCANCODE_LEFTBRACKET,
84 RightBracket = SDL_SCANCODE_RIGHTBRACKET,
85 Backslash = SDL_SCANCODE_BACKSLASH,
86 NonUsHash = SDL_SCANCODE_NONUSHASH,
87 Semicolon = SDL_SCANCODE_SEMICOLON,
88 Apostrophe = SDL_SCANCODE_APOSTROPHE,
89 Grave = SDL_SCANCODE_GRAVE,
90 Comma = SDL_SCANCODE_COMMA,
91 Period = SDL_SCANCODE_PERIOD,
92 Slash = SDL_SCANCODE_SLASH,
93 Capslock = SDL_SCANCODE_CAPSLOCK,
94 F1 = SDL_SCANCODE_F1,
95 F2 = SDL_SCANCODE_F2,
96 F3 = SDL_SCANCODE_F3,
97 F4 = SDL_SCANCODE_F4,
98 F5 = SDL_SCANCODE_F5,
99 F6 = SDL_SCANCODE_F6,
100 F7 = SDL_SCANCODE_F7,
101 F8 = SDL_SCANCODE_F8,
102 F9 = SDL_SCANCODE_F9,
103 F10 = SDL_SCANCODE_F10,
104 F11 = SDL_SCANCODE_F11,
105 F12 = SDL_SCANCODE_F12,
106 PrintScreen = SDL_SCANCODE_PRINTSCREEN,
107 ScrollLock = SDL_SCANCODE_SCROLLLOCK,
108 Pause = SDL_SCANCODE_PAUSE,
109 Insert = SDL_SCANCODE_INSERT,
110 Home = SDL_SCANCODE_HOME,
111 PageUp = SDL_SCANCODE_PAGEUP,
112 Delete = SDL_SCANCODE_DELETE,
113 End = SDL_SCANCODE_END,
114 PageDown = SDL_SCANCODE_PAGEDOWN,
115 Right = SDL_SCANCODE_RIGHT,
116 Left = SDL_SCANCODE_LEFT,
117 Down = SDL_SCANCODE_DOWN,
118 Up = SDL_SCANCODE_UP,
119 NumLockClear = SDL_SCANCODE_NUMLOCKCLEAR,
120 KpDivide = SDL_SCANCODE_KP_DIVIDE,
121 KpMultiply = SDL_SCANCODE_KP_MULTIPLY,
122 KpMinus = SDL_SCANCODE_KP_MINUS,
123 KpPlus = SDL_SCANCODE_KP_PLUS,
124 KpEnter = SDL_SCANCODE_KP_ENTER,
125 Kp1 = SDL_SCANCODE_KP_1,
126 Kp2 = SDL_SCANCODE_KP_2,
127 Kp3 = SDL_SCANCODE_KP_3,
128 Kp4 = SDL_SCANCODE_KP_4,
129 Kp5 = SDL_SCANCODE_KP_5,
130 Kp6 = SDL_SCANCODE_KP_6,
131 Kp7 = SDL_SCANCODE_KP_7,
132 Kp8 = SDL_SCANCODE_KP_8,
133 Kp9 = SDL_SCANCODE_KP_9,
134 Kp0 = SDL_SCANCODE_KP_0,
135 KpPeriod = SDL_SCANCODE_KP_PERIOD,
136 NonusBackslash = SDL_SCANCODE_NONUSBACKSLASH,
137 Application = SDL_SCANCODE_APPLICATION,
138 Power = SDL_SCANCODE_POWER,
139 KpEquals = SDL_SCANCODE_KP_EQUALS,
140 F13 = SDL_SCANCODE_F13,
141 F14 = SDL_SCANCODE_F14,
142 F15 = SDL_SCANCODE_F15,
143 F16 = SDL_SCANCODE_F16,
144 F17 = SDL_SCANCODE_F17,
145 F18 = SDL_SCANCODE_F18,
146 F19 = SDL_SCANCODE_F19,
147 F20 = SDL_SCANCODE_F20,
148 F21 = SDL_SCANCODE_F21,
149 F22 = SDL_SCANCODE_F22,
150 F23 = SDL_SCANCODE_F23,
151 F24 = SDL_SCANCODE_F24,
152 Execute = SDL_SCANCODE_EXECUTE,
153 Help = SDL_SCANCODE_HELP,
154 Menu = SDL_SCANCODE_MENU,
155 Select = SDL_SCANCODE_SELECT,
156 Stop = SDL_SCANCODE_STOP,
157 Again = SDL_SCANCODE_AGAIN,
158 Undo = SDL_SCANCODE_UNDO,
159 Cut = SDL_SCANCODE_CUT,
160 Copy = SDL_SCANCODE_COPY,
161 Paste = SDL_SCANCODE_PASTE,
162 Find = SDL_SCANCODE_FIND,
163 Mute = SDL_SCANCODE_MUTE,
164 VolumeUp = SDL_SCANCODE_VOLUMEUP,
165 VolumeDown = SDL_SCANCODE_VOLUMEDOWN,
166 KpComma = SDL_SCANCODE_KP_COMMA,
167 KpEqualsSas400 = SDL_SCANCODE_KP_EQUALSAS400,
168 International1 = SDL_SCANCODE_INTERNATIONAL1,
169 International2 = SDL_SCANCODE_INTERNATIONAL2,
170 International3 = SDL_SCANCODE_INTERNATIONAL3,
171 International4 = SDL_SCANCODE_INTERNATIONAL4,
172 International5 = SDL_SCANCODE_INTERNATIONAL5,
173 International6 = SDL_SCANCODE_INTERNATIONAL6,
174 International7 = SDL_SCANCODE_INTERNATIONAL7,
175 International8 = SDL_SCANCODE_INTERNATIONAL8,
176 International9 = SDL_SCANCODE_INTERNATIONAL9,
177 Lang1 = SDL_SCANCODE_LANG1,
178 Lang2 = SDL_SCANCODE_LANG2,
179 Lang3 = SDL_SCANCODE_LANG3,
180 Lang4 = SDL_SCANCODE_LANG4,
181 Lang5 = SDL_SCANCODE_LANG5,
182 Lang6 = SDL_SCANCODE_LANG6,
183 Lang7 = SDL_SCANCODE_LANG7,
184 Lang8 = SDL_SCANCODE_LANG8,
185 Lang9 = SDL_SCANCODE_LANG9,
186 AltErase = SDL_SCANCODE_ALTERASE,
187 SysReq = SDL_SCANCODE_SYSREQ,
188 Cancel = SDL_SCANCODE_CANCEL,
189 Clear = SDL_SCANCODE_CLEAR,
190 Prior = SDL_SCANCODE_PRIOR,
191 Return2 = SDL_SCANCODE_RETURN2,
192 Separator = SDL_SCANCODE_SEPARATOR,
193 Out = SDL_SCANCODE_OUT,
194 Oper = SDL_SCANCODE_OPER,
195 ClearAgain = SDL_SCANCODE_CLEARAGAIN,
196 Crsel = SDL_SCANCODE_CRSEL,
197 Exsel = SDL_SCANCODE_EXSEL,
198 Kp00 = SDL_SCANCODE_KP_00,
199 Kp000 = SDL_SCANCODE_KP_000,
200 ThousandsSeparator = SDL_SCANCODE_THOUSANDSSEPARATOR,
201 DecimalSeparator = SDL_SCANCODE_DECIMALSEPARATOR,
202 CurrencyUnit = SDL_SCANCODE_CURRENCYUNIT,
203 CurrencySubunit = SDL_SCANCODE_CURRENCYSUBUNIT,
204 KpLeftParen = SDL_SCANCODE_KP_LEFTPAREN,
205 KpRightParan = SDL_SCANCODE_KP_RIGHTPAREN,
206 KpLeftBrace = SDL_SCANCODE_KP_LEFTBRACE,
207 KpRightBrace = SDL_SCANCODE_KP_RIGHTBRACE,
208 KpTab = SDL_SCANCODE_KP_TAB,
209 KpBackspace = SDL_SCANCODE_KP_BACKSPACE,
210 KpA = SDL_SCANCODE_KP_A,
211 KpB = SDL_SCANCODE_KP_B,
212 KpC = SDL_SCANCODE_KP_C,
213 KpD = SDL_SCANCODE_KP_D,
214 KpE = SDL_SCANCODE_KP_E,
215 KpF = SDL_SCANCODE_KP_F,
216 KpXor = SDL_SCANCODE_KP_XOR,
217 KpPower = SDL_SCANCODE_KP_POWER,
218 KpPercent = SDL_SCANCODE_KP_PERCENT,
219 KpLess = SDL_SCANCODE_KP_LESS,
220 KpGreater = SDL_SCANCODE_KP_GREATER,
221 KpAmpersand = SDL_SCANCODE_KP_AMPERSAND,
222 KpDoubleAmpersand = SDL_SCANCODE_KP_DBLAMPERSAND,
223 KpVerticalBar = SDL_SCANCODE_KP_VERTICALBAR,
224 KpDoubleVerticalBar = SDL_SCANCODE_KP_DBLVERTICALBAR,
225 KpColon = SDL_SCANCODE_KP_COLON,
226 KpHash = SDL_SCANCODE_KP_HASH,
227 KpSpace = SDL_SCANCODE_KP_SPACE,
228 KpAt = SDL_SCANCODE_KP_AT,
229 KpExclam = SDL_SCANCODE_KP_EXCLAM,
230 KpMemStore = SDL_SCANCODE_KP_MEMSTORE,
231 KpMemRecall = SDL_SCANCODE_KP_MEMRECALL,
232 KpMemClear = SDL_SCANCODE_KP_MEMCLEAR,
233 KpMemAdd = SDL_SCANCODE_KP_MEMADD,
234 KpMemSubtract = SDL_SCANCODE_KP_MEMSUBTRACT,
235 KpMemMultiply = SDL_SCANCODE_KP_MEMMULTIPLY,
236 KpMemDivide = SDL_SCANCODE_KP_MEMDIVIDE,
237 KpPlusMinus = SDL_SCANCODE_KP_PLUSMINUS,
238 KpClear = SDL_SCANCODE_KP_CLEAR,
239 KpClearEntry = SDL_SCANCODE_KP_CLEARENTRY,
240 KpBinary = SDL_SCANCODE_KP_BINARY,
241 KpOctal = SDL_SCANCODE_KP_OCTAL,
242 KpDecimal = SDL_SCANCODE_KP_DECIMAL,
243 KpHexadecimal = SDL_SCANCODE_KP_HEXADECIMAL,
244 LCtrl = SDL_SCANCODE_LCTRL,
245 LShift = SDL_SCANCODE_LSHIFT,
246 LAlt = SDL_SCANCODE_LALT,
247 LGui = SDL_SCANCODE_LGUI,
248 RCtrl = SDL_SCANCODE_RCTRL,
249 RShift = SDL_SCANCODE_RSHIFT,
250 RAlt = SDL_SCANCODE_RALT,
251 RGui = SDL_SCANCODE_RGUI,
252 Mode = SDL_SCANCODE_MODE,
253 MediaNextTrack = SDL_SCANCODE_MEDIA_NEXT_TRACK,
254 MediaPreviousTrack = SDL_SCANCODE_MEDIA_PREVIOUS_TRACK,
255 MediaStop = SDL_SCANCODE_MEDIA_STOP,
256 MediaPlay = SDL_SCANCODE_MEDIA_PLAY,
257 MediaSelect = SDL_SCANCODE_MEDIA_SELECT,
258 AcSearch = SDL_SCANCODE_AC_SEARCH,
259 AcHome = SDL_SCANCODE_AC_HOME,
260 AcBack = SDL_SCANCODE_AC_BACK,
261 AcForward = SDL_SCANCODE_AC_FORWARD,
262 AcStop = SDL_SCANCODE_AC_STOP,
263 AcRefresh = SDL_SCANCODE_AC_REFRESH,
264 AcBookmarks = SDL_SCANCODE_AC_BOOKMARKS,
265 Eject = SDL_SCANCODE_MEDIA_EJECT,
266 Sleep = SDL_SCANCODE_SLEEP,
267 AudioRewind = SDL_SCANCODE_MEDIA_REWIND,
268 AudioFastForward = SDL_SCANCODE_MEDIA_FAST_FORWARD,
269 SoftLeft = SDL_SCANCODE_SOFTLEFT,
270 SoftRight = SDL_SCANCODE_SOFTRIGHT,
271 Call = SDL_SCANCODE_CALL,
272 EndCall = SDL_SCANCODE_ENDCALL,
274};
275
277constexpr int NUM_CURSORS = SDL_SYSTEM_CURSOR_COUNT;
278
280enum class CursorId {
281 Default = SDL_SYSTEM_CURSOR_DEFAULT,
282 Text = SDL_SYSTEM_CURSOR_TEXT,
283 Wait = SDL_SYSTEM_CURSOR_WAIT,
284 Crosshair = SDL_SYSTEM_CURSOR_CROSSHAIR,
285 Progress = SDL_SYSTEM_CURSOR_PROGRESS,
286 NwseResize = SDL_SYSTEM_CURSOR_NWSE_RESIZE,
287 NeswResize = SDL_SYSTEM_CURSOR_NESW_RESIZE,
288 EwResize = SDL_SYSTEM_CURSOR_EW_RESIZE,
289 NsResize = SDL_SYSTEM_CURSOR_NS_RESIZE,
290 Move = SDL_SYSTEM_CURSOR_MOVE,
291 NotAllowed = SDL_SYSTEM_CURSOR_NOT_ALLOWED,
292 Pointer = SDL_SYSTEM_CURSOR_POINTER,
293 NwResize = SDL_SYSTEM_CURSOR_NW_RESIZE,
294 NResize = SDL_SYSTEM_CURSOR_N_RESIZE,
295 NeResize = SDL_SYSTEM_CURSOR_NE_RESIZE,
296 EResize = SDL_SYSTEM_CURSOR_E_RESIZE,
297 SEResize = SDL_SYSTEM_CURSOR_SE_RESIZE,
298 SResize = SDL_SYSTEM_CURSOR_S_RESIZE,
299 SWResize = SDL_SYSTEM_CURSOR_SW_RESIZE,
300 WResize = SDL_SYSTEM_CURSOR_W_RESIZE,
302};
303
306using MouseState = struct MouseState {
307 bool any_pressed { false };
308 int last_pressed { -1 };
309
310 Vec2<float> change { 0.0F, 0.0F };
311 Vec2<float> position { 0.0F, 0.0F };
312 float z { 0.0F };
313
314 std::array<bool, NUM_MOUSE_BUTTONS> pressed { false };
315 std::array<bool, NUM_MOUSE_BUTTONS> released { false };
316 std::array<bool, NUM_MOUSE_BUTTONS> down { false };
317};
318
323const MouseState& get_mouse();
324
332
340
348
352using KeyState = struct KeyState {
353 std::array<bool, NUM_KEYS> pressed { false };
354 std::array<bool, NUM_KEYS> released { false };
355 std::array<bool, NUM_KEYS> down { false };
356 std::array<bool, NUM_KEYS> repeated { false };
357
358 bool any_pressed { false };
359 int last_pressed { -1 };
360};
361
366const KeyState& get_keyboard();
367
374bool get_key(asw::input::Key key);
375
383
394
402
411
416void set_cursor_visible(bool visible);
417
423
429
435
441void simulate_mouse_move(const asw::Vec2<float>& position);
442
448
454
456constexpr int NUM_CONTROLLER_BUTTONS = SDL_GAMEPAD_BUTTON_COUNT;
457
460 A = SDL_GAMEPAD_BUTTON_SOUTH,
461 B = SDL_GAMEPAD_BUTTON_EAST,
462 X = SDL_GAMEPAD_BUTTON_WEST,
463 Y = SDL_GAMEPAD_BUTTON_NORTH,
464 Back = SDL_GAMEPAD_BUTTON_BACK,
465 Guide = SDL_GAMEPAD_BUTTON_GUIDE,
466 Start = SDL_GAMEPAD_BUTTON_START,
467 LeftStick = SDL_GAMEPAD_BUTTON_LEFT_STICK,
468 RightStick = SDL_GAMEPAD_BUTTON_RIGHT_STICK,
469 LeftShoulder = SDL_GAMEPAD_BUTTON_LEFT_SHOULDER,
470 RightShoulder = SDL_GAMEPAD_BUTTON_RIGHT_SHOULDER,
471 DPadUp = SDL_GAMEPAD_BUTTON_DPAD_UP,
472 DPadDown = SDL_GAMEPAD_BUTTON_DPAD_DOWN,
473 DPadLeft = SDL_GAMEPAD_BUTTON_DPAD_LEFT,
474 DPadRight = SDL_GAMEPAD_BUTTON_DPAD_RIGHT,
475 Misc1 = SDL_GAMEPAD_BUTTON_MISC1,
476 RightPaddle1 = SDL_GAMEPAD_BUTTON_RIGHT_PADDLE1,
477 LeftPaddle1 = SDL_GAMEPAD_BUTTON_LEFT_PADDLE1,
478 RightPaddle2 = SDL_GAMEPAD_BUTTON_RIGHT_PADDLE2,
479 LeftPaddle2 = SDL_GAMEPAD_BUTTON_LEFT_PADDLE2,
480 TouchPad = SDL_GAMEPAD_BUTTON_TOUCHPAD,
482};
483
485constexpr int NUM_CONTROLLER_AXES = SDL_GAMEPAD_AXIS_COUNT;
486
488enum class ControllerAxis {
489 LeftX = SDL_GAMEPAD_AXIS_LEFTX,
490 LeftY = SDL_GAMEPAD_AXIS_LEFTY,
491 RightX = SDL_GAMEPAD_AXIS_RIGHTX,
492 RightY = SDL_GAMEPAD_AXIS_RIGHTY,
493 LeftTrigger = SDL_GAMEPAD_AXIS_LEFT_TRIGGER,
494 RightTrigger = SDL_GAMEPAD_AXIS_RIGHT_TRIGGER,
496};
497
503constexpr uint32_t ANY_CONTROLLER = UINT32_MAX;
504
506enum class ControllerStick {
507 Left,
508 Right,
509};
510
512enum class InputDevice {
515};
516
523bool get_controller_button(uint32_t index, asw::input::ControllerButton button);
524
532
539bool get_controller_button_up(uint32_t index, asw::input::ControllerButton button);
540
551float get_controller_axis(uint32_t index, asw::input::ControllerAxis axis);
552
560
567void set_controller_dead_zone(uint32_t index, float dead_zone);
568
585 uint32_t index, float low_frequency, float high_frequency, uint32_t duration_ms);
586
602bool rumble_controller_triggers(uint32_t index, float left, float right, uint32_t duration_ms);
603
610bool controller_has_rumble(uint32_t index);
611
619bool controller_has_trigger_rumble(uint32_t index);
620
630
642
649bool is_controller_connected(uint32_t index);
650
652std::string get_controller_name(uint32_t index);
653
658const std::string& get_text_input();
659
661void reset();
662
664void _shutdown();
665
667
669void _append_text(const char* text);
670
676void _key_down(SDL_Scancode scancode, bool repeat = false);
677
679void _key_up(SDL_Scancode scancode);
680
682void _mouse_button_down(uint8_t button);
683
685void _mouse_button_up(uint8_t button);
686
688void _mouse_motion(float x, float y, float delta_x, float delta_y);
689
691void _mouse_wheel(float delta_z);
692
694void _controller_added(SDL_JoystickID id);
695
697void _controller_removed(SDL_JoystickID id);
698
700void _controller_axis_motion(SDL_JoystickID id, uint32_t axis, float value);
701
703void _controller_button_down(SDL_JoystickID id, uint32_t button);
704
706void _controller_button_up(SDL_JoystickID id, uint32_t button);
707
708} // namespace asw::input
709
710#endif // ASW_INPUT_H
A 2D vector in space.
Definition geometry.h:27
Common geometry types.
void _mouse_button_up(uint8_t button)
Mouse button up hook.
Definition input.cpp:622
bool get_controller_button_up(uint32_t index, asw::input::ControllerButton button)
Check if a controller button was released since the last update.
Definition input.cpp:459
void _shutdown()
Free cached cursors. Called by asw::core::shutdown().
Definition input.cpp:216
bool get_controller_button_down(uint32_t index, asw::input::ControllerButton button)
Check if a controller button was pressed since the last update.
Definition input.cpp:453
bool get_key(asw::input::Key key)
Check if a key is down.
Definition input.cpp:423
void _mouse_button_down(uint8_t button)
Mouse button down hook.
Definition input.cpp:607
InputDevice get_last_device()
Get the device the player used most recently.
Definition input.cpp:558
void set_cursor_visible(bool visible)
Show or hide the mouse cursor, for games that draw their own.
Definition input.cpp:315
bool is_controller_connected(uint32_t index)
Check if a controller is connected at an index.
Definition input.cpp:568
bool get_controller_button(uint32_t index, asw::input::ControllerButton button)
Check if a controller button is down.
Definition input.cpp:447
struct KeyState { std::array< bool, NUM_KEYS > pressed { false }; std::array< bool, NUM_KEYS > released { false }; std::array< bool, NUM_KEYS > down { false }; std::array< bool, NUM_KEYS > repeated { false }; bool any_pressed { false }; int last_pressed { -1 };} KeyState
Keyboard state stores the current state of the keyboard. It is updated by the core.
Definition input.h:352
CursorId
System cursor Ids.
Definition input.h:280
void _key_up(SDL_Scancode scancode)
Key up hook.
Definition input.cpp:601
void simulate_key_down(asw::input::Key key)
Simulate a key being pressed.
Definition input.cpp:374
Vec2< float > get_controller_stick(uint32_t index, asw::input::ControllerStick stick)
Get the position of a controller stick with the dead zone applied.
Definition input.cpp:482
std::string get_controller_name(uint32_t index)
Get the name of a controller.
Definition input.cpp:573
void set_cursor(asw::input::CursorId cursor)
Change cursor.
Definition input.cpp:300
void _controller_removed(SDL_JoystickID id)
Controller removed hook.
Definition input.cpp:683
void simulate_mouse_button_down(asw::input::MouseButton button)
Simulate a mouse button being pressed.
Definition input.cpp:410
void simulate_mouse_button_up(asw::input::MouseButton button)
Simulate a mouse button being released.
Definition input.cpp:415
void simulate_key_up(asw::input::Key key)
Simulate a key being released.
Definition input.cpp:379
bool get_key_up(asw::input::Key key)
Check if a key was released since the last update.
Definition input.cpp:439
InputDevice
Device the player used most recently.
Definition input.h:512
void reset()
Reset all input states. Called by the core.
Definition input.cpp:226
const KeyState & get_keyboard()
Get the current keyboard state.
Definition input.cpp:196
bool rumble_controller(uint32_t index, float low_frequency, float high_frequency, uint32_t duration_ms)
Rumble a controller's main motors.
Definition input.cpp:521
void set_controller_dead_zone(uint32_t index, float dead_zone)
Set the joystick deadzone for a controller.
Definition input.cpp:500
bool get_key_down(asw::input::Key key)
Check if a key was pressed since the last update.
Definition input.cpp:428
void _mouse_wheel(float delta_z)
Mouse wheel hook.
Definition input.cpp:643
Key
Enumeration of keys in the ASW library.
Definition input.h:38
bool get_key_repeat(asw::input::Key key)
Check if a key was pressed or auto-repeated since the last update.
Definition input.cpp:433
int get_controller_count()
Get the number of controller slots.
Definition input.cpp:563
void simulate_mouse_move(const asw::Vec2< float > &position)
Simulate the mouse moving.
Definition input.cpp:384
constexpr uint32_t ANY_CONTROLLER
Pass as a controller index to read every connected controller.
Definition input.h:503
const MouseState & get_mouse()
Get the current mouse state.
Definition input.cpp:201
void _key_down(SDL_Scancode scancode, bool repeat=false)
Key down hook.
Definition input.cpp:584
ControllerStick
Analog sticks on a game controller.
Definition input.h:506
bool get_mouse_button(asw::input::MouseButton button)
Check if a mouse button is down.
Definition input.cpp:282
constexpr int NUM_CONTROLLER_AXES
Number of axes on a game controller.
Definition input.h:485
constexpr int NUM_MOUSE_BUTTONS
Number of mouse buttons in the ASW library.
Definition input.h:22
void _controller_axis_motion(SDL_JoystickID id, uint32_t axis, float value)
Axis moved hook.
Definition input.cpp:705
constexpr int NUM_CURSORS
Cursor count.
Definition input.h:277
bool controller_has_trigger_rumble(uint32_t index)
Check if a controller supports trigger rumble.
Definition input.cpp:551
ControllerButton
Mappings from SDL game controller buttons to ASW buttons.
Definition input.h:459
bool controller_has_rumble(uint32_t index)
Check if a controller supports rumble.
Definition input.cpp:544
float get_controller_axis(uint32_t index, asw::input::ControllerAxis axis)
Get the value of a controller axis with the dead zone applied.
Definition input.cpp:465
bool get_mouse_button_up(asw::input::MouseButton button)
Check if a mouse button was released since the last update.
Definition input.cpp:294
void _controller_added(SDL_JoystickID id)
Controller added hook.
Definition input.cpp:648
bool get_mouse_button_down(asw::input::MouseButton button)
Check if a mouse button was pressed since the last update.
Definition input.cpp:288
bool rumble_controller_triggers(uint32_t index, float left, float right, uint32_t duration_ms)
Rumble a controller's trigger motors.
Definition input.cpp:532
constexpr int NUM_KEYS
Number of keys in the ASW library.
Definition input.h:25
void _append_text(const char *text)
Event Hooks.
Definition input.cpp:211
MouseButton
Enumeration of mouse buttons in the ASW library.
Definition input.h:28
const std::string & get_text_input()
Get the text input received this frame.
Definition input.cpp:206
void _controller_button_down(SDL_JoystickID id, uint32_t button)
Button down hook.
Definition input.cpp:724
constexpr int NUM_CONTROLLER_BUTTONS
Number of buttons on a game controller.
Definition input.h:456
void _controller_button_up(SDL_JoystickID id, uint32_t button)
Button up hook.
Definition input.cpp:743
struct MouseState { bool any_pressed { false }; int last_pressed { -1 }; Vec2< float > change { 0.0F, 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:306
ControllerAxis
Mappings from SDL game controller axes to ASW axes.
Definition input.h:488
void _mouse_motion(float x, float y, float delta_x, float delta_y)
Mouse motion hook.
Definition input.cpp:633