[Scummvm-git-logs] scummvm master -> a730e8775b0d379fe0afaa3c1f56f21bc2cb6937

bluegr bluegr at gmail.com
Sat Feb 22 20:11:38 UTC 2020


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
a730e8775b SDL: Clean up keycode usage


Commit: a730e8775b0d379fe0afaa3c1f56f21bc2cb6937
    https://github.com/scummvm/scummvm/commit/a730e8775b0d379fe0afaa3c1f56f21bc2cb6937
Author: Cameron Cawley (ccawley2011 at gmail.com)
Date: 2020-02-22T22:11:34+02:00

Commit Message:
SDL: Clean up keycode usage

Changed paths:
    backends/events/androidsdl/androidsdl-events.cpp
    backends/events/androidsdl/androidsdl-events.h
    backends/events/dinguxsdl/dinguxsdl-events.cpp
    backends/events/maemosdl/maemosdl-events.cpp
    backends/events/sdl/sdl-events.cpp
    backends/events/sdl/sdl-events.h
    backends/events/symbiansdl/symbiansdl-events.cpp
    backends/events/webossdl/webossdl-events.cpp
    backends/events/webossdl/webossdl-events.h
    backends/platform/sdl/sdl-sys.h


diff --git a/backends/events/androidsdl/androidsdl-events.cpp b/backends/events/androidsdl/androidsdl-events.cpp
index dcc1c14..7c59c64 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 723a23b..da042b9 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 7730e8f..fa5f1d3 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 9354094..7f0419a 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 ceef945..9e14ee6 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 f1f2bdd..54a7d5e 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 d4d8cf2..c73424e 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 8f124f2..643276a 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 043acfd..f0f7680 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 edb57c3..6ccac5a 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




More information about the Scummvm-git-logs mailing list