diff -ur --exclude=CVS ScummVM/scumm/input.cpp ScummVM+hack/scumm/input.cpp --- ScummVM/scumm/input.cpp 2005-09-03 22:49:12.534363600 +0200 +++ ScummVM+hack/scumm/input.cpp 2005-09-13 11:18:59.520096700 +0200 @@ -76,6 +76,8 @@ _debugger->attach(); else if (event.kbd.keycode == 's') res.resourceStats(); + else if (event.kbd.keycode == 'i') + _fudgeSaveLoadKey = true; else _keyPressed = event.kbd.ascii; // Normal key press, pass on to the game. } else if (event.kbd.flags & OSystem::KBD_ALT) { @@ -232,6 +234,23 @@ } #endif + if ((_version <= 2) || (_platform == Common::kPlatformFMTowns && _version == 3)) + saveloadkey = 5; // F5 + else if ((_version <= 3) || (_gameId == GID_SAMNMAX) || (_gameId == GID_CMI) || (_heversion >= 72)) + saveloadkey = 319; // F5 + else + saveloadkey = VAR(VAR_MAINMENU_KEY); + + if (_fudgeSaveLoadKey) { + // Undo the keyboard re-mapping for COMI. + if (_gameId == GID_CMI && !(_features & GF_DEMO)) + _keyPressed = 315; + else + _keyPressed = saveloadkey; + saveloadkey = -1; + _fudgeSaveLoadKey = false; + } + _lastKeyHit = _keyPressed; _keyPressed = 0; if (((_version <= 2) || (_platform == Common::kPlatformFMTowns && _version == 3)) && 315 <= _lastKeyHit && _lastKeyHit < 315+12) { @@ -239,7 +258,6 @@ _lastKeyHit -= 314; } - // // Clip the mouse coordinates, and compute _virtualMouse.x (and clip it, too) // @@ -410,13 +428,6 @@ return; } - if ((_version <= 2) || (_platform == Common::kPlatformFMTowns && _version == 3)) - saveloadkey = 5; // F5 - else if ((_version <= 3) || (_gameId == GID_SAMNMAX) || (_gameId == GID_CMI) || (_heversion >= 72)) - saveloadkey = 319; // F5 - else - saveloadkey = VAR(VAR_MAINMENU_KEY); - if (_lastKeyHit == VAR(VAR_CUTSCENEEXIT_KEY) || ((VAR(VAR_CUTSCENEEXIT_KEY) == 4 || VAR(VAR_CUTSCENEEXIT_KEY) == 64) && _lastKeyHit == 27)) { #ifndef DISABLE_SCUMM_7_8 diff -ur --exclude=CVS ScummVM/scumm/scumm.cpp ScummVM+hack/scumm/scumm.cpp --- ScummVM/scumm/scumm.cpp 2005-09-12 08:14:05.185160000 +0200 +++ ScummVM+hack/scumm/scumm.cpp 2005-09-13 11:17:38.827301700 +0200 @@ -962,6 +962,7 @@ _curPalIndex = 0; _currentRoom = 0; _egoPositioned = false; + _fudgeSaveLoadKey = false; _keyPressed = 0; _lastKeyHit = 0; _mouseAndKeyboardStat = 0; diff -ur --exclude=CVS ScummVM/scumm/scumm.h ScummVM+hack/scumm/scumm.h --- ScummVM/scumm/scumm.h 2005-07-31 17:57:39.037184400 +0200 +++ ScummVM+hack/scumm/scumm.h 2005-09-13 11:17:29.797207700 +0200 @@ -540,6 +540,7 @@ int _substResFileNameIndex; protected: + bool _fudgeSaveLoadKey; int _keyPressed; uint16 _lastKeyHit; bool _keyDownMap[512]; // FIXME - 512 is a guess. it's max(kbd.ascii)