Przeglądaj źródła

Improved function GetKeyPressed()

To support multiple keys (including function keys)
pull/102/head
raysan5 10 lat temu
rodzic
commit
6ee5718b2e
2 zmienionych plików z 15 dodań i 11 usunięć
  1. +5
    -4
      src/core.c
  2. +10
    -7
      src/raygui.c

+ 5
- 4
src/core.c Wyświetl plik

@ -1735,10 +1735,11 @@ static void KeyCallback(GLFWwindow *window, int key, int scancode, int action, i
TakeScreenshot(); TakeScreenshot();
} }
#endif #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 // GLFW3 Mouse Button Callback, runs on mouse button pressed

+ 10
- 7
src/raygui.c Wyświetl plik

@ -789,11 +789,11 @@ int GuiSpinner(Rectangle bounds, int value, int minValue, int maxValue)
// NOTE: Requires static variables: framesCounter - ERROR! // NOTE: Requires static variables: framesCounter - ERROR!
char *GuiTextBox(Rectangle bounds, char *text) 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; int initPos = bounds.x + 4;
char letter = -1;
int letter = -1;
static int framesCounter = 0; static int framesCounter = 0;
Vector2 mousePoint = GetMousePosition(); Vector2 mousePoint = GetMousePosition();
@ -822,12 +822,15 @@ char *GuiTextBox(Rectangle bounds, char *text)
} }
else 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;
}
} }
} }
} }

Ładowanie…
Anuluj
Zapisz