[Scummvm-cvs-logs] SF.net SVN: scummvm:[54568] scummvm/trunk/engines/made/made.cpp

thebluegr at users.sourceforge.net thebluegr at users.sourceforge.net
Mon Nov 29 11:20:45 CET 2010


Revision: 54568
          http://scummvm.svn.sourceforge.net/scummvm/?rev=54568&view=rev
Author:   thebluegr
Date:     2010-11-29 10:20:45 +0000 (Mon, 29 Nov 2010)

Log Message:
-----------
MADE: Fixed bug #3090034 - "RTZ: Keyboard unresponsive", by properly handling keyboard keys

Modified Paths:
--------------
    scummvm/trunk/engines/made/made.cpp

Modified: scummvm/trunk/engines/made/made.cpp
===================================================================
--- scummvm/trunk/engines/made/made.cpp	2010-11-29 07:52:38 UTC (rev 54567)
+++ scummvm/trunk/engines/made/made.cpp	2010-11-29 10:20:45 UTC (rev 54568)
@@ -232,12 +232,52 @@
 			break;
 
 		case Common::EVENT_KEYDOWN:
-			_eventKey = event.kbd.ascii;
-			// For unknown reasons, the game accepts ASCII code
-			// 9 as backspace
-			if (_eventKey == Common::KEYCODE_BACKSPACE)
+			// Handle any special keys here
+			// Supported keys taken from http://www.allgame.com/game.php?id=13542&tab=controls
+
+			switch (event.kbd.keycode) {
+			case Common::KEYCODE_KP_PLUS:	// action (same as left mouse click)
+				_eventNum = 1;		// left mouse button up
+				break;
+			case Common::KEYCODE_KP_MINUS:	// inventory (same as right mouse click)
+				_eventNum = 3;		// right mouse button up
+				break;
+			case Common::KEYCODE_UP:
+			case Common::KEYCODE_KP8:
+				_eventMouseY = MAX<int16>(0, _eventMouseY - 1);
+				g_system->warpMouse(_eventMouseX, _eventMouseY);
+				break;
+			case Common::KEYCODE_DOWN:
+			case Common::KEYCODE_KP2:
+				_eventMouseY = MIN<int16>(199, _eventMouseY + 1);
+				g_system->warpMouse(_eventMouseX, _eventMouseY);
+				break;
+			case Common::KEYCODE_LEFT:
+			case Common::KEYCODE_KP4:
+				_eventMouseX = MAX<int16>(0, _eventMouseX - 1);
+				g_system->warpMouse(_eventMouseX, _eventMouseY);
+				break;
+			case Common::KEYCODE_RIGHT:
+			case Common::KEYCODE_KP6:
+				_eventMouseX = MIN<int16>(319, _eventMouseX + 1);
+				g_system->warpMouse(_eventMouseX, _eventMouseY);
+				break;
+			case Common::KEYCODE_F1:		// menu
+			case Common::KEYCODE_F2:		// save game
+			case Common::KEYCODE_F3:		// load game
+			case Common::KEYCODE_F4:		// repeat last message
+				_eventNum = 5;
+				_eventKey = (event.kbd.keycode - Common::KEYCODE_F1) + 21;
+				break;
+			case Common::KEYCODE_BACKSPACE:
+				_eventNum = 5;
 				_eventKey = 9;
-			_eventNum = 5;
+				break;
+			default:
+				_eventNum = 5;
+				_eventKey = event.kbd.ascii;
+				break;
+			}
 
 			// Check for Debugger Activation
 			if (event.kbd.hasFlags(Common::KBD_CTRL) && event.kbd.keycode == Common::KEYCODE_d) {


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list