[Scummvm-cvs-logs] scummvm master -> 2daf69267d15025a0259aaf873d83814b78b92ae

bgK bastien.bouclet at gmail.com
Sat Aug 6 16:07:13 CEST 2011


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

Summary:
3384f9146c KYRA: Don't loose the next event when leaving the text input event loop.
2daf69267d SDL: Don't rely on SDL keycodes and OSystem keycodes being the same.


Commit: 3384f9146c91bc1803ae8c4eff5eca2d3a102832
    https://github.com/scummvm/scummvm/commit/3384f9146c91bc1803ae8c4eff5eca2d3a102832
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2011-08-06T06:48:12-07:00

Commit Message:
KYRA: Don't loose the next event when leaving the text input event loop.

Changed paths:
    engines/kyra/gui.cpp



diff --git a/engines/kyra/gui.cpp b/engines/kyra/gui.cpp
index 29cbe20..402912b 100644
--- a/engines/kyra/gui.cpp
+++ b/engines/kyra/gui.cpp
@@ -415,7 +415,7 @@ void GUI::checkTextfieldInput() {
 
 	bool running = true;
 	int keys = 0;
-	while (_vm->_eventMan->pollEvent(event) && running) {
+	while (running && _vm->_eventMan->pollEvent(event)) {
 		switch (event.type) {
 		case Common::EVENT_KEYDOWN:
 			if (event.kbd.keycode == Common::KEYCODE_q && event.kbd.hasFlags(Common::KBD_CTRL))


Commit: 2daf69267d15025a0259aaf873d83814b78b92ae
    https://github.com/scummvm/scummvm/commit/2daf69267d15025a0259aaf873d83814b78b92ae
Author: Bastien Bouclet (bastien.bouclet at gmail.com)
Date: 2011-08-06T06:52:02-07:00

Commit Message:
SDL: Don't rely on SDL keycodes and OSystem keycodes being the same.

SDL 1.3 shuffles keycodes around ...

Changed paths:
    backends/events/sdl/sdl-events.cpp
    backends/events/sdl/sdl-events.h



diff --git a/backends/events/sdl/sdl-events.cpp b/backends/events/sdl/sdl-events.cpp
index 4489a2e..d4f4095 100644
--- a/backends/events/sdl/sdl-events.cpp
+++ b/backends/events/sdl/sdl-events.cpp
@@ -194,6 +194,149 @@ void SdlEventSource::SDLModToOSystemKeyFlags(SDLMod mod, Common::Event &event) {
 		event.kbd.flags |= Common::KBD_CAPS;
 }
 
+Common::KeyCode SdlEventSource::SDLToOSystemKeycode(const SDLKey key) {
+	switch (key) {
+	case SDLK_BACKSPACE: return Common::KEYCODE_BACKSPACE;
+	case SDLK_TAB: return Common::KEYCODE_TAB;
+	case SDLK_CLEAR: return Common::KEYCODE_CLEAR;
+	case SDLK_RETURN: return Common::KEYCODE_RETURN;
+	case SDLK_PAUSE: return Common::KEYCODE_PAUSE;
+	case SDLK_ESCAPE: return Common::KEYCODE_ESCAPE;
+	case SDLK_SPACE: return Common::KEYCODE_SPACE;
+	case SDLK_EXCLAIM: return Common::KEYCODE_EXCLAIM;
+	case SDLK_QUOTEDBL: return Common::KEYCODE_QUOTEDBL;
+	case SDLK_HASH: return Common::KEYCODE_HASH;
+	case SDLK_DOLLAR: return Common::KEYCODE_DOLLAR;
+	case SDLK_AMPERSAND: return Common::KEYCODE_AMPERSAND;
+	case SDLK_QUOTE: return Common::KEYCODE_QUOTE;
+	case SDLK_LEFTPAREN: return Common::KEYCODE_LEFTPAREN;
+	case SDLK_RIGHTPAREN: return Common::KEYCODE_RIGHTPAREN;
+	case SDLK_ASTERISK: return Common::KEYCODE_ASTERISK;
+	case SDLK_PLUS: return Common::KEYCODE_PLUS;
+	case SDLK_COMMA: return Common::KEYCODE_COMMA;
+	case SDLK_MINUS: return Common::KEYCODE_MINUS;
+	case SDLK_PERIOD: return Common::KEYCODE_PERIOD;
+	case SDLK_SLASH: return Common::KEYCODE_SLASH;
+	case SDLK_0: return Common::KEYCODE_0;
+	case SDLK_1: return Common::KEYCODE_1;
+	case SDLK_2: return Common::KEYCODE_2;
+	case SDLK_3: return Common::KEYCODE_3;
+	case SDLK_4: return Common::KEYCODE_4;
+	case SDLK_5: return Common::KEYCODE_5;
+	case SDLK_6: return Common::KEYCODE_6;
+	case SDLK_7: return Common::KEYCODE_7;
+	case SDLK_8: return Common::KEYCODE_8;
+	case SDLK_9: return Common::KEYCODE_9;
+	case SDLK_COLON: return Common::KEYCODE_COLON;
+	case SDLK_SEMICOLON: return Common::KEYCODE_SEMICOLON;
+	case SDLK_LESS: return Common::KEYCODE_LESS;
+	case SDLK_EQUALS: return Common::KEYCODE_EQUALS;
+	case SDLK_GREATER: return Common::KEYCODE_GREATER;
+	case SDLK_QUESTION: return Common::KEYCODE_QUESTION;
+	case SDLK_AT: return Common::KEYCODE_AT;
+	case SDLK_LEFTBRACKET: return Common::KEYCODE_LEFTBRACKET;
+	case SDLK_BACKSLASH: return Common::KEYCODE_BACKSLASH;
+	case SDLK_RIGHTBRACKET: return Common::KEYCODE_RIGHTBRACKET;
+	case SDLK_CARET: return Common::KEYCODE_CARET;
+	case SDLK_UNDERSCORE: return Common::KEYCODE_UNDERSCORE;
+	case SDLK_BACKQUOTE: return Common::KEYCODE_BACKQUOTE;
+	case SDLK_a: return Common::KEYCODE_a;
+	case SDLK_b: return Common::KEYCODE_b;
+	case SDLK_c: return Common::KEYCODE_c;
+	case SDLK_d: return Common::KEYCODE_d;
+	case SDLK_e: return Common::KEYCODE_e;
+	case SDLK_f: return Common::KEYCODE_f;
+	case SDLK_g: return Common::KEYCODE_g;
+	case SDLK_h: return Common::KEYCODE_h;
+	case SDLK_i: return Common::KEYCODE_i;
+	case SDLK_j: return Common::KEYCODE_j;
+	case SDLK_k: return Common::KEYCODE_k;
+	case SDLK_l: return Common::KEYCODE_l;
+	case SDLK_m: return Common::KEYCODE_m;
+	case SDLK_n: return Common::KEYCODE_n;
+	case SDLK_o: return Common::KEYCODE_o;
+	case SDLK_p: return Common::KEYCODE_p;
+	case SDLK_q: return Common::KEYCODE_q;
+	case SDLK_r: return Common::KEYCODE_r;
+	case SDLK_s: return Common::KEYCODE_s;
+	case SDLK_t: return Common::KEYCODE_t;
+	case SDLK_u: return Common::KEYCODE_u;
+	case SDLK_v: return Common::KEYCODE_v;
+	case SDLK_w: return Common::KEYCODE_w;
+	case SDLK_x: return Common::KEYCODE_x;
+	case SDLK_y: return Common::KEYCODE_y;
+	case SDLK_z: return Common::KEYCODE_z;
+	case SDLK_DELETE: return Common::KEYCODE_DELETE;
+#if SDL_VERSION_ATLEAST(1, 3, 0)
+	case SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_GRAVE): return Common::KEYCODE_TILDE;
+#else
+	case SDLK_WORLD_16: return Common::KEYCODE_TILDE;
+#endif
+	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;
+	case SDLK_KP_MINUS: return Common::KEYCODE_KP_MINUS;
+	case SDLK_KP_PLUS: return Common::KEYCODE_KP_PLUS;
+	case SDLK_KP_ENTER: return Common::KEYCODE_KP_ENTER;
+	case SDLK_KP_EQUALS: return Common::KEYCODE_KP_EQUALS;
+	case SDLK_UP: return Common::KEYCODE_UP;
+	case SDLK_DOWN: return Common::KEYCODE_DOWN;
+	case SDLK_RIGHT: return Common::KEYCODE_RIGHT;
+	case SDLK_LEFT: return Common::KEYCODE_LEFT;
+	case SDLK_INSERT: return Common::KEYCODE_INSERT;
+	case SDLK_HOME: return Common::KEYCODE_HOME;
+	case SDLK_END: return Common::KEYCODE_END;
+	case SDLK_PAGEUP: return Common::KEYCODE_PAGEUP;
+	case SDLK_PAGEDOWN: return Common::KEYCODE_PAGEDOWN;
+	case SDLK_F1: return Common::KEYCODE_F1;
+	case SDLK_F2: return Common::KEYCODE_F2;
+	case SDLK_F3: return Common::KEYCODE_F3;
+	case SDLK_F4: return Common::KEYCODE_F4;
+	case SDLK_F5: return Common::KEYCODE_F5;
+	case SDLK_F6: return Common::KEYCODE_F6;
+	case SDLK_F7: return Common::KEYCODE_F7;
+	case SDLK_F8: return Common::KEYCODE_F8;
+	case SDLK_F9: return Common::KEYCODE_F9;
+	case SDLK_F10: return Common::KEYCODE_F10;
+	case SDLK_F11: return Common::KEYCODE_F11;
+	case SDLK_F12: return Common::KEYCODE_F12;
+	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_BREAK: return Common::KEYCODE_BREAK;
+	case SDLK_MENU: return Common::KEYCODE_MENU;
+	case SDLK_POWER: return Common::KEYCODE_POWER;
+	case SDLK_UNDO: return Common::KEYCODE_UNDO;
+	default: return Common::KEYCODE_INVALID;
+	}
+}
+
 bool SdlEventSource::pollEvent(Common::Event &event) {
 	handleKbdMouse();
 
@@ -302,7 +445,7 @@ bool SdlEventSource::handleKeyDown(SDL_Event &ev, Common::Event &event) {
 		return true;
 
 	event.type = Common::EVENT_KEYDOWN;
-	event.kbd.keycode = (Common::KeyCode)ev.key.keysym.sym;
+	event.kbd.keycode = SDLToOSystemKeycode(ev.key.keysym.sym);
 	event.kbd.ascii = mapKey(ev.key.keysym.sym, (SDLMod)ev.key.keysym.mod, (Uint16)ev.key.keysym.unicode);
 
 	return true;
@@ -346,7 +489,7 @@ bool SdlEventSource::handleKeyUp(SDL_Event &ev, Common::Event &event) {
 	// continue normally
 
 	event.type = Common::EVENT_KEYUP;
-	event.kbd.keycode = (Common::KeyCode)ev.key.keysym.sym;
+	event.kbd.keycode = SDLToOSystemKeycode(ev.key.keysym.sym);
 	event.kbd.ascii = mapKey(ev.key.keysym.sym, (SDLMod)ev.key.keysym.mod, (Uint16)ev.key.keysym.unicode);
 
 	// Ctrl-Alt-<key> will change the GFX mode
diff --git a/backends/events/sdl/sdl-events.h b/backends/events/sdl/sdl-events.h
index 805b76b..9122692 100644
--- a/backends/events/sdl/sdl-events.h
+++ b/backends/events/sdl/sdl-events.h
@@ -127,6 +127,11 @@ protected:
 	 * Configures the key modifiers flags status
 	 */
 	virtual void SDLModToOSystemKeyFlags(SDLMod mod, Common::Event &event);
+
+	/**
+	 * Translates SDL key codes to OSystem key codes
+	 */
+	Common::KeyCode SDLToOSystemKeycode(const SDLKey key);
 };
 
 #endif






More information about the Scummvm-git-logs mailing list