diff --git a/backends/events/androidsdl/androidsdl-events.cpp b/backends/events/androidsdl/androidsdl-events.cpp index dcc1c14841c..7c59c642186 100644 --- a/backends/events/androidsdl/androidsdl-events.cpp +++ b/backends/events/androidsdl/androidsdl-events.cpp @@ -75,7 +75,7 @@ bool AndroidSdlEventSource::remapKey(SDL_Event &ev, Common::Event &event) { return false; } -int AndroidSdlEventSource::mapKey(SDLKey sdlKey, SDLMod mod, Uint16 unicode) { +int AndroidSdlEventSource::mapKey(SDL_Keycode sdlKey, SDL_Keymod mod, Uint16 unicode) { Common::KeyCode key = SDLToOSystemKeycode(sdlKey); if (key >= Common::KEYCODE_F1 && key <= Common::KEYCODE_F9) { diff --git a/backends/events/androidsdl/androidsdl-events.h b/backends/events/androidsdl/androidsdl-events.h index 723a23b3511..da042b9ebbb 100644 --- a/backends/events/androidsdl/androidsdl-events.h +++ b/backends/events/androidsdl/androidsdl-events.h @@ -32,7 +32,7 @@ class AndroidSdlEventSource : public SdlEventSource { protected: virtual bool handleMouseButtonDown(SDL_Event &ev, Common::Event &event); virtual bool remapKey(SDL_Event &ev, Common::Event &event); - virtual int mapKey(SDLKey key, SDLMod mod, Uint16 unicode); + virtual int mapKey(SDL_Keycode key, SDL_Keymod mod, Uint16 unicode); }; #endif diff --git a/backends/events/dinguxsdl/dinguxsdl-events.cpp b/backends/events/dinguxsdl/dinguxsdl-events.cpp index 7730e8f9156..fa5f1d37dde 100644 --- a/backends/events/dinguxsdl/dinguxsdl-events.cpp +++ b/backends/events/dinguxsdl/dinguxsdl-events.cpp @@ -144,7 +144,7 @@ bool DINGUXSdlEventSource::remapKey(SDL_Event &ev, Common::Event &event) { return true; } else if (ev.key.keysym.sym == BUT_X) { // '.' skip dialogue ev.key.keysym.sym = SDLK_PERIOD; - ev.key.keysym.mod = (SDLMod)0; + ev.key.keysym.mod = KMOD_NONE; ev.key.keysym.unicode = '.'; } else if (ev.key.keysym.sym == TRIG_L) { // global menu ev.key.keysym.sym = SDLK_F5; diff --git a/backends/events/maemosdl/maemosdl-events.cpp b/backends/events/maemosdl/maemosdl-events.cpp index 9354094f82c..7f0419add6d 100644 --- a/backends/events/maemosdl/maemosdl-events.cpp +++ b/backends/events/maemosdl/maemosdl-events.cpp @@ -35,7 +35,7 @@ MaemoSdlEventSource::MaemoSdlEventSource() : SdlEventSource(), _clickEnabled(tru } struct KeymapEntry { - SDLKey sym; + SDL_Keycode sym; Common::KeyCode keycode; uint16 ascii; }; diff --git a/backends/events/sdl/sdl-events.cpp b/backends/events/sdl/sdl-events.cpp index ceef945b9db..9e14ee6af96 100644 --- a/backends/events/sdl/sdl-events.cpp +++ b/backends/events/sdl/sdl-events.cpp @@ -117,7 +117,7 @@ SdlEventSource::~SdlEventSource() { closeJoystick(); } -int SdlEventSource::mapKey(SDLKey sdlKey, SDLMod mod, Uint16 unicode) { +int SdlEventSource::mapKey(SDL_Keycode sdlKey, SDL_Keymod mod, Uint16 unicode) { Common::KeyCode key = SDLToOSystemKeycode(sdlKey); // Keep unicode in case it's regular ASCII text or in case we didn't get a valid keycode @@ -337,7 +337,7 @@ int16 SdlEventSource::computeJoystickMouseSpeedFactor() const { return speedFactor * 480 / _km.y_max; } -void SdlEventSource::SDLModToOSystemKeyFlags(SDLMod mod, Common::Event &event) { +void SdlEventSource::SDLModToOSystemKeyFlags(SDL_Keymod mod, Common::Event &event) { event.kbd.flags = 0; @@ -347,8 +347,13 @@ void SdlEventSource::SDLModToOSystemKeyFlags(SDLMod mod, Common::Event &event) { event.kbd.flags |= Common::KBD_ALT; if (mod & KMOD_CTRL) event.kbd.flags |= Common::KBD_CTRL; +#if SDL_VERSION_ATLEAST(2, 0, 0) + if (mod & KMOD_GUI) + event.kbd.flags |= Common::KBD_META; +#else if (mod & KMOD_META) event.kbd.flags |= Common::KBD_META; +#endif // Sticky flags if (mod & KMOD_NUM) @@ -357,7 +362,7 @@ void SdlEventSource::SDLModToOSystemKeyFlags(SDLMod mod, Common::Event &event) { event.kbd.flags |= Common::KBD_CAPS; } -Common::KeyCode SdlEventSource::SDLToOSystemKeycode(const SDLKey key) { +Common::KeyCode SdlEventSource::SDLToOSystemKeycode(const SDL_Keycode key) { switch (key) { case SDLK_BACKSPACE: return Common::KEYCODE_BACKSPACE; case SDLK_TAB: return Common::KEYCODE_TAB; @@ -430,16 +435,6 @@ Common::KeyCode SdlEventSource::SDLToOSystemKeycode(const SDLKey key) { case SDLK_y: return Common::KEYCODE_y; case SDLK_z: return Common::KEYCODE_z; case SDLK_DELETE: return Common::KEYCODE_DELETE; - case SDLK_KP0: return Common::KEYCODE_KP0; - case SDLK_KP1: return Common::KEYCODE_KP1; - case SDLK_KP2: return Common::KEYCODE_KP2; - case SDLK_KP3: return Common::KEYCODE_KP3; - case SDLK_KP4: return Common::KEYCODE_KP4; - case SDLK_KP5: return Common::KEYCODE_KP5; - case SDLK_KP6: return Common::KEYCODE_KP6; - case SDLK_KP7: return Common::KEYCODE_KP7; - case SDLK_KP8: return Common::KEYCODE_KP8; - case SDLK_KP9: return Common::KEYCODE_KP9; case SDLK_KP_PERIOD: return Common::KEYCODE_KP_PERIOD; case SDLK_KP_DIVIDE: return Common::KEYCODE_KP_DIVIDE; case SDLK_KP_MULTIPLY: return Common::KEYCODE_KP_MULTIPLY; @@ -471,26 +466,36 @@ Common::KeyCode SdlEventSource::SDLToOSystemKeycode(const SDLKey key) { case SDLK_F13: return Common::KEYCODE_F13; case SDLK_F14: return Common::KEYCODE_F14; case SDLK_F15: return Common::KEYCODE_F15; - case SDLK_NUMLOCK: return Common::KEYCODE_NUMLOCK; case SDLK_CAPSLOCK: return Common::KEYCODE_CAPSLOCK; - case SDLK_SCROLLOCK: return Common::KEYCODE_SCROLLOCK; case SDLK_RSHIFT: return Common::KEYCODE_RSHIFT; case SDLK_LSHIFT: return Common::KEYCODE_LSHIFT; case SDLK_RCTRL: return Common::KEYCODE_RCTRL; case SDLK_LCTRL: return Common::KEYCODE_LCTRL; case SDLK_RALT: return Common::KEYCODE_RALT; case SDLK_LALT: return Common::KEYCODE_LALT; - case SDLK_LSUPER: return Common::KEYCODE_LSUPER; - case SDLK_RSUPER: return Common::KEYCODE_RSUPER; case SDLK_MODE: return Common::KEYCODE_MODE; - case SDLK_COMPOSE: return Common::KEYCODE_COMPOSE; case SDLK_HELP: return Common::KEYCODE_HELP; - case SDLK_PRINT: return Common::KEYCODE_PRINT; case SDLK_SYSREQ: return Common::KEYCODE_SYSREQ; case SDLK_MENU: return Common::KEYCODE_MENU; case SDLK_POWER: return Common::KEYCODE_POWER; case SDLK_UNDO: return Common::KEYCODE_UNDO; #if SDL_VERSION_ATLEAST(2, 0, 0) + case SDLK_SCROLLLOCK: return Common::KEYCODE_SCROLLOCK; + case SDLK_NUMLOCKCLEAR: return Common::KEYCODE_NUMLOCK; + case SDLK_LGUI: return Common::KEYCODE_LSUPER; + case SDLK_RGUI: return Common::KEYCODE_RSUPER; + case SDLK_PRINTSCREEN: return Common::KEYCODE_PRINT; + case SDLK_APPLICATION: return Common::KEYCODE_COMPOSE; + case SDLK_KP_0: return Common::KEYCODE_KP0; + case SDLK_KP_1: return Common::KEYCODE_KP1; + case SDLK_KP_2: return Common::KEYCODE_KP2; + case SDLK_KP_3: return Common::KEYCODE_KP3; + case SDLK_KP_4: return Common::KEYCODE_KP4; + case SDLK_KP_5: return Common::KEYCODE_KP5; + case SDLK_KP_6: return Common::KEYCODE_KP6; + case SDLK_KP_7: return Common::KEYCODE_KP7; + case SDLK_KP_8: return Common::KEYCODE_KP8; + case SDLK_KP_9: return Common::KEYCODE_KP9; case SDLK_PERCENT: return Common::KEYCODE_PERCENT; case SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_GRAVE): return Common::KEYCODE_TILDE; case SDLK_F16: return Common::KEYCODE_F16; @@ -526,6 +531,22 @@ Common::KeyCode SdlEventSource::SDLToOSystemKeycode(const SDLKey key) { case SDLK_AUDIOFASTFORWARD: return Common::KEYCODE_AUDIOFASTFORWARD; #endif #else + case SDLK_SCROLLOCK: return Common::KEYCODE_SCROLLOCK; + case SDLK_NUMLOCK: return Common::KEYCODE_NUMLOCK; + case SDLK_LSUPER: return Common::KEYCODE_LSUPER; + case SDLK_RSUPER: return Common::KEYCODE_RSUPER; + case SDLK_PRINT: return Common::KEYCODE_PRINT; + case SDLK_COMPOSE: return Common::KEYCODE_COMPOSE; + case SDLK_KP0: return Common::KEYCODE_KP0; + case SDLK_KP1: return Common::KEYCODE_KP1; + case SDLK_KP2: return Common::KEYCODE_KP2; + case SDLK_KP3: return Common::KEYCODE_KP3; + case SDLK_KP4: return Common::KEYCODE_KP4; + case SDLK_KP5: return Common::KEYCODE_KP5; + case SDLK_KP6: return Common::KEYCODE_KP6; + case SDLK_KP7: return Common::KEYCODE_KP7; + case SDLK_KP8: return Common::KEYCODE_KP8; + case SDLK_KP9: return Common::KEYCODE_KP9; case SDLK_WORLD_16: return Common::KEYCODE_TILDE; case SDLK_BREAK: return Common::KEYCODE_BREAK; case SDLK_LMETA: return Common::KEYCODE_LMETA; @@ -730,10 +751,11 @@ bool SdlEventSource::handleKeyDown(SDL_Event &ev, Common::Event &event) { SDLModToOSystemKeyFlags(SDL_GetModState(), event); - SDLKey sdlKeycode = obtainKeycode(ev.key.keysym); + SDL_Keycode sdlKeycode = obtainKeycode(ev.key.keysym); + Common::KeyCode key = SDLToOSystemKeycode(sdlKeycode); // Handle scroll lock as a key modifier - if (sdlKeycode == SDLK_SCROLLOCK) + if (key == Common::KEYCODE_SCROLLOCK) _scrollLock = !_scrollLock; if (_scrollLock) @@ -743,8 +765,8 @@ bool SdlEventSource::handleKeyDown(SDL_Event &ev, Common::Event &event) { return true; event.type = Common::EVENT_KEYDOWN; - event.kbd.keycode = SDLToOSystemKeycode(sdlKeycode); - event.kbd.ascii = mapKey(sdlKeycode, (SDLMod)ev.key.keysym.mod, obtainUnicode(ev.key.keysym)); + event.kbd.keycode = key; + event.kbd.ascii = mapKey(sdlKeycode, (SDL_Keymod)ev.key.keysym.mod, obtainUnicode(ev.key.keysym)); #if SDL_VERSION_ATLEAST(2, 0, 0) event.kbdRepeat = ev.key.repeat; @@ -757,12 +779,12 @@ bool SdlEventSource::handleKeyUp(SDL_Event &ev, Common::Event &event) { if (remapKey(ev, event)) return true; - SDLKey sdlKeycode = obtainKeycode(ev.key.keysym); - SDLMod mod = SDL_GetModState(); + SDL_Keycode sdlKeycode = obtainKeycode(ev.key.keysym); + SDL_Keymod mod = SDL_GetModState(); event.type = Common::EVENT_KEYUP; event.kbd.keycode = SDLToOSystemKeycode(sdlKeycode); - event.kbd.ascii = mapKey(sdlKeycode, (SDLMod)ev.key.keysym.mod, 0); + event.kbd.ascii = mapKey(sdlKeycode, (SDL_Keymod)ev.key.keysym.mod, 0); SDLModToOSystemKeyFlags(mod, event); @@ -1126,7 +1148,7 @@ bool SdlEventSource::handleResizeEvent(Common::Event &event, int w, int h) { return false; } -SDLKey SdlEventSource::obtainKeycode(const SDL_keysym keySym) { +SDL_Keycode SdlEventSource::obtainKeycode(const SDL_Keysym keySym) { #if !SDL_VERSION_ATLEAST(2, 0, 0) && defined(WIN32) // WORKAROUND: SDL 1.2 on Windows does not use the user configured keyboard layout, // resulting in "keySym.sym" values to always be those expected for an US keyboard. @@ -1153,9 +1175,9 @@ SDLKey SdlEventSource::obtainKeycode(const SDL_keysym keySym) { if (ch) { if (ch >= 'A' && ch <= 'Z') { // Windows returns uppercase ASCII whereas SDL expects lowercase - return (SDLKey)(SDLK_a + (ch - 'A')); + return (SDL_Keycode)(SDLK_a + (ch - 'A')); } else { - return (SDLKey)ch; + return (SDL_Keycode)ch; } } } @@ -1164,7 +1186,7 @@ SDLKey SdlEventSource::obtainKeycode(const SDL_keysym keySym) { return keySym.sym; } -uint32 SdlEventSource::obtainUnicode(const SDL_keysym keySym) { +uint32 SdlEventSource::obtainUnicode(const SDL_Keysym keySym) { #if SDL_VERSION_ATLEAST(2, 0, 0) SDL_Event events[2]; diff --git a/backends/events/sdl/sdl-events.h b/backends/events/sdl/sdl-events.h index f1f2bdd645a..54a7d5ef011 100644 --- a/backends/events/sdl/sdl-events.h +++ b/backends/events/sdl/sdl-events.h @@ -31,6 +31,13 @@ // multiplier used to increase resolution for keyboard/joystick mouse #define MULTIPLIER 16 +// Type names which changed between SDL 1.2 and SDL 2. +#if !SDL_VERSION_ATLEAST(2, 0, 0) +typedef SDLKey SDL_Keycode; +typedef SDLMod SDL_Keymod; +typedef SDL_keysym SDL_Keysym; +#endif + /** * The SDL event source. */ @@ -183,17 +190,17 @@ protected: /** * Maps the ASCII value of key */ - virtual int mapKey(SDLKey key, SDLMod mod, Uint16 unicode); + virtual int mapKey(SDL_Keycode key, SDL_Keymod mod, Uint16 unicode); /** * Configures the key modifiers flags status */ - virtual void SDLModToOSystemKeyFlags(SDLMod mod, Common::Event &event); + virtual void SDLModToOSystemKeyFlags(SDL_Keymod mod, Common::Event &event); /** * Translates SDL key codes to OSystem key codes */ - Common::KeyCode SDLToOSystemKeycode(const SDLKey key); + Common::KeyCode SDLToOSystemKeycode(const SDL_Keycode key); /** * Notify graphics manager of a resize request. @@ -204,12 +211,12 @@ protected: * Extracts unicode information for the specific key sym. * May only be used for key down events. */ - uint32 obtainUnicode(const SDL_keysym keySym); + uint32 obtainUnicode(const SDL_Keysym keySym); /** * Extracts the keycode for the specified key sym. */ - SDLKey obtainKeycode(const SDL_keysym keySym); + SDL_Keycode obtainKeycode(const SDL_Keysym keySym); /** * Whether _fakeMouseMove contains an event we need to send. diff --git a/backends/events/symbiansdl/symbiansdl-events.cpp b/backends/events/symbiansdl/symbiansdl-events.cpp index d4d8cf2bb18..c73424ec62a 100644 --- a/backends/events/symbiansdl/symbiansdl-events.cpp +++ b/backends/events/symbiansdl/symbiansdl-events.cpp @@ -164,9 +164,9 @@ bool SymbianSdlEventSource::remapKey(SDL_Event &ev, Common::Event &event) { case GUI::ACTION_VKB: case GUI::ACTION_KEYMAPPER:{ GUI::Key &key = GUI::Actions::Instance()->getKeyAction(loop); - ev.key.keysym.sym = (SDLKey) key.keycode(); + ev.key.keysym.sym = (SDL_Keycode) key.keycode(); ev.key.keysym.scancode = 0; - ev.key.keysym.mod = (SDLMod) key.flags(); + ev.key.keysym.mod = (SDL_Keymod) key.flags(); // Translate from SDL keymod event to Scummvm Key Mod Common::Event. // TODO: Make use of SdlEventSource::SDLModToOSystemKeyFlags? diff --git a/backends/events/webossdl/webossdl-events.cpp b/backends/events/webossdl/webossdl-events.cpp index 8f124f2f2dc..643276a8e99 100644 --- a/backends/events/webossdl/webossdl-events.cpp +++ b/backends/events/webossdl/webossdl-events.cpp @@ -43,7 +43,7 @@ * @param mod The pressed key modifier as detected by SDL. * @param event The ScummVM event to setup. */ -void WebOSSdlEventSource::SDLModToOSystemKeyFlags(SDLMod mod, +void WebOSSdlEventSource::SDLModToOSystemKeyFlags(SDL_Keymod mod, Common::Event &event) { event.kbd.flags = 0; diff --git a/backends/events/webossdl/webossdl-events.h b/backends/events/webossdl/webossdl-events.h index 043acfdf6f3..f0f76804d2d 100644 --- a/backends/events/webossdl/webossdl-events.h +++ b/backends/events/webossdl/webossdl-events.h @@ -100,7 +100,7 @@ protected: _queuedRUpTime; // SDL overrides - virtual void SDLModToOSystemKeyFlags(SDLMod mod, Common::Event &event); + virtual void SDLModToOSystemKeyFlags(SDL_Keymod mod, Common::Event &event); virtual bool handleKeyDown(SDL_Event &ev, Common::Event &event); virtual bool handleKeyUp(SDL_Event &ev, Common::Event &event); virtual bool handleMouseButtonDown(SDL_Event &ev, Common::Event &event); diff --git a/backends/platform/sdl/sdl-sys.h b/backends/platform/sdl/sdl-sys.h index edb57c30f9c..6ccac5a7c68 100644 --- a/backends/platform/sdl/sdl-sys.h +++ b/backends/platform/sdl/sdl-sys.h @@ -278,33 +278,6 @@ // ease the transition. This is sometimes dangerous because the values changed // too! #if SDL_VERSION_ATLEAST(2, 0, 0) - -// Type names which changed between SDL 1.2 and SDL 2. -#define SDLKey SDL_Keycode -#define SDLMod SDL_Keymod -#define SDL_keysym SDL_Keysym - -// Key code constants which got renamed. -#define SDLK_SCROLLOCK SDLK_SCROLLLOCK -#define SDLK_NUMLOCK SDLK_NUMLOCKCLEAR -#define SDLK_LSUPER SDLK_LGUI -#define SDLK_RSUPER SDLK_RGUI -#define SDLK_PRINT SDLK_PRINTSCREEN -#define SDLK_COMPOSE SDLK_APPLICATION -#define SDLK_KP0 SDLK_KP_0 -#define SDLK_KP1 SDLK_KP_1 -#define SDLK_KP2 SDLK_KP_2 -#define SDLK_KP3 SDLK_KP_3 -#define SDLK_KP4 SDLK_KP_4 -#define SDLK_KP5 SDLK_KP_5 -#define SDLK_KP6 SDLK_KP_6 -#define SDLK_KP7 SDLK_KP_7 -#define SDLK_KP8 SDLK_KP_8 -#define SDLK_KP9 SDLK_KP_9 - -// Meta key constants which got renamed. -#define KMOD_META KMOD_GUI - // SDL surface flags which got removed. #define SDL_SRCCOLORKEY 0 #define SDL_SRCALPHA 0