X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Finput%2Fkeys.cpp;h=508c06fb9d24b4a38bdd216b1231924d9a0f4e7b;hb=5d688fbf457b1f4d3bebde431a7f58c898be584c;hp=d7de3b1b326ae007168a4ca324edda30d66356f3;hpb=7a4a508629d370c4a79791c7e62fd6f59e8564e9;p=libs%2Fgui.git diff --git a/source/input/keys.cpp b/source/input/keys.cpp index d7de3b1..508c06f 100644 --- a/source/input/keys.cpp +++ b/source/input/keys.cpp @@ -1,15 +1,11 @@ -/* $Id$ - -This file is part of libmspgbase -Copyright © 2007 Mikko Rasa, Mikkosoft Productions -Distributed under the LGPL -*/ - #include -#ifndef WIN32 +#include +#ifdef WIN32 +#include +#else +#include #include #endif -#include #include "keys.h" using namespace std; @@ -101,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 { @@ -108,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; @@ -129,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