aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorraysan5 <raysan5@gmail.com>2016-03-06 19:30:16 +0100
committerraysan5 <raysan5@gmail.com>2016-03-06 19:30:16 +0100
commit6ee5718b2e65c69fca695fdf999fa1838c63aa0b (patch)
treecb138571d91cba3af6b6ef94b72608ac648420bb /src
parentd0e7195a16c50b23fd82e7ca7869cc07773ddba2 (diff)
downloadraylib-6ee5718b2e65c69fca695fdf999fa1838c63aa0b.tar.gz
raylib-6ee5718b2e65c69fca695fdf999fa1838c63aa0b.zip
Improved function GetKeyPressed()
To support multiple keys (including function keys)
Diffstat (limited to 'src')
-rw-r--r--src/core.c9
-rw-r--r--src/raygui.c17
2 files changed, 15 insertions, 11 deletions
diff --git a/src/core.c b/src/core.c
index 870ca3b4..6b2321c2 100644
--- a/src/core.c
+++ b/src/core.c
@@ -1735,10 +1735,11 @@ static void KeyCallback(GLFWwindow *window, int key, int scancode, int action, i
TakeScreenshot();
}
#endif
- else currentKeyState[key] = action;
-
- // TODO: Review (and remove) this HACK for GuiTextBox, to deteck back key
- if ((key == 259) && (action == GLFW_PRESS)) lastKeyPressed = 3;
+ else
+ {
+ currentKeyState[key] = action;
+ if (action == GLFW_PRESS) lastKeyPressed = key;
+ }
}
// GLFW3 Mouse Button Callback, runs on mouse button pressed
diff --git a/src/raygui.c b/src/raygui.c
index 3d7a67ec..e66c33b5 100644
--- a/src/raygui.c
+++ b/src/raygui.c
@@ -789,11 +789,11 @@ int GuiSpinner(Rectangle bounds, int value, int minValue, int maxValue)
// NOTE: Requires static variables: framesCounter - ERROR!
char *GuiTextBox(Rectangle bounds, char *text)
{
- #define MAX_CHARS_LENGTH 20
- #define KEY_BACKSPACE_TEXT 3
+ #define MAX_CHARS_LENGTH 20
+ #define KEY_BACKSPACE_TEXT 259 // GLFW BACKSPACE: 3 + 256
int initPos = bounds.x + 4;
- char letter = -1;
+ int letter = -1;
static int framesCounter = 0;
Vector2 mousePoint = GetMousePosition();
@@ -822,12 +822,15 @@ char *GuiTextBox(Rectangle bounds, char *text)
}
else
{
- for (int i = 0; i < MAX_CHARS_LENGTH; i++)
+ if ((letter >= 32) && (letter < 127))
{
- if (text[i] == '\0')
+ for (int i = 0; i < MAX_CHARS_LENGTH; i++)
{
- text[i] = letter;
- break;
+ if (text[i] == '\0')
+ {
+ text[i] = (char)letter;
+ break;
+ }
}
}
}