Selaa lähdekoodia

Improved function GetKeyPressed()

To support multiple keys (including function keys)
raysan5 9 vuotta sitten
vanhempi
commit
6ee5718b2e
2 muutettua tiedostoa jossa 15 lisäystä ja 11 poistoa
  1. 5 4
      src/core.c
  2. 10 7
      src/raygui.c

+ 5 - 4
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

+ 10 - 7
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;
+                        }
                     }
                 }
             }