X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Finput%2Fkeyboard.cpp;h=cef812c1344d3cdfa5f2c7ef181caf43d29c7f1c;hb=fcd5f24311fcfe772825a75678e038749401a9be;hp=240d700fccc4b45620cbd40c4f728face25f7c58;hpb=999ca92aa9ee10585c0b2094d84364159253982f;p=libs%2Fgui.git diff --git a/source/input/keyboard.cpp b/source/input/keyboard.cpp index 240d700..cef812c 100644 --- a/source/input/keyboard.cpp +++ b/source/input/keyboard.cpp @@ -1,13 +1,21 @@ /* $Id$ This file is part of libmspgbase -Copyright © 2007 Mikko Rasa, Mikkosoft Productions +Copyright © 2007-2008 Mikko Rasa, Mikkosoft Productions Distributed under the LGPL */ +#ifdef WIN32 +#include +#else +#include +#endif #include #include "../gbase/display.h" #include "keyboard.h" +#include "keys.h" + +#define MAPVK_VK_TO_VSC 0 namespace Msp { namespace Input { @@ -17,7 +25,7 @@ Keyboard::Keyboard(Graphics::Window &w): { name="Keyboard"; - buttons.resize(256, false); + buttons.resize(N_KEYS_, false); window.signal_key_press.connect(sigc::mem_fun(this, &Keyboard::key_press)); window.signal_key_release.connect(sigc::mem_fun(this, &Keyboard::key_release)); @@ -25,12 +33,17 @@ Keyboard::Keyboard(Graphics::Window &w): std::string Keyboard::get_button_name(unsigned btn) const { + if(btn==0) + return "None"; #ifndef WIN32 - KeySym ksym=XKeycodeToKeysym(window.get_display().get_display(), btn, 0); - return XKeysymToString(ksym); + const char *str=XKeysymToString(key_to_sys(btn)); + if(!str) + return format("Key %d", btn); + return str; #else char buf[128]; - if(!GetKeyNameText(btn<<16, buf, sizeof(buf))) + unsigned scan=MapVirtualKey(key_to_sys(btn), MAPVK_VK_TO_VSC); + if(!GetKeyNameText(scan<<16, buf, sizeof(buf))) return format("Key %d", btn); return buf; #endif @@ -38,12 +51,12 @@ std::string Keyboard::get_button_name(unsigned btn) const void Keyboard::key_press(unsigned key, unsigned, unsigned) { - set_button_state(key, true, true); + set_button_state(key_from_sys(key), true, true); } void Keyboard::key_release(unsigned key, unsigned) { - set_button_state(key, false, true); + set_button_state(key_from_sys(key), false, true); } } // namespace Input