Improved function GetKeyPressed()

To support multiple keys (including function keys)
This commit is contained in:
raysan5 2016-03-06 19:30:16 +01:00
parent d0e7195a16
commit 6ee5718b2e
2 changed files with 15 additions and 11 deletions

View File

@ -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

View File

@ -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;
}
}
}
}