Browse Source

Make unknown keys map to "unknown" in love.keypressed, at least allowing
you to get the (correct) unicode arg. (issue #337)

Bart van Strien 13 years ago
parent
commit
00ee547a1c
1 changed files with 16 additions and 14 deletions
  1. 16 14
      src/modules/event/sdl/Event.cpp

+ 16 - 14
src/modules/event/sdl/Event.cpp

@@ -91,22 +91,24 @@ Message *Event::convert(SDL_Event &e)
 	switch (e.type)
 	{
 	case SDL_KEYDOWN:
-		if (keys.find(e.key.keysym.sym, key) && love::event::Event::keys.find(key, txt))
-		{
-			arg1 = new Variant(txt, strlen(txt));
-			arg2 = new Variant((double) e.key.keysym.unicode);
-			msg = new Message("keypressed", arg1, arg2);
-			arg1->release();
-			arg2->release();
-		}
+		if (!keys.find(e.key.keysym.sym, key))
+			key = love::keyboard::Keyboard::KEY_UNKNOWN;
+		if (!love::event::Event::keys.find(key, txt))
+			txt = "unknown";
+		arg1 = new Variant(txt, strlen(txt));
+		arg2 = new Variant((double) e.key.keysym.unicode);
+		msg = new Message("keypressed", arg1, arg2);
+		arg1->release();
+		arg2->release();
 		break;
 	case SDL_KEYUP:
-		if (keys.find(e.key.keysym.sym, key) && love::event::Event::keys.find(key, txt))
-		{
-			arg1 = new Variant(txt, strlen(txt));
-			msg = new Message("keyreleased", arg1);
-			arg1->release();
-		}
+		if (!keys.find(e.key.keysym.sym, key))
+			key = love::keyboard::Keyboard::KEY_UNKNOWN;
+		if (!love::event::Event::keys.find(key, txt))
+			txt = "unknown";
+		arg1 = new Variant(txt, strlen(txt));
+		msg = new Message("keyreleased", arg1);
+		arg1->release();
 		break;
 	case SDL_MOUSEBUTTONDOWN:
 	case SDL_MOUSEBUTTONUP: