Browse Source

Add dead key support by exposing the "unknown" key

Bart van Strien 14 years ago
parent
commit
db1a2d12ff

+ 2 - 0
src/modules/event/Event.cpp

@@ -228,6 +228,8 @@ namespace event
 		{"power", love::keyboard::Keyboard::KEY_POWER},
 		{"euro", love::keyboard::Keyboard::KEY_EURO},
 		{"undo", love::keyboard::Keyboard::KEY_UNDO},
+
+		{"unknown", love::keyboard::Keyboard::KEY_UNKNOWN},
 	};
 
 	StringMap<love::keyboard::Keyboard::Key, love::keyboard::Keyboard::KEY_MAX_ENUM> Event::keys(Event::keyEntries, sizeof(Event::keyEntries));

+ 3 - 1
src/modules/event/sdl/Event.cpp

@@ -117,7 +117,7 @@ namespace sdl
 		case Event::TYPE_KEY_PRESSED:
 			e.type = SDL_KEYDOWN;
 			e.key.keysym.unicode = (Uint16)m.keyboard.u;
-			return keys.find(m.keyboard.k, e.key.keysym.sym);;
+			return keys.find(m.keyboard.k, e.key.keysym.sym);
 		case Event::TYPE_KEY_RELEASED:
 			e.type = SDL_KEYUP;
 			return keys.find(m.keyboard.k, e.key.keysym.sym);
@@ -290,6 +290,8 @@ namespace sdl
 		{ love::keyboard::Keyboard::KEY_POWER, SDLK_POWER },
 		{ love::keyboard::Keyboard::KEY_EURO, SDLK_EURO },
 		{ love::keyboard::Keyboard::KEY_UNDO, SDLK_UNDO },
+
+		{ love::keyboard::Keyboard::KEY_UNKNOWN, SDLK_UNKNOWN },
 	};
 
 	EnumMap<love::keyboard::Keyboard::Key, SDLKey, love::keyboard::Keyboard::KEY_MAX_ENUM> Event::keys(Event::keyEntries, sizeof(Event::keyEntries));

+ 4 - 4
src/modules/keyboard/Keyboard.h

@@ -1,14 +1,14 @@
 /**
 * Copyright (c) 2006-2011 LOVE Development Team
-* 
+*
 * This software is provided 'as-is', without any express or implied
 * warranty.  In no event will the authors be held liable for any damages
 * arising from the use of this software.
-* 
+*
 * Permission is granted to anyone to use this software for any purpose,
 * including commercial applications, and to alter it and redistribute it
 * freely, subject to the following restrictions:
-* 
+*
 * 1. The origin of this software must not be misrepresented; you must not
 *    claim that you wrote the original software. If you use this software
 *    in a product, an acknowledgment in the product documentation would be
@@ -197,4 +197,4 @@ namespace keyboard
 } // keyboard
 } // love
 
-#endif // LOVE_KEYBOARD_KEYBOARD_H
+#endif // LOVE_KEYBOARD_KEYBOARD_H

+ 9 - 9
src/modules/keyboard/sdl/Keyboard.cpp

@@ -1,14 +1,14 @@
 /**
 * Copyright (c) 2006-2011 LOVE Development Team
-* 
+*
 * This software is provided 'as-is', without any express or implied
 * warranty.  In no event will the authors be held liable for any damages
 * arising from the use of this software.
-* 
+*
 * Permission is granted to anyone to use this software for any purpose,
 * including commercial applications, and to alter it and redistribute it
 * freely, subject to the following restrictions:
-* 
+*
 * 1. The origin of this software must not be misrepresented; you must not
 *    claim that you wrote the original software. If you use this software
 *    in a product, an acknowledgment in the product documentation would be
@@ -34,14 +34,14 @@ namespace sdl
 	bool Keyboard::isDown(Key key) const
 	{
 		SDLKey k;
-		
+
 		if(keys.find(key, k))
-		{		
+		{
 			Uint8 * keystate = SDL_GetKeyState(0);
-			return keystate[(unsigned)k] == 1;	
+			return keystate[(unsigned)k] == 1;
 		}
 
-		return false;	
+		return false;
 	}
 
 	void Keyboard::setKeyRepeat(int delay, int interval) const
@@ -58,7 +58,7 @@ namespace sdl
 		SDL_GetKeyRepeat(&delay, &interval);
 		return delay;
 	}
-	
+
 	int Keyboard::getKeyRepeatInterval() const
 	{
 		int delay, interval = 0;
@@ -66,7 +66,7 @@ namespace sdl
 		return interval;
 	}
 
-	EnumMap<Keyboard::Key, SDLKey, Keyboard::KEY_MAX_ENUM>::Entry Keyboard::keyEntries[] = 
+	EnumMap<Keyboard::Key, SDLKey, Keyboard::KEY_MAX_ENUM>::Entry Keyboard::keyEntries[] =
 	{
 		{ Keyboard::KEY_BACKSPACE, SDLK_BACKSPACE},
 		{ Keyboard::KEY_TAB, SDLK_TAB},