From 00ee547a1c4ae350ab05f4bdfe0c558a5a62ed18 Mon Sep 17 00:00:00 2001 From: Bart van Strien Date: Fri, 3 Aug 2012 15:51:43 +0200 Subject: [PATCH] Make unknown keys map to "unknown" in love.keypressed, at least allowing you to get the (correct) unicode arg. (issue #337) --- src/modules/event/sdl/Event.cpp | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/modules/event/sdl/Event.cpp b/src/modules/event/sdl/Event.cpp index 0aeff94be..4647c0f57 100644 --- a/src/modules/event/sdl/Event.cpp +++ b/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: