| 
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -353,6 +353,9 @@ static char currentKeyState[512] = { 0 };       // Registers current frame key s | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			static int lastKeyPressed = -1;                 // Register last key pressed | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			static int exitKey = KEY_ESCAPE;                // Default exit key (ESC) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			static unsigned int inputCharacterQueue[16] = { 0 }; // Input characters stream queue as produced by the operating system text input system | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			static int inputCharacterQueueCount = 0;             // Input characters stream queue count | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			#if defined(PLATFORM_RPI) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// NOTE: For keyboard we will use the standard input (but reconfigured...) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			static struct termios defaultKeyboardSettings;  // Used to store default keyboard settings | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -2226,6 +2229,32 @@ int GetKeyPressed(void) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    return lastKeyPressed; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			bool IsCharAvailable()  | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    return 0 < inputCharacterQueueCount; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			unsigned int GetNextChar() | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			{ | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (inputCharacterQueueCount <= 0) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        return 0; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // take a character from the head | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    unsigned int c = inputCharacterQueue[0]; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // shift elements 1 step toward the head. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    inputCharacterQueueCount--; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    for (int i = 0; i < inputCharacterQueueCount; i++) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        inputCharacterQueue[i] = inputCharacterQueue[i + 1]; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // this is not required, but this can keep clean memory | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    inputCharacterQueue[inputCharacterQueueCount] = 0; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    return c; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// Set a custom key to exit program | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// NOTE: default exitKey is ESCAPE | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			void SetExitKey(int key) | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
					
						
					
				
				
				 | 
			
			 | 
			
			@ -3932,6 +3961,16 @@ static void CharCallback(GLFWwindow *window, unsigned int key) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // http://www.glfw.org/docs/latest/input_guide.html#input_char | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    lastKeyPressed = key; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // If the capacity over, is will waste the old one. | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    static const int CAPACITY = sizeof(inputCharacterQueue) / sizeof(inputCharacterQueue[0]); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    if (CAPACITY <= inputCharacterQueueCount) | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    { | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			        GetNextChar(); | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    } | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    // add to queue | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			    inputCharacterQueue[inputCharacterQueueCount++] = key; | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			} | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			
 | 
			
		
		
	
		
			
			 | 
			 | 
			
			 | 
			
			// GLFW3 CursorEnter Callback, when cursor enters the window | 
			
		
		
	
	
		
			
				| 
				
					
						
					
				
				
				
				 | 
			
			 | 
			
			
 |