X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Finput%2Fkeys.cpp;h=508c06fb9d24b4a38bdd216b1231924d9a0f4e7b;hb=5d688fbf457b1f4d3bebde431a7f58c898be584c;hp=4446a7f731568fe828d1b823bc93bf56bd00e675;hpb=9164e74de9dc17c74ee9f3cea21c4d247a3835d9;p=libs%2Fgui.git diff --git a/source/input/keys.cpp b/source/input/keys.cpp index 4446a7f..508c06f 100644 --- a/source/input/keys.cpp +++ b/source/input/keys.cpp @@ -1,17 +1,11 @@ -/* $Id$ - -This file is part of libmspgbase -Copyright © 2007 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - #include +#include #ifdef WIN32 #include #else +#include #include #endif -#include #include "keys.h" using namespace std; @@ -103,6 +97,15 @@ unsigned keymap[Msp::Input::N_KEYS_]= #endif }; +unsigned modmap[Msp::Input::N_MODS_]= +{ +#ifndef WIN32 + ShiftMask, ControlMask, Mod1Mask, Mod4Mask +#else + 1, 2, 4, 8 +#endif +}; + } namespace Msp { @@ -110,19 +113,19 @@ namespace Input { unsigned key_from_sys(unsigned code) { - static bool init_done=false; + static bool init_done = false; static map reverse_map; if(!init_done) { for(unsigned i=0; i::const_iterator i=reverse_map.find(code); + map::const_iterator i = reverse_map.find(code); if(i!=reverse_map.end()) return i->second; @@ -131,10 +134,19 @@ unsigned key_from_sys(unsigned code) unsigned key_to_sys(unsigned key) { - if(key>N_KEYS_) - throw InvalidParameterValue("Key out of range"); + if(key>=N_KEYS_) + throw invalid_argument("key_to_sys"); return keymap[key]; } +unsigned mod_from_sys(unsigned mod) +{ + unsigned result = 0; + for(unsigned i=0; i