summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/platforms/rcore_desktop_sdl.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/platforms/rcore_desktop_sdl.c b/src/platforms/rcore_desktop_sdl.c
index 1aea6854..9dfdd53a 100644
--- a/src/platforms/rcore_desktop_sdl.c
+++ b/src/platforms/rcore_desktop_sdl.c
@@ -1131,7 +1131,17 @@ void PollInputEvents(void)
case SDL_KEYDOWN:
{
KeyboardKey key = ConvertScancodeToKey(event.key.keysym.scancode);
- if (key != KEY_NULL) CORE.Input.Keyboard.currentKeyState[key] = 1;
+
+ if (key != KEY_NULL) {
+ // If key was up, add it to the key pressed queue
+ if ((CORE.Input.Keyboard.currentKeyState[key] == 0) && (CORE.Input.Keyboard.keyPressedQueueCount < MAX_KEY_PRESSED_QUEUE))
+ {
+ CORE.Input.Keyboard.keyPressedQueue[CORE.Input.Keyboard.keyPressedQueueCount] = key;
+ CORE.Input.Keyboard.keyPressedQueueCount++;
+ }
+
+ CORE.Input.Keyboard.currentKeyState[key] = 1;
+ }
if (event.key.repeat) CORE.Input.Keyboard.keyRepeatInFrame[key] = 1;
@@ -1154,14 +1164,6 @@ void PollInputEvents(void)
int codepointSize = 0;
- // Check if there is space available in the key queue
- if (CORE.Input.Keyboard.keyPressedQueueCount < MAX_KEY_PRESSED_QUEUE)
- {
- // Add character (key) to the queue
- CORE.Input.Keyboard.keyPressedQueue[CORE.Input.Keyboard.keyPressedQueueCount] = GetCodepointNext(event.text.text, &codepointSize);
- CORE.Input.Keyboard.keyPressedQueueCount++;
- }
-
// Check if there is space available in the queue
if (CORE.Input.Keyboard.charPressedQueueCount < MAX_CHAR_PRESSED_QUEUE)
{