diff --git a/include/eepp/window/cplatformimpl.hpp b/include/eepp/window/cplatformimpl.hpp index 42e028e95..d7950aa55 100644 --- a/include/eepp/window/cplatformimpl.hpp +++ b/include/eepp/window/cplatformimpl.hpp @@ -38,6 +38,9 @@ class cPlatformImpl { /** Maximize the window */ virtual void MaximizeWindow() = 0; + /** @return true if the window is maximized */ + virtual bool IsWindowMaximized() = 0; + /** Hide the window */ virtual void HideWindow() = 0; diff --git a/include/eepp/window/cwindow.hpp b/include/eepp/window/cwindow.hpp index 3426da686..84b19dd45 100644 --- a/include/eepp/window/cwindow.hpp +++ b/include/eepp/window/cwindow.hpp @@ -148,6 +148,9 @@ class EE_API cWindow { /** Maximize the Window */ virtual void Maximize(); + /** @return true if the window is maximized */ + virtual bool IsMaximized(); + /** This will attempt to hide the window */ virtual void Hide(); diff --git a/projects/linux/ee.creator.user b/projects/linux/ee.creator.user index a8df9c1ce..c277487c1 100644 --- a/projects/linux/ee.creator.user +++ b/projects/linux/ee.creator.user @@ -1,6 +1,6 @@ - + ProjectExplorer.Project.ActiveTarget diff --git a/src/eepp/window/backend/SDL2/cinputsdl2.cpp b/src/eepp/window/backend/SDL2/cinputsdl2.cpp index e90d068f2..13e2f1504 100644 --- a/src/eepp/window/backend/SDL2/cinputsdl2.cpp +++ b/src/eepp/window/backend/SDL2/cinputsdl2.cpp @@ -9,6 +9,9 @@ namespace EE { namespace Window { namespace Backend { namespace SDL2 { +static Uint32 KeyCodesTable[ SDL_NUM_SCANCODES ]; +static bool KeyCodesTableInit = false; + cInputSDL::cInputSDL( cWindow * window ) : cInput( window, eeNew( cJoystickManagerSDL, () ) ) { @@ -115,7 +118,7 @@ void cInputSDL::Update() { EEEvent.Type = InputEvent::KeyDown; EEEvent.key.state = SDLEvent.key.state; EEEvent.key.which = SDLEvent.key.windowID; - EEEvent.key.keysym.sym = mKeyCodesTable[ SDLEvent.key.keysym.scancode ]; + EEEvent.key.keysym.sym = KeyCodesTable[ SDLEvent.key.keysym.scancode ]; EEEvent.key.keysym.mod = SDLEvent.key.keysym.mod; EEEvent.key.keysym.unicode = 0; break; @@ -125,7 +128,7 @@ void cInputSDL::Update() { EEEvent.Type = InputEvent::KeyUp; EEEvent.key.state = SDLEvent.key.state; EEEvent.key.which = SDLEvent.key.windowID; - EEEvent.key.keysym.sym = mKeyCodesTable[ SDLEvent.key.keysym.scancode ]; + EEEvent.key.keysym.sym = KeyCodesTable[ SDLEvent.key.keysym.scancode ]; if ( SDLEvent.key.keysym.scancode == SDL_SCANCODE_1 ) { EEEvent.key.state = SDLEvent.key.state; @@ -369,86 +372,91 @@ void cInputSDL::Init() { } void cInputSDL::InitializeTables() { + if ( KeyCodesTableInit ) + return; + Uint32 i; - memset( &mKeyCodesTable[0], 0, SDL_NUM_SCANCODES ); + memset( &KeyCodesTable[0], 0, SDL_NUM_SCANCODES ); for ( i = SDL_SCANCODE_A; i <= SDL_SCANCODE_Z; i++ ) - mKeyCodesTable[ i ] = KEY_A + i - SDL_SCANCODE_A; + KeyCodesTable[ i ] = KEY_A + i - SDL_SCANCODE_A; - mKeyCodesTable[ SDL_SCANCODE_0 ] = KEY_0; - mKeyCodesTable[ SDL_SCANCODE_1 ] = KEY_1; - mKeyCodesTable[ SDL_SCANCODE_2 ] = KEY_2; - mKeyCodesTable[ SDL_SCANCODE_3 ] = KEY_3; - mKeyCodesTable[ SDL_SCANCODE_4 ] = KEY_4; - mKeyCodesTable[ SDL_SCANCODE_5 ] = KEY_5; - mKeyCodesTable[ SDL_SCANCODE_6 ] = KEY_6; - mKeyCodesTable[ SDL_SCANCODE_7 ] = KEY_7; - mKeyCodesTable[ SDL_SCANCODE_8 ] = KEY_8; - mKeyCodesTable[ SDL_SCANCODE_9 ] = KEY_9; - mKeyCodesTable[ SDL_SCANCODE_KP_0 ] = KEY_KP0; - mKeyCodesTable[ SDL_SCANCODE_KP_1 ] = KEY_KP1; - mKeyCodesTable[ SDL_SCANCODE_KP_2 ] = KEY_KP2; - mKeyCodesTable[ SDL_SCANCODE_KP_3 ] = KEY_KP3; - mKeyCodesTable[ SDL_SCANCODE_KP_4 ] = KEY_KP4; - mKeyCodesTable[ SDL_SCANCODE_KP_5 ] = KEY_KP5; - mKeyCodesTable[ SDL_SCANCODE_KP_6 ] = KEY_KP6; - mKeyCodesTable[ SDL_SCANCODE_KP_7 ] = KEY_KP7; - mKeyCodesTable[ SDL_SCANCODE_KP_8 ] = KEY_KP8; - mKeyCodesTable[ SDL_SCANCODE_KP_9 ] = KEY_KP9; - mKeyCodesTable[ SDL_SCANCODE_F1 ] = KEY_F1; - mKeyCodesTable[ SDL_SCANCODE_F2 ] = KEY_F2; - mKeyCodesTable[ SDL_SCANCODE_F3 ] = KEY_F3; - mKeyCodesTable[ SDL_SCANCODE_F4 ] = KEY_F4; - mKeyCodesTable[ SDL_SCANCODE_F5 ] = KEY_F5; - mKeyCodesTable[ SDL_SCANCODE_F6 ] = KEY_F6; - mKeyCodesTable[ SDL_SCANCODE_F7 ] = KEY_F7; - mKeyCodesTable[ SDL_SCANCODE_F8 ] = KEY_F8; - mKeyCodesTable[ SDL_SCANCODE_F9 ] = KEY_F9; - mKeyCodesTable[ SDL_SCANCODE_F10 ] = KEY_F10; - mKeyCodesTable[ SDL_SCANCODE_F11 ] = KEY_F11; - mKeyCodesTable[ SDL_SCANCODE_F12 ] = KEY_F12; - mKeyCodesTable[ SDL_SCANCODE_ESCAPE ] = KEY_ESCAPE; - mKeyCodesTable[ SDL_SCANCODE_MINUS ] = KEY_MINUS; - mKeyCodesTable[ SDL_SCANCODE_EQUALS ] = KEY_EQUALS; - mKeyCodesTable[ SDL_SCANCODE_BACKSPACE ] = KEY_BACKSPACE; - mKeyCodesTable[ SDL_SCANCODE_TAB ] = KEY_TAB; - mKeyCodesTable[ SDL_SCANCODE_RETURN ] = KEY_RETURN; - mKeyCodesTable[ SDL_SCANCODE_SEMICOLON ] = KEY_SEMICOLON; - mKeyCodesTable[ SDL_SCANCODE_BACKSLASH ] = KEY_BACKSLASH; - mKeyCodesTable[ SDL_SCANCODE_COMMA ] = KEY_COMMA; - mKeyCodesTable[ SDL_SCANCODE_SLASH ] = KEY_SLASH; - mKeyCodesTable[ SDL_SCANCODE_KP_SPACE ] = KEY_SPACE; - mKeyCodesTable[ SDL_SCANCODE_INSERT] = KEY_INSERT; - mKeyCodesTable[ SDL_SCANCODE_DELETE ] = KEY_DELETE; - mKeyCodesTable[ SDL_SCANCODE_HOME ] = KEY_HOME; - mKeyCodesTable[ SDL_SCANCODE_END ] = KEY_END; - mKeyCodesTable[ SDL_SCANCODE_PAGEUP ] = KEY_PAGEUP; - mKeyCodesTable[ SDL_SCANCODE_PAGEDOWN ] = KEY_PAGEDOWN; - mKeyCodesTable[ SDL_SCANCODE_LEFT ] = KEY_LEFT; - mKeyCodesTable[ SDL_SCANCODE_RIGHT ] = KEY_RIGHT; - mKeyCodesTable[ SDL_SCANCODE_UP ] = KEY_UP; - mKeyCodesTable[ SDL_SCANCODE_DOWN ] = KEY_DOWN; - mKeyCodesTable[ SDL_SCANCODE_KP_DIVIDE ] = KEY_KP_DIVIDE; - mKeyCodesTable[ SDL_SCANCODE_KP_MULTIPLY ] = KEY_KP_MULTIPLY; - mKeyCodesTable[ SDL_SCANCODE_KP_MINUS ] = KEY_KP_MINUS; - mKeyCodesTable[ SDL_SCANCODE_KP_PLUS ] = KEY_KP_PLUS; - mKeyCodesTable[ SDL_SCANCODE_KP_ENTER ] = KEY_KP_ENTER; - mKeyCodesTable[ SDL_SCANCODE_PRINTSCREEN ] = KEY_PRINT; - mKeyCodesTable[ SDL_SCANCODE_PAUSE ] = KEY_PAUSE; - mKeyCodesTable[ SDL_SCANCODE_KP_EQUALS ] = KEY_KP_EQUALS; - mKeyCodesTable[ SDL_SCANCODE_LSHIFT ] = KEY_LSHIFT; - mKeyCodesTable[ SDL_SCANCODE_RSHIFT ] = KEY_RSHIFT; - mKeyCodesTable[ SDL_SCANCODE_LCTRL ] = KEY_LCTRL; - mKeyCodesTable[ SDL_SCANCODE_RCTRL ] = KEY_RCTRL; - mKeyCodesTable[ SDL_SCANCODE_LALT ] = KEY_LALT; - mKeyCodesTable[ SDL_SCANCODE_RALT ] = KEY_RALT; - mKeyCodesTable[ SDL_SCANCODE_MODE ] = KEY_MODE; - mKeyCodesTable[ SDL_SCANCODE_LGUI ] = KEY_LSUPER; - mKeyCodesTable[ SDL_SCANCODE_RGUI ] = KEY_RSUPER; - mKeyCodesTable[ SDL_SCANCODE_SCROLLLOCK ] = KEY_SCROLLOCK; - mKeyCodesTable[ SDL_SCANCODE_NUMLOCKCLEAR ] = KEY_NUMLOCK; - mKeyCodesTable[ SDL_SCANCODE_CAPSLOCK ] = KEY_CAPSLOCK; + KeyCodesTable[ SDL_SCANCODE_0 ] = KEY_0; + KeyCodesTable[ SDL_SCANCODE_1 ] = KEY_1; + KeyCodesTable[ SDL_SCANCODE_2 ] = KEY_2; + KeyCodesTable[ SDL_SCANCODE_3 ] = KEY_3; + KeyCodesTable[ SDL_SCANCODE_4 ] = KEY_4; + KeyCodesTable[ SDL_SCANCODE_5 ] = KEY_5; + KeyCodesTable[ SDL_SCANCODE_6 ] = KEY_6; + KeyCodesTable[ SDL_SCANCODE_7 ] = KEY_7; + KeyCodesTable[ SDL_SCANCODE_8 ] = KEY_8; + KeyCodesTable[ SDL_SCANCODE_9 ] = KEY_9; + KeyCodesTable[ SDL_SCANCODE_KP_0 ] = KEY_KP0; + KeyCodesTable[ SDL_SCANCODE_KP_1 ] = KEY_KP1; + KeyCodesTable[ SDL_SCANCODE_KP_2 ] = KEY_KP2; + KeyCodesTable[ SDL_SCANCODE_KP_3 ] = KEY_KP3; + KeyCodesTable[ SDL_SCANCODE_KP_4 ] = KEY_KP4; + KeyCodesTable[ SDL_SCANCODE_KP_5 ] = KEY_KP5; + KeyCodesTable[ SDL_SCANCODE_KP_6 ] = KEY_KP6; + KeyCodesTable[ SDL_SCANCODE_KP_7 ] = KEY_KP7; + KeyCodesTable[ SDL_SCANCODE_KP_8 ] = KEY_KP8; + KeyCodesTable[ SDL_SCANCODE_KP_9 ] = KEY_KP9; + KeyCodesTable[ SDL_SCANCODE_F1 ] = KEY_F1; + KeyCodesTable[ SDL_SCANCODE_F2 ] = KEY_F2; + KeyCodesTable[ SDL_SCANCODE_F3 ] = KEY_F3; + KeyCodesTable[ SDL_SCANCODE_F4 ] = KEY_F4; + KeyCodesTable[ SDL_SCANCODE_F5 ] = KEY_F5; + KeyCodesTable[ SDL_SCANCODE_F6 ] = KEY_F6; + KeyCodesTable[ SDL_SCANCODE_F7 ] = KEY_F7; + KeyCodesTable[ SDL_SCANCODE_F8 ] = KEY_F8; + KeyCodesTable[ SDL_SCANCODE_F9 ] = KEY_F9; + KeyCodesTable[ SDL_SCANCODE_F10 ] = KEY_F10; + KeyCodesTable[ SDL_SCANCODE_F11 ] = KEY_F11; + KeyCodesTable[ SDL_SCANCODE_F12 ] = KEY_F12; + KeyCodesTable[ SDL_SCANCODE_ESCAPE ] = KEY_ESCAPE; + KeyCodesTable[ SDL_SCANCODE_MINUS ] = KEY_MINUS; + KeyCodesTable[ SDL_SCANCODE_EQUALS ] = KEY_EQUALS; + KeyCodesTable[ SDL_SCANCODE_BACKSPACE ] = KEY_BACKSPACE; + KeyCodesTable[ SDL_SCANCODE_TAB ] = KEY_TAB; + KeyCodesTable[ SDL_SCANCODE_RETURN ] = KEY_RETURN; + KeyCodesTable[ SDL_SCANCODE_SEMICOLON ] = KEY_SEMICOLON; + KeyCodesTable[ SDL_SCANCODE_BACKSLASH ] = KEY_BACKSLASH; + KeyCodesTable[ SDL_SCANCODE_COMMA ] = KEY_COMMA; + KeyCodesTable[ SDL_SCANCODE_SLASH ] = KEY_SLASH; + KeyCodesTable[ SDL_SCANCODE_KP_SPACE ] = KEY_SPACE; + KeyCodesTable[ SDL_SCANCODE_INSERT] = KEY_INSERT; + KeyCodesTable[ SDL_SCANCODE_DELETE ] = KEY_DELETE; + KeyCodesTable[ SDL_SCANCODE_HOME ] = KEY_HOME; + KeyCodesTable[ SDL_SCANCODE_END ] = KEY_END; + KeyCodesTable[ SDL_SCANCODE_PAGEUP ] = KEY_PAGEUP; + KeyCodesTable[ SDL_SCANCODE_PAGEDOWN ] = KEY_PAGEDOWN; + KeyCodesTable[ SDL_SCANCODE_LEFT ] = KEY_LEFT; + KeyCodesTable[ SDL_SCANCODE_RIGHT ] = KEY_RIGHT; + KeyCodesTable[ SDL_SCANCODE_UP ] = KEY_UP; + KeyCodesTable[ SDL_SCANCODE_DOWN ] = KEY_DOWN; + KeyCodesTable[ SDL_SCANCODE_KP_DIVIDE ] = KEY_KP_DIVIDE; + KeyCodesTable[ SDL_SCANCODE_KP_MULTIPLY ] = KEY_KP_MULTIPLY; + KeyCodesTable[ SDL_SCANCODE_KP_MINUS ] = KEY_KP_MINUS; + KeyCodesTable[ SDL_SCANCODE_KP_PLUS ] = KEY_KP_PLUS; + KeyCodesTable[ SDL_SCANCODE_KP_ENTER ] = KEY_KP_ENTER; + KeyCodesTable[ SDL_SCANCODE_PRINTSCREEN ] = KEY_PRINT; + KeyCodesTable[ SDL_SCANCODE_PAUSE ] = KEY_PAUSE; + KeyCodesTable[ SDL_SCANCODE_KP_EQUALS ] = KEY_KP_EQUALS; + KeyCodesTable[ SDL_SCANCODE_LSHIFT ] = KEY_LSHIFT; + KeyCodesTable[ SDL_SCANCODE_RSHIFT ] = KEY_RSHIFT; + KeyCodesTable[ SDL_SCANCODE_LCTRL ] = KEY_LCTRL; + KeyCodesTable[ SDL_SCANCODE_RCTRL ] = KEY_RCTRL; + KeyCodesTable[ SDL_SCANCODE_LALT ] = KEY_LALT; + KeyCodesTable[ SDL_SCANCODE_RALT ] = KEY_RALT; + KeyCodesTable[ SDL_SCANCODE_MODE ] = KEY_MODE; + KeyCodesTable[ SDL_SCANCODE_LGUI ] = KEY_LSUPER; + KeyCodesTable[ SDL_SCANCODE_RGUI ] = KEY_RSUPER; + KeyCodesTable[ SDL_SCANCODE_SCROLLLOCK ] = KEY_SCROLLOCK; + KeyCodesTable[ SDL_SCANCODE_NUMLOCKCLEAR ] = KEY_NUMLOCK; + KeyCodesTable[ SDL_SCANCODE_CAPSLOCK ] = KEY_CAPSLOCK; + + KeyCodesTableInit = true; } }}}} diff --git a/src/eepp/window/backend/SDL2/cinputsdl2.hpp b/src/eepp/window/backend/SDL2/cinputsdl2.hpp index 2b449ae6f..0af322ffe 100644 --- a/src/eepp/window/backend/SDL2/cinputsdl2.hpp +++ b/src/eepp/window/backend/SDL2/cinputsdl2.hpp @@ -28,8 +28,6 @@ class EE_API cInputSDL : public cInput { virtual void Init(); - Uint32 mKeyCodesTable[ SDL_NUM_SCANCODES ]; - void InitializeTables(); }; diff --git a/src/eepp/window/backend/SFML/cinputsfml.cpp b/src/eepp/window/backend/SFML/cinputsfml.cpp index c09c36069..0d84c64bf 100644 --- a/src/eepp/window/backend/SFML/cinputsfml.cpp +++ b/src/eepp/window/backend/SFML/cinputsfml.cpp @@ -8,6 +8,9 @@ namespace EE { namespace Window { namespace Backend { namespace SFML { +static Uint32 KeyCodesTable[ sf::Keyboard::KeyCount ]; +static bool KeyCodesTableInit = false; + cInputSFML::cInputSFML( cWindow * window ) : cInput( window, eeNew( cJoystickManagerSFML, () ) ), mWinActive( true ) @@ -101,7 +104,7 @@ void cInputSFML::Update() { sf::Keyboard::BackSpace != event.key.code ) { EEEvent.Type = InputEvent::KeyDown; - EEEvent.key.keysym.sym = mKeyCodesTable[ event.key.code ]; + EEEvent.key.keysym.sym = KeyCodesTable[ event.key.code ]; EEEvent.key.keysym.mod = SetMod( event.key ); EEEvent.key.keysym.unicode = 0; } else { @@ -113,7 +116,7 @@ void cInputSFML::Update() { case sf::Event::KeyReleased: { EEEvent.Type = InputEvent::KeyUp; - EEEvent.key.keysym.sym = mKeyCodesTable[ event.key.code ]; + EEEvent.key.keysym.sym = KeyCodesTable[ event.key.code ]; EEEvent.key.keysym.mod = SetMod( event.key ); EEEvent.key.keysym.unicode = 0; break; @@ -229,86 +232,91 @@ Uint32 cInputSFML::SetMod( sf::Event::KeyEvent& key ) { } void cInputSFML::InitializeTables() { + if ( KeyCodesTableInit ) + return; + Uint32 i; for ( i = sf::Keyboard::A; i <= sf::Keyboard::Z; i++ ) - mKeyCodesTable[ i ] = KEY_A + i; + KeyCodesTable[ i ] = KEY_A + i; - mKeyCodesTable[ sf::Keyboard::Num0 ] = KEY_0; - mKeyCodesTable[ sf::Keyboard::Num1 ] = KEY_1; - mKeyCodesTable[ sf::Keyboard::Num2 ] = KEY_2; - mKeyCodesTable[ sf::Keyboard::Num3 ] = KEY_3; - mKeyCodesTable[ sf::Keyboard::Num4 ] = KEY_4; - mKeyCodesTable[ sf::Keyboard::Num5 ] = KEY_5; - mKeyCodesTable[ sf::Keyboard::Num6 ] = KEY_6; - mKeyCodesTable[ sf::Keyboard::Num7 ] = KEY_7; - mKeyCodesTable[ sf::Keyboard::Num8 ] = KEY_8; - mKeyCodesTable[ sf::Keyboard::Num9 ] = KEY_9; - mKeyCodesTable[ sf::Keyboard::Escape ] = KEY_ESCAPE; - mKeyCodesTable[ sf::Keyboard::LControl ] = KEY_LCTRL; - mKeyCodesTable[ sf::Keyboard::LShift ] = KEY_LSHIFT; - mKeyCodesTable[ sf::Keyboard::LAlt ] = KEY_LALT; - mKeyCodesTable[ sf::Keyboard::LSystem ] = KEY_LMETA; - mKeyCodesTable[ sf::Keyboard::RControl ] = KEY_RCTRL; - mKeyCodesTable[ sf::Keyboard::RShift ] = KEY_RSHIFT; - mKeyCodesTable[ sf::Keyboard::RAlt ] = KEY_RALT; - mKeyCodesTable[ sf::Keyboard::RSystem ] = KEY_RMETA; - mKeyCodesTable[ sf::Keyboard::Menu ] = KEY_MENU; - mKeyCodesTable[ sf::Keyboard::LBracket ] = KEY_LEFTBRACKET; - mKeyCodesTable[ sf::Keyboard::RBracket ] = KEY_RIGHTBRACKET; - mKeyCodesTable[ sf::Keyboard::SemiColon ] = KEY_SEMICOLON; - mKeyCodesTable[ sf::Keyboard::Comma ] = KEY_COMMA; - mKeyCodesTable[ sf::Keyboard::Period ] = KEY_PERIOD; - mKeyCodesTable[ sf::Keyboard::Quote ] = KEY_QUOTE; - mKeyCodesTable[ sf::Keyboard::Slash ] = KEY_SLASH; - mKeyCodesTable[ sf::Keyboard::BackSlash ] = KEY_BACKSLASH; - mKeyCodesTable[ sf::Keyboard::Tilde ] = KEY_BACKQUOTE; - mKeyCodesTable[ sf::Keyboard::Equal ] = KEY_EQUALS; - mKeyCodesTable[ sf::Keyboard::Dash ] = KEY_MINUS; - mKeyCodesTable[ sf::Keyboard::Space ] = KEY_SPACE; - mKeyCodesTable[ sf::Keyboard::Return ] = KEY_RETURN; - mKeyCodesTable[ sf::Keyboard::BackSpace ] = KEY_BACKSPACE; - mKeyCodesTable[ sf::Keyboard::Tab ] = KEY_TAB; - mKeyCodesTable[ sf::Keyboard::PageUp ] = KEY_PAGEUP; - mKeyCodesTable[ sf::Keyboard::PageDown ] = KEY_PAGEDOWN; - mKeyCodesTable[ sf::Keyboard::End ] = KEY_END; - mKeyCodesTable[ sf::Keyboard::Home ] = KEY_HOME; - mKeyCodesTable[ sf::Keyboard::Insert ] = KEY_INSERT; - mKeyCodesTable[ sf::Keyboard::Delete ] = KEY_DELETE; - mKeyCodesTable[ sf::Keyboard::Add ] = KEY_KP_PLUS; - mKeyCodesTable[ sf::Keyboard::Subtract ] = KEY_KP_MINUS; - mKeyCodesTable[ sf::Keyboard::Multiply ] = KEY_KP_MULTIPLY; - mKeyCodesTable[ sf::Keyboard::Divide ] = KEY_KP_DIVIDE; - mKeyCodesTable[ sf::Keyboard::Left ] = KEY_LEFT; - mKeyCodesTable[ sf::Keyboard::Right ] = KEY_RIGHT; - mKeyCodesTable[ sf::Keyboard::Up ] = KEY_UP; - mKeyCodesTable[ sf::Keyboard::Down ] = KEY_DOWN; - mKeyCodesTable[ sf::Keyboard::Numpad0 ] = KEY_KP0; - mKeyCodesTable[ sf::Keyboard::Numpad1 ] = KEY_KP1; - mKeyCodesTable[ sf::Keyboard::Numpad2 ] = KEY_KP2; - mKeyCodesTable[ sf::Keyboard::Numpad3 ] = KEY_KP3; - mKeyCodesTable[ sf::Keyboard::Numpad4 ] = KEY_KP4; - mKeyCodesTable[ sf::Keyboard::Numpad5 ] = KEY_KP5; - mKeyCodesTable[ sf::Keyboard::Numpad6 ] = KEY_KP6; - mKeyCodesTable[ sf::Keyboard::Numpad7 ] = KEY_KP7; - mKeyCodesTable[ sf::Keyboard::Numpad8 ] = KEY_KP8; - mKeyCodesTable[ sf::Keyboard::Numpad9 ] = KEY_KP9; - mKeyCodesTable[ sf::Keyboard::F1 ] = KEY_F1; - mKeyCodesTable[ sf::Keyboard::F2 ] = KEY_F2; - mKeyCodesTable[ sf::Keyboard::F3 ] = KEY_F3; - mKeyCodesTable[ sf::Keyboard::F4 ] = KEY_F4; - mKeyCodesTable[ sf::Keyboard::F5 ] = KEY_F5; - mKeyCodesTable[ sf::Keyboard::F6 ] = KEY_F6; - mKeyCodesTable[ sf::Keyboard::F7 ] = KEY_F7; - mKeyCodesTable[ sf::Keyboard::F8 ] = KEY_F8; - mKeyCodesTable[ sf::Keyboard::F9 ] = KEY_F9; - mKeyCodesTable[ sf::Keyboard::F10 ] = KEY_F10; - mKeyCodesTable[ sf::Keyboard::F11 ] = KEY_F11; - mKeyCodesTable[ sf::Keyboard::F12 ] = KEY_F12; - mKeyCodesTable[ sf::Keyboard::F13 ] = KEY_F13; - mKeyCodesTable[ sf::Keyboard::F14 ] = KEY_F14; - mKeyCodesTable[ sf::Keyboard::F15 ] = KEY_F15; - mKeyCodesTable[ sf::Keyboard::Pause ] = KEY_PAUSE; + KeyCodesTable[ sf::Keyboard::Num0 ] = KEY_0; + KeyCodesTable[ sf::Keyboard::Num1 ] = KEY_1; + KeyCodesTable[ sf::Keyboard::Num2 ] = KEY_2; + KeyCodesTable[ sf::Keyboard::Num3 ] = KEY_3; + KeyCodesTable[ sf::Keyboard::Num4 ] = KEY_4; + KeyCodesTable[ sf::Keyboard::Num5 ] = KEY_5; + KeyCodesTable[ sf::Keyboard::Num6 ] = KEY_6; + KeyCodesTable[ sf::Keyboard::Num7 ] = KEY_7; + KeyCodesTable[ sf::Keyboard::Num8 ] = KEY_8; + KeyCodesTable[ sf::Keyboard::Num9 ] = KEY_9; + KeyCodesTable[ sf::Keyboard::Escape ] = KEY_ESCAPE; + KeyCodesTable[ sf::Keyboard::LControl ] = KEY_LCTRL; + KeyCodesTable[ sf::Keyboard::LShift ] = KEY_LSHIFT; + KeyCodesTable[ sf::Keyboard::LAlt ] = KEY_LALT; + KeyCodesTable[ sf::Keyboard::LSystem ] = KEY_LMETA; + KeyCodesTable[ sf::Keyboard::RControl ] = KEY_RCTRL; + KeyCodesTable[ sf::Keyboard::RShift ] = KEY_RSHIFT; + KeyCodesTable[ sf::Keyboard::RAlt ] = KEY_RALT; + KeyCodesTable[ sf::Keyboard::RSystem ] = KEY_RMETA; + KeyCodesTable[ sf::Keyboard::Menu ] = KEY_MENU; + KeyCodesTable[ sf::Keyboard::LBracket ] = KEY_LEFTBRACKET; + KeyCodesTable[ sf::Keyboard::RBracket ] = KEY_RIGHTBRACKET; + KeyCodesTable[ sf::Keyboard::SemiColon ] = KEY_SEMICOLON; + KeyCodesTable[ sf::Keyboard::Comma ] = KEY_COMMA; + KeyCodesTable[ sf::Keyboard::Period ] = KEY_PERIOD; + KeyCodesTable[ sf::Keyboard::Quote ] = KEY_QUOTE; + KeyCodesTable[ sf::Keyboard::Slash ] = KEY_SLASH; + KeyCodesTable[ sf::Keyboard::BackSlash ] = KEY_BACKSLASH; + KeyCodesTable[ sf::Keyboard::Tilde ] = KEY_BACKQUOTE; + KeyCodesTable[ sf::Keyboard::Equal ] = KEY_EQUALS; + KeyCodesTable[ sf::Keyboard::Dash ] = KEY_MINUS; + KeyCodesTable[ sf::Keyboard::Space ] = KEY_SPACE; + KeyCodesTable[ sf::Keyboard::Return ] = KEY_RETURN; + KeyCodesTable[ sf::Keyboard::BackSpace ] = KEY_BACKSPACE; + KeyCodesTable[ sf::Keyboard::Tab ] = KEY_TAB; + KeyCodesTable[ sf::Keyboard::PageUp ] = KEY_PAGEUP; + KeyCodesTable[ sf::Keyboard::PageDown ] = KEY_PAGEDOWN; + KeyCodesTable[ sf::Keyboard::End ] = KEY_END; + KeyCodesTable[ sf::Keyboard::Home ] = KEY_HOME; + KeyCodesTable[ sf::Keyboard::Insert ] = KEY_INSERT; + KeyCodesTable[ sf::Keyboard::Delete ] = KEY_DELETE; + KeyCodesTable[ sf::Keyboard::Add ] = KEY_KP_PLUS; + KeyCodesTable[ sf::Keyboard::Subtract ] = KEY_KP_MINUS; + KeyCodesTable[ sf::Keyboard::Multiply ] = KEY_KP_MULTIPLY; + KeyCodesTable[ sf::Keyboard::Divide ] = KEY_KP_DIVIDE; + KeyCodesTable[ sf::Keyboard::Left ] = KEY_LEFT; + KeyCodesTable[ sf::Keyboard::Right ] = KEY_RIGHT; + KeyCodesTable[ sf::Keyboard::Up ] = KEY_UP; + KeyCodesTable[ sf::Keyboard::Down ] = KEY_DOWN; + KeyCodesTable[ sf::Keyboard::Numpad0 ] = KEY_KP0; + KeyCodesTable[ sf::Keyboard::Numpad1 ] = KEY_KP1; + KeyCodesTable[ sf::Keyboard::Numpad2 ] = KEY_KP2; + KeyCodesTable[ sf::Keyboard::Numpad3 ] = KEY_KP3; + KeyCodesTable[ sf::Keyboard::Numpad4 ] = KEY_KP4; + KeyCodesTable[ sf::Keyboard::Numpad5 ] = KEY_KP5; + KeyCodesTable[ sf::Keyboard::Numpad6 ] = KEY_KP6; + KeyCodesTable[ sf::Keyboard::Numpad7 ] = KEY_KP7; + KeyCodesTable[ sf::Keyboard::Numpad8 ] = KEY_KP8; + KeyCodesTable[ sf::Keyboard::Numpad9 ] = KEY_KP9; + KeyCodesTable[ sf::Keyboard::F1 ] = KEY_F1; + KeyCodesTable[ sf::Keyboard::F2 ] = KEY_F2; + KeyCodesTable[ sf::Keyboard::F3 ] = KEY_F3; + KeyCodesTable[ sf::Keyboard::F4 ] = KEY_F4; + KeyCodesTable[ sf::Keyboard::F5 ] = KEY_F5; + KeyCodesTable[ sf::Keyboard::F6 ] = KEY_F6; + KeyCodesTable[ sf::Keyboard::F7 ] = KEY_F7; + KeyCodesTable[ sf::Keyboard::F8 ] = KEY_F8; + KeyCodesTable[ sf::Keyboard::F9 ] = KEY_F9; + KeyCodesTable[ sf::Keyboard::F10 ] = KEY_F10; + KeyCodesTable[ sf::Keyboard::F11 ] = KEY_F11; + KeyCodesTable[ sf::Keyboard::F12 ] = KEY_F12; + KeyCodesTable[ sf::Keyboard::F13 ] = KEY_F13; + KeyCodesTable[ sf::Keyboard::F14 ] = KEY_F14; + KeyCodesTable[ sf::Keyboard::F15 ] = KEY_F15; + KeyCodesTable[ sf::Keyboard::Pause ] = KEY_PAUSE; + + KeyCodesTableInit = true; } }}}} diff --git a/src/eepp/window/backend/SFML/cinputsfml.hpp b/src/eepp/window/backend/SFML/cinputsfml.hpp index d34ad572c..1fd16d6b9 100644 --- a/src/eepp/window/backend/SFML/cinputsfml.hpp +++ b/src/eepp/window/backend/SFML/cinputsfml.hpp @@ -25,8 +25,6 @@ class EE_API cInputSFML : public cInput { protected: friend class cWindowSFML; - Uint32 mKeyCodesTable[ sf::Keyboard::KeyCount ]; - bool mWinActive; cInputSFML( Window::cWindow * window ); diff --git a/src/eepp/window/backend/allegro5/cinputal.cpp b/src/eepp/window/backend/allegro5/cinputal.cpp index 983572b86..c6cb39221 100644 --- a/src/eepp/window/backend/allegro5/cinputal.cpp +++ b/src/eepp/window/backend/allegro5/cinputal.cpp @@ -6,12 +6,15 @@ namespace EE { namespace Window { namespace Backend { namespace Al { +static Uint32 KeyCodesTable[ ALLEGRO_KEY_MAX ]; +static bool KeyCodesTableInit = false; + cInputAl::cInputAl( cWindow * window ) : cInput( window, eeNew( cJoystickManagerAl, () ) ), mGrab( false ), mZ( 0 ) { - memset( mKeyCodesTable, 0, KEY_LAST ); + memset( KeyCodesTable, 0, KEY_LAST ); } cInputAl::~cInputAl() { @@ -56,7 +59,7 @@ void cInputAl::Update() { EEEvent.Type = InputEvent::KeyDown; } - EEEvent.key.keysym.sym = mKeyCodesTable[ ALEvent.keyboard.keycode ]; + EEEvent.key.keysym.sym = KeyCodesTable[ ALEvent.keyboard.keycode ]; EEEvent.key.keysym.unicode = ALEvent.keyboard.unichar; break; @@ -69,7 +72,7 @@ void cInputAl::Update() { ALLEGRO_KEY_BACKSPACE != ALEvent.keyboard.keycode ) { EEEvent.Type = InputEvent::KeyDown; - EEEvent.key.keysym.sym = mKeyCodesTable[ ALEvent.keyboard.keycode ]; + EEEvent.key.keysym.sym = KeyCodesTable[ ALEvent.keyboard.keycode ]; EEEvent.key.keysym.mod = SetMod( ALEvent.keyboard.modifiers ); EEEvent.key.keysym.unicode = ALEvent.keyboard.unichar; } else { @@ -80,7 +83,7 @@ void cInputAl::Update() { case ALLEGRO_EVENT_KEY_UP: { EEEvent.Type = InputEvent::KeyUp; - EEEvent.key.keysym.sym = mKeyCodesTable[ ALEvent.keyboard.keycode ]; + EEEvent.key.keysym.sym = KeyCodesTable[ ALEvent.keyboard.keycode ]; EEEvent.key.keysym.mod = SetMod( ALEvent.keyboard.modifiers ); EEEvent.key.keysym.unicode = ALEvent.keyboard.unichar; break; @@ -269,104 +272,109 @@ ALLEGRO_DISPLAY * cInputAl::GetDisplay() { } void cInputAl::InitializeTables() { + if ( KeyCodesTableInit ) + return; + Uint32 i; for ( i = ALLEGRO_KEY_A; i <= ALLEGRO_KEY_Z; i++ ) - mKeyCodesTable[ i ] = KEY_A - 1 + i; + KeyCodesTable[ i ] = KEY_A - 1 + i; - mKeyCodesTable[ ALLEGRO_KEY_0 ] = KEY_0; - mKeyCodesTable[ ALLEGRO_KEY_1 ] = KEY_1; - mKeyCodesTable[ ALLEGRO_KEY_2 ] = KEY_2; - mKeyCodesTable[ ALLEGRO_KEY_3 ] = KEY_3; - mKeyCodesTable[ ALLEGRO_KEY_4 ] = KEY_4; - mKeyCodesTable[ ALLEGRO_KEY_5 ] = KEY_5; - mKeyCodesTable[ ALLEGRO_KEY_6 ] = KEY_6; - mKeyCodesTable[ ALLEGRO_KEY_7 ] = KEY_7; - mKeyCodesTable[ ALLEGRO_KEY_8 ] = KEY_8; - mKeyCodesTable[ ALLEGRO_KEY_9 ] = KEY_9; - mKeyCodesTable[ ALLEGRO_KEY_PAD_0 ] = KEY_KP0; - mKeyCodesTable[ ALLEGRO_KEY_PAD_1 ] = KEY_KP1; - mKeyCodesTable[ ALLEGRO_KEY_PAD_2 ] = KEY_KP2; - mKeyCodesTable[ ALLEGRO_KEY_PAD_3 ] = KEY_KP3; - mKeyCodesTable[ ALLEGRO_KEY_PAD_4 ] = KEY_KP4; - mKeyCodesTable[ ALLEGRO_KEY_PAD_5 ] = KEY_KP5; - mKeyCodesTable[ ALLEGRO_KEY_PAD_6 ] = KEY_KP6; - mKeyCodesTable[ ALLEGRO_KEY_PAD_7 ] = KEY_KP7; - mKeyCodesTable[ ALLEGRO_KEY_PAD_8 ] = KEY_KP8; - mKeyCodesTable[ ALLEGRO_KEY_PAD_9 ] = KEY_KP9; - mKeyCodesTable[ ALLEGRO_KEY_F1 ] = KEY_F1; - mKeyCodesTable[ ALLEGRO_KEY_F2 ] = KEY_F2; - mKeyCodesTable[ ALLEGRO_KEY_F3 ] = KEY_F3; - mKeyCodesTable[ ALLEGRO_KEY_F4 ] = KEY_F4; - mKeyCodesTable[ ALLEGRO_KEY_F5 ] = KEY_F5; - mKeyCodesTable[ ALLEGRO_KEY_F6 ] = KEY_F6; - mKeyCodesTable[ ALLEGRO_KEY_F7 ] = KEY_F7; - mKeyCodesTable[ ALLEGRO_KEY_F8 ] = KEY_F8; - mKeyCodesTable[ ALLEGRO_KEY_F9 ] = KEY_F9; - mKeyCodesTable[ ALLEGRO_KEY_F10 ] = KEY_F10; - mKeyCodesTable[ ALLEGRO_KEY_F11 ] = KEY_F11; - mKeyCodesTable[ ALLEGRO_KEY_F12 ] = KEY_F12; - mKeyCodesTable[ ALLEGRO_KEY_ESCAPE ] = KEY_ESCAPE; - //mKeyCodesTable[ ALLEGRO_KEY_TILDE ] = KEY_?; - mKeyCodesTable[ ALLEGRO_KEY_MINUS ] = KEY_MINUS; - mKeyCodesTable[ ALLEGRO_KEY_EQUALS ] = KEY_EQUALS; - mKeyCodesTable[ ALLEGRO_KEY_BACKSPACE ] = KEY_BACKSPACE; - mKeyCodesTable[ ALLEGRO_KEY_TAB ] = KEY_TAB; - //mKeyCodesTable[ ALLEGRO_KEY_OPENBRACE ] = KEY_?; - //mKeyCodesTable[ ALLEGRO_KEY_CLOSEBRACE ] = KEY_?; - mKeyCodesTable[ ALLEGRO_KEY_ENTER ] = KEY_RETURN; - mKeyCodesTable[ ALLEGRO_KEY_SEMICOLON ] = KEY_SEMICOLON; - mKeyCodesTable[ ALLEGRO_KEY_QUOTE ] = KEY_QUOTE; - mKeyCodesTable[ ALLEGRO_KEY_BACKSLASH ] = KEY_BACKSLASH; - //mKeyCodesTable[ ALLEGRO_KEY_BACKSLASH2 ] = KEY_?; - mKeyCodesTable[ ALLEGRO_KEY_COMMA ] = KEY_COMMA; - //mKeyCodesTable[ ALLEGRO_KEY_FULLSTOP ] = KEY_?; - mKeyCodesTable[ ALLEGRO_KEY_SLASH ] = KEY_SLASH; - mKeyCodesTable[ ALLEGRO_KEY_SPACE ] = KEY_SPACE; - mKeyCodesTable[ ALLEGRO_KEY_INSERT] = KEY_INSERT; - mKeyCodesTable[ ALLEGRO_KEY_DELETE ] = KEY_DELETE; - mKeyCodesTable[ ALLEGRO_KEY_HOME ] = KEY_HOME; - mKeyCodesTable[ ALLEGRO_KEY_END ] = KEY_END; - mKeyCodesTable[ ALLEGRO_KEY_PGUP ] = KEY_PAGEUP; - mKeyCodesTable[ ALLEGRO_KEY_PGDN ] = KEY_PAGEDOWN; - mKeyCodesTable[ ALLEGRO_KEY_LEFT ] = KEY_LEFT; - mKeyCodesTable[ ALLEGRO_KEY_RIGHT ] = KEY_RIGHT; - mKeyCodesTable[ ALLEGRO_KEY_UP ] = KEY_UP; - mKeyCodesTable[ ALLEGRO_KEY_DOWN ] = KEY_DOWN; - mKeyCodesTable[ ALLEGRO_KEY_PAD_SLASH ] = KEY_KP_DIVIDE; - mKeyCodesTable[ ALLEGRO_KEY_PAD_ASTERISK ] = KEY_KP_MULTIPLY; - mKeyCodesTable[ ALLEGRO_KEY_PAD_MINUS ] = KEY_KP_MINUS; - mKeyCodesTable[ ALLEGRO_KEY_PAD_PLUS ] = KEY_KP_PLUS; - //mKeyCodesTable[ ALLEGRO_KEY_PAD_DELETE ] = KEY_KP_?; - mKeyCodesTable[ ALLEGRO_KEY_PAD_ENTER ] = KEY_KP_ENTER; - mKeyCodesTable[ ALLEGRO_KEY_PRINTSCREEN ] = KEY_PRINT; - mKeyCodesTable[ ALLEGRO_KEY_PAUSE ] = KEY_PAUSE; - //mKeyCodesTable[ ALLEGRO_KEY_ABNT_C1 ] = KEY_KP_?; - //mKeyCodesTable[ ALLEGRO_KEY_YEN ] = KEY_KP_?; - //mKeyCodesTable[ ALLEGRO_KEY_KANA ] = KEY_KP_?; - //mKeyCodesTable[ ALLEGRO_KEY_CONVERT ] = KEY_KP_?; - //mKeyCodesTable[ ALLEGRO_KEY_NOCONVERT ] = KEY_KP_?; - //mKeyCodesTable[ ALLEGRO_KEY_AT ] = KEY_KP_?; - //mKeyCodesTable[ ALLEGRO_KEY_CIRCUMFLEX ] = KEY_KP_?; - //mKeyCodesTable[ ALLEGRO_KEY_COLON2 ] = KEY_KP_?; - //mKeyCodesTable[ ALLEGRO_KEY_KANJI ] = KEY_KP_?; - mKeyCodesTable[ ALLEGRO_KEY_PAD_EQUALS ] = KEY_KP_EQUALS; - mKeyCodesTable[ ALLEGRO_KEY_BACKQUOTE ] = KEY_BACKQUOTE; - //mKeyCodesTable[ ALLEGRO_KEY_SEMICOLON2 ] = KEY_?; - //mKeyCodesTable[ ALLEGRO_KEY_COMMAND ] = KEY_?; - mKeyCodesTable[ ALLEGRO_KEY_UNKNOWN ] = KEY_UNKNOWN; - mKeyCodesTable[ ALLEGRO_KEY_LSHIFT ] = KEY_LSHIFT; - mKeyCodesTable[ ALLEGRO_KEY_RSHIFT ] = KEY_RSHIFT; - mKeyCodesTable[ ALLEGRO_KEY_LCTRL ] = KEY_LCTRL; - mKeyCodesTable[ ALLEGRO_KEY_RCTRL ] = KEY_RCTRL; - mKeyCodesTable[ ALLEGRO_KEY_ALT ] = KEY_LALT; - mKeyCodesTable[ ALLEGRO_KEY_ALTGR ] = KEY_MODE; //KEY_RALT; - mKeyCodesTable[ ALLEGRO_KEY_LWIN ] = KEY_LSUPER; - mKeyCodesTable[ ALLEGRO_KEY_RWIN ] = KEY_RSUPER; - //mKeyCodesTable[ ALLEGRO_KEY_MENU ] = KEY_?; - mKeyCodesTable[ ALLEGRO_KEY_SCROLLLOCK ] = KEY_SCROLLOCK; - mKeyCodesTable[ ALLEGRO_KEY_NUMLOCK ] = KEY_NUMLOCK; - mKeyCodesTable[ ALLEGRO_KEY_CAPSLOCK ] = KEY_CAPSLOCK; + KeyCodesTable[ ALLEGRO_KEY_0 ] = KEY_0; + KeyCodesTable[ ALLEGRO_KEY_1 ] = KEY_1; + KeyCodesTable[ ALLEGRO_KEY_2 ] = KEY_2; + KeyCodesTable[ ALLEGRO_KEY_3 ] = KEY_3; + KeyCodesTable[ ALLEGRO_KEY_4 ] = KEY_4; + KeyCodesTable[ ALLEGRO_KEY_5 ] = KEY_5; + KeyCodesTable[ ALLEGRO_KEY_6 ] = KEY_6; + KeyCodesTable[ ALLEGRO_KEY_7 ] = KEY_7; + KeyCodesTable[ ALLEGRO_KEY_8 ] = KEY_8; + KeyCodesTable[ ALLEGRO_KEY_9 ] = KEY_9; + KeyCodesTable[ ALLEGRO_KEY_PAD_0 ] = KEY_KP0; + KeyCodesTable[ ALLEGRO_KEY_PAD_1 ] = KEY_KP1; + KeyCodesTable[ ALLEGRO_KEY_PAD_2 ] = KEY_KP2; + KeyCodesTable[ ALLEGRO_KEY_PAD_3 ] = KEY_KP3; + KeyCodesTable[ ALLEGRO_KEY_PAD_4 ] = KEY_KP4; + KeyCodesTable[ ALLEGRO_KEY_PAD_5 ] = KEY_KP5; + KeyCodesTable[ ALLEGRO_KEY_PAD_6 ] = KEY_KP6; + KeyCodesTable[ ALLEGRO_KEY_PAD_7 ] = KEY_KP7; + KeyCodesTable[ ALLEGRO_KEY_PAD_8 ] = KEY_KP8; + KeyCodesTable[ ALLEGRO_KEY_PAD_9 ] = KEY_KP9; + KeyCodesTable[ ALLEGRO_KEY_F1 ] = KEY_F1; + KeyCodesTable[ ALLEGRO_KEY_F2 ] = KEY_F2; + KeyCodesTable[ ALLEGRO_KEY_F3 ] = KEY_F3; + KeyCodesTable[ ALLEGRO_KEY_F4 ] = KEY_F4; + KeyCodesTable[ ALLEGRO_KEY_F5 ] = KEY_F5; + KeyCodesTable[ ALLEGRO_KEY_F6 ] = KEY_F6; + KeyCodesTable[ ALLEGRO_KEY_F7 ] = KEY_F7; + KeyCodesTable[ ALLEGRO_KEY_F8 ] = KEY_F8; + KeyCodesTable[ ALLEGRO_KEY_F9 ] = KEY_F9; + KeyCodesTable[ ALLEGRO_KEY_F10 ] = KEY_F10; + KeyCodesTable[ ALLEGRO_KEY_F11 ] = KEY_F11; + KeyCodesTable[ ALLEGRO_KEY_F12 ] = KEY_F12; + KeyCodesTable[ ALLEGRO_KEY_ESCAPE ] = KEY_ESCAPE; + //KeyCodesTable[ ALLEGRO_KEY_TILDE ] = KEY_?; + KeyCodesTable[ ALLEGRO_KEY_MINUS ] = KEY_MINUS; + KeyCodesTable[ ALLEGRO_KEY_EQUALS ] = KEY_EQUALS; + KeyCodesTable[ ALLEGRO_KEY_BACKSPACE ] = KEY_BACKSPACE; + KeyCodesTable[ ALLEGRO_KEY_TAB ] = KEY_TAB; + //KeyCodesTable[ ALLEGRO_KEY_OPENBRACE ] = KEY_?; + //KeyCodesTable[ ALLEGRO_KEY_CLOSEBRACE ] = KEY_?; + KeyCodesTable[ ALLEGRO_KEY_ENTER ] = KEY_RETURN; + KeyCodesTable[ ALLEGRO_KEY_SEMICOLON ] = KEY_SEMICOLON; + KeyCodesTable[ ALLEGRO_KEY_QUOTE ] = KEY_QUOTE; + KeyCodesTable[ ALLEGRO_KEY_BACKSLASH ] = KEY_BACKSLASH; + //KeyCodesTable[ ALLEGRO_KEY_BACKSLASH2 ] = KEY_?; + KeyCodesTable[ ALLEGRO_KEY_COMMA ] = KEY_COMMA; + //KeyCodesTable[ ALLEGRO_KEY_FULLSTOP ] = KEY_?; + KeyCodesTable[ ALLEGRO_KEY_SLASH ] = KEY_SLASH; + KeyCodesTable[ ALLEGRO_KEY_SPACE ] = KEY_SPACE; + KeyCodesTable[ ALLEGRO_KEY_INSERT] = KEY_INSERT; + KeyCodesTable[ ALLEGRO_KEY_DELETE ] = KEY_DELETE; + KeyCodesTable[ ALLEGRO_KEY_HOME ] = KEY_HOME; + KeyCodesTable[ ALLEGRO_KEY_END ] = KEY_END; + KeyCodesTable[ ALLEGRO_KEY_PGUP ] = KEY_PAGEUP; + KeyCodesTable[ ALLEGRO_KEY_PGDN ] = KEY_PAGEDOWN; + KeyCodesTable[ ALLEGRO_KEY_LEFT ] = KEY_LEFT; + KeyCodesTable[ ALLEGRO_KEY_RIGHT ] = KEY_RIGHT; + KeyCodesTable[ ALLEGRO_KEY_UP ] = KEY_UP; + KeyCodesTable[ ALLEGRO_KEY_DOWN ] = KEY_DOWN; + KeyCodesTable[ ALLEGRO_KEY_PAD_SLASH ] = KEY_KP_DIVIDE; + KeyCodesTable[ ALLEGRO_KEY_PAD_ASTERISK ] = KEY_KP_MULTIPLY; + KeyCodesTable[ ALLEGRO_KEY_PAD_MINUS ] = KEY_KP_MINUS; + KeyCodesTable[ ALLEGRO_KEY_PAD_PLUS ] = KEY_KP_PLUS; + //KeyCodesTable[ ALLEGRO_KEY_PAD_DELETE ] = KEY_KP_?; + KeyCodesTable[ ALLEGRO_KEY_PAD_ENTER ] = KEY_KP_ENTER; + KeyCodesTable[ ALLEGRO_KEY_PRINTSCREEN ] = KEY_PRINT; + KeyCodesTable[ ALLEGRO_KEY_PAUSE ] = KEY_PAUSE; + //KeyCodesTable[ ALLEGRO_KEY_ABNT_C1 ] = KEY_KP_?; + //KeyCodesTable[ ALLEGRO_KEY_YEN ] = KEY_KP_?; + //KeyCodesTable[ ALLEGRO_KEY_KANA ] = KEY_KP_?; + //KeyCodesTable[ ALLEGRO_KEY_CONVERT ] = KEY_KP_?; + //KeyCodesTable[ ALLEGRO_KEY_NOCONVERT ] = KEY_KP_?; + //KeyCodesTable[ ALLEGRO_KEY_AT ] = KEY_KP_?; + //KeyCodesTable[ ALLEGRO_KEY_CIRCUMFLEX ] = KEY_KP_?; + //KeyCodesTable[ ALLEGRO_KEY_COLON2 ] = KEY_KP_?; + //KeyCodesTable[ ALLEGRO_KEY_KANJI ] = KEY_KP_?; + KeyCodesTable[ ALLEGRO_KEY_PAD_EQUALS ] = KEY_KP_EQUALS; + KeyCodesTable[ ALLEGRO_KEY_BACKQUOTE ] = KEY_BACKQUOTE; + //KeyCodesTable[ ALLEGRO_KEY_SEMICOLON2 ] = KEY_?; + //KeyCodesTable[ ALLEGRO_KEY_COMMAND ] = KEY_?; + KeyCodesTable[ ALLEGRO_KEY_UNKNOWN ] = KEY_UNKNOWN; + KeyCodesTable[ ALLEGRO_KEY_LSHIFT ] = KEY_LSHIFT; + KeyCodesTable[ ALLEGRO_KEY_RSHIFT ] = KEY_RSHIFT; + KeyCodesTable[ ALLEGRO_KEY_LCTRL ] = KEY_LCTRL; + KeyCodesTable[ ALLEGRO_KEY_RCTRL ] = KEY_RCTRL; + KeyCodesTable[ ALLEGRO_KEY_ALT ] = KEY_LALT; + KeyCodesTable[ ALLEGRO_KEY_ALTGR ] = KEY_MODE; //KEY_RALT; + KeyCodesTable[ ALLEGRO_KEY_LWIN ] = KEY_LSUPER; + KeyCodesTable[ ALLEGRO_KEY_RWIN ] = KEY_RSUPER; + //KeyCodesTable[ ALLEGRO_KEY_MENU ] = KEY_?; + KeyCodesTable[ ALLEGRO_KEY_SCROLLLOCK ] = KEY_SCROLLOCK; + KeyCodesTable[ ALLEGRO_KEY_NUMLOCK ] = KEY_NUMLOCK; + KeyCodesTable[ ALLEGRO_KEY_CAPSLOCK ] = KEY_CAPSLOCK; + + KeyCodesTableInit = true; } Uint32 cInputAl::SetMod( Uint32 Mod ) { diff --git a/src/eepp/window/backend/allegro5/cinputal.hpp b/src/eepp/window/backend/allegro5/cinputal.hpp index f297cfb68..fe8f2ca5c 100644 --- a/src/eepp/window/backend/allegro5/cinputal.hpp +++ b/src/eepp/window/backend/allegro5/cinputal.hpp @@ -41,8 +41,6 @@ class EE_API cInputAl : public cInput { Uint32 SetMod( Uint32 Mod ); - Uint32 mKeyCodesTable[ ALLEGRO_KEY_MAX ]; - Int32 mZ; }; diff --git a/src/eepp/window/cwindow.cpp b/src/eepp/window/cwindow.cpp index eff63fc51..3cf894529 100644 --- a/src/eepp/window/cwindow.cpp +++ b/src/eepp/window/cwindow.cpp @@ -439,6 +439,13 @@ void cWindow::Maximize() { mPlatform->MaximizeWindow(); } +bool cWindow::IsMaximized() { + if ( NULL != mPlatform ) + return mPlatform->IsWindowMaximized(); + + return false; +} + void cWindow::Hide() { if ( NULL != mPlatform ) mPlatform->HideWindow(); diff --git a/src/eepp/window/platform/null/cnullimpl.cpp b/src/eepp/window/platform/null/cnullimpl.cpp index 524289c57..145326875 100644 --- a/src/eepp/window/platform/null/cnullimpl.cpp +++ b/src/eepp/window/platform/null/cnullimpl.cpp @@ -16,6 +16,10 @@ void cNullImpl::MinimizeWindow() { void cNullImpl::MaximizeWindow() { } +bool cNullImpl::IsWindowMaximized() { + return false; +} + void cNullImpl::HideWindow() { } diff --git a/src/eepp/window/platform/null/cnullimpl.hpp b/src/eepp/window/platform/null/cnullimpl.hpp index f237a9f96..95f6463c1 100644 --- a/src/eepp/window/platform/null/cnullimpl.hpp +++ b/src/eepp/window/platform/null/cnullimpl.hpp @@ -18,6 +18,8 @@ class cNullImpl : public cPlatformImpl { void MaximizeWindow(); + bool IsWindowMaximized(); + void HideWindow(); void RaiseWindow(); diff --git a/src/eepp/window/platform/osx/cosximpl.cpp b/src/eepp/window/platform/osx/cosximpl.cpp index 48c4fad29..0910b78b0 100644 --- a/src/eepp/window/platform/osx/cosximpl.cpp +++ b/src/eepp/window/platform/osx/cosximpl.cpp @@ -20,6 +20,10 @@ void cOSXImpl::MinimizeWindow() { void cOSXImpl::MaximizeWindow() { } +bool cOSXImpl::IsWindowMaximized() { + return false; +} + void cOSXImpl::HideWindow() { } diff --git a/src/eepp/window/platform/osx/cosximpl.hpp b/src/eepp/window/platform/osx/cosximpl.hpp index 2cd640f5e..f5f780166 100644 --- a/src/eepp/window/platform/osx/cosximpl.hpp +++ b/src/eepp/window/platform/osx/cosximpl.hpp @@ -21,6 +21,8 @@ class cOSXImpl : public cPlatformImpl { void MaximizeWindow(); + bool IsWindowMaximized(); + void HideWindow(); void RaiseWindow(); diff --git a/src/eepp/window/platform/win/cwinimpl.cpp b/src/eepp/window/platform/win/cwinimpl.cpp index 1af2b3404..4b35ff398 100644 --- a/src/eepp/window/platform/win/cwinimpl.cpp +++ b/src/eepp/window/platform/win/cwinimpl.cpp @@ -39,6 +39,10 @@ void cWinImpl::MaximizeWindow() { WIN_ShowWindow( mHandler, SW_MAXIMIZE ); } +bool cWinImpl::IsWindowMaximized() { + return 0 != IsZoomed( mHandler ); +} + void cWinImpl::HideWindow() { WIN_ShowWindow( mHandler, SW_HIDE ); } diff --git a/src/eepp/window/platform/win/cwinimpl.hpp b/src/eepp/window/platform/win/cwinimpl.hpp index d1e69f11d..bcf9b3e6c 100644 --- a/src/eepp/window/platform/win/cwinimpl.hpp +++ b/src/eepp/window/platform/win/cwinimpl.hpp @@ -21,6 +21,8 @@ class cWinImpl : public cPlatformImpl { void MaximizeWindow(); + bool IsWindowMaximized(); + void HideWindow(); void RaiseWindow(); diff --git a/src/eepp/window/platform/x11/cx11impl.cpp b/src/eepp/window/platform/x11/cx11impl.cpp index 1265d216d..d4e4bad7d 100644 --- a/src/eepp/window/platform/x11/cx11impl.cpp +++ b/src/eepp/window/platform/x11/cx11impl.cpp @@ -5,9 +5,11 @@ #include #include #include +#include #undef Window #undef Display #undef Cursor +#define XAtom(str) XInternAtom( mDisplay, str, False ) #include #include @@ -53,9 +55,9 @@ void cX11Impl::MaximizeWindow() { Lock(); XEvent xev; - Atom wm_state = XInternAtom( mDisplay, "_NET_WM_STATE", False); - Atom maximizeV = XInternAtom( mDisplay, "_NET_WM_STATE_MAXIMIZED_VERT", False); - Atom maximizeH = XInternAtom( mDisplay, "_NET_WM_STATE_MAXIMIZED_HORZ", False); + Atom wm_state = XAtom( "_NET_WM_STATE" ); + Atom maximizeV = XAtom( "_NET_WM_STATE_MAXIMIZED_VERT" ); + Atom maximizeH = XAtom( "_NET_WM_STATE_MAXIMIZED_HORZ" ); memset( &xev, 0, sizeof(xev) ); xev.type = ClientMessage; @@ -73,6 +75,58 @@ void cX11Impl::MaximizeWindow() { Unlock(); } +bool cX11Impl::IsWindowMaximized() { + Lock(); + + //bool minimized = false; + bool maximizedhorz = false; + bool maximizedvert = false; + Atom type; + int format; + unsigned long numitems, bytesafter; + unsigned char * properties = 0; + + XGetWindowProperty( mDisplay, + mX11Window, + XAtom("_NET_WM_STATE"), + 0, + LONG_MAX, + false, + AnyPropertyType, + &type, + &format, + &numitems, + &bytesafter, &properties + ); + + if( properties && ( format == 32 ) ) { + for(unsigned int i = 0; i < numitems; ++i) { + const Atom prop = (reinterpret_cast(properties))[i]; + + if (prop == XAtom("_NET_WM_STATE_MAXIMIZED_HORZ")) + maximizedhorz = true; + + if (prop == XAtom("_NET_WM_STATE_MAXIMIZED_VERT")) + maximizedvert = true; + + /*if (prop == XAtom("_NET_WM_STATE_HIDDEN")) + minimized = true;*/ + } + } + + XFree(properties); + + XFlush(mDisplay); + + Unlock(); + + if( maximizedhorz && maximizedvert ) { + return true; + } + + return false; +} + void cX11Impl::HideWindow() { Lock(); diff --git a/src/eepp/window/platform/x11/cx11impl.hpp b/src/eepp/window/platform/x11/cx11impl.hpp index 27a826991..bdebe4b7c 100644 --- a/src/eepp/window/platform/x11/cx11impl.hpp +++ b/src/eepp/window/platform/x11/cx11impl.hpp @@ -24,6 +24,8 @@ class cX11Impl : public cPlatformImpl { void MaximizeWindow(); + bool IsWindowMaximized(); + void HideWindow(); void RaiseWindow(); diff --git a/src/test/eetest.cpp b/src/test/eetest.cpp index 558405180..4e6e29962 100644 --- a/src/test/eetest.cpp +++ b/src/test/eetest.cpp @@ -142,7 +142,7 @@ void cEETest::CreateAquaTextureAtlas() { return; #endif - std::string tgpath( MyPath + "data/aquatg/aqua" ); + std::string tgpath( MyPath + "data/aquata/aqua" ); std::string Path( MyPath + "data/aqua" ); if ( !FileSystem::FileExists( tgpath + EE_TEXTURE_ATLAS_EXTENSION ) ) { @@ -258,7 +258,7 @@ void cEETest::CreateUI() { //mTheme = cUITheme::LoadFromPath( eeNew( cUIAquaTheme, ( "aqua", "aqua" ) ), MyPath + "data/aqua/" ); - cTextureAtlasLoader tgl( MyPath + "data/aquatg/aqua" + EE_TEXTURE_ATLAS_EXTENSION ); + cTextureAtlasLoader tgl( MyPath + "data/aquata/aqua" + EE_TEXTURE_ATLAS_EXTENSION ); tgl.GetTexture()->TextureFilter( TEX_FILTER_NEAREST ); mTheme = cUITheme::LoadFromTextureAtlas( eeNew( cUIAquaTheme, ( "aqua", "aqua" ) ), cTextureAtlasManager::instance()->GetByName( "aqua" ) ); @@ -1335,8 +1335,10 @@ void cEETest::Input() { if ( KM->AltPressed() && KM->IsKeyUp( KEY_C ) ) mWindow->Center(); - if ( KM->AltPressed() && KM->IsKeyUp( KEY_M ) && !Con.Active() ) - mWindow->Maximize(); + if ( KM->AltPressed() && KM->IsKeyUp( KEY_M ) && !Con.Active() ) { + if ( !mWindow->IsMaximized() ) + mWindow->Maximize(); + } if ( KM->IsKeyUp(KEY_F4) ) TF->ReloadAllTextures();