Skip to content

Commit

Permalink
Merge pull request #657 from lordhoto/scumm-alt-x
Browse files Browse the repository at this point in the history
ALL: Handle Alt-x internally in SCUMM.
  • Loading branch information
sev- committed Feb 1, 2016
2 parents 7b521ed + 94cd15b commit 68ff933
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 8 deletions.
5 changes: 5 additions & 0 deletions NEWS
Expand Up @@ -19,6 +19,10 @@ For a more comprehensive changelog of the latest experimental code, see:
General:
- Updated Munt MT-32 emulation code to version 1.5.0.

SDL:
- Alt-x no longer quits ScummVM on platforms exhibiting this behavior
before. A notable example is our Windows port.

3 Skulls of the Toltecs:
- Improved AdLib music support.

Expand Down Expand Up @@ -73,6 +77,7 @@ For a more comprehensive changelog of the latest experimental code, see:
- Implemented original Maniac Mansion v0-v1 walking code.
- It is now possible to play Maniac Mansion from within Day of the
Tentacle, with a few caveats. See README for details.
- Alt-x can now be used to quit SCUMM games on all platforms.

Tinsel:
- Improved AdLib music support in Discworld 1.
Expand Down
3 changes: 2 additions & 1 deletion README
Expand Up @@ -1487,7 +1487,7 @@ other games.
Ctrl-F5 - Displays the Global Menu
Cmd-q - Quit (Mac OS X)
Ctrl-q - Quit (other unices including Linux)
Ctrl-z OR Alt-x - Quit (other platforms)
Ctrl-z - Quit (other platforms)
Ctrl-u - Mute all sounds
Ctrl-m - Toggle mouse capture
Ctrl-Alt 1-8 - Switch between graphics filters
Expand All @@ -1505,6 +1505,7 @@ other games.
of the middle mouse button or wheel.

SCUMM:
Alt-x - Quit
Ctrl 0-9 and Alt 0-9 - Load and save game state
Ctrl-d - Starts the debugger
Ctrl-f - Toggle fast mode
Expand Down
9 changes: 2 additions & 7 deletions backends/events/sdl/sdl-events.cpp
Expand Up @@ -545,8 +545,8 @@ bool SdlEventSource::handleKeyDown(SDL_Event &ev, Common::Event &event) {
return true;
}
#else
// Ctrl-z and Alt-X quit
if ((event.kbd.hasFlags(Common::KBD_CTRL) && ev.key.keysym.sym == 'z') || (event.kbd.hasFlags(Common::KBD_ALT) && ev.key.keysym.sym == 'x')) {
// Ctrl-z quits
if ((event.kbd.hasFlags(Common::KBD_CTRL) && ev.key.keysym.sym == 'z')) {
event.type = Common::EVENT_QUIT;
return true;
}
Expand Down Expand Up @@ -603,11 +603,6 @@ bool SdlEventSource::handleKeyUp(SDL_Event &ev, Common::Event &event) {
#if defined(MACOSX)
if ((mod & KMOD_META) && ev.key.keysym.sym == 'q')
return false; // On Macintosh, Cmd-Q quits
#elif defined(POSIX)
// Control Q has already been handled above
#else
if ((mod & KMOD_ALT) && ev.key.keysym.sym == 'x')
return false; // Alt-x quit
#endif

// If we reached here, this isn't an event handled by handleKeyDown(), thus
Expand Down
8 changes: 8 additions & 0 deletions engines/scumm/input.cpp
Expand Up @@ -130,6 +130,14 @@ void ScummEngine::parseEvent(Common::Event event) {
_debugger->attach();
} else if (event.kbd.hasFlags(Common::KBD_CTRL) && event.kbd.keycode == Common::KEYCODE_s) {
_res->resourceStats();
} else if (event.kbd.hasFlags(Common::KBD_ALT) && event.kbd.keycode == Common::KEYCODE_x) {
// TODO: Some SCUMM games quit when Alt-x is pressed. However, not
// all of them seem to exhibit this behavior. LordHoto found that
// the Loom manual does not mention this hotkey. On the other hand
// the Sam&Max manual mentions that Alt-x does so on "most"
// platforms. We should really check which games exhibit this
// behavior and only use it for them.
quitGame();
} else {
// Normal key press, pass on to the game.
_keyPressed = event.kbd;
Expand Down

0 comments on commit 68ff933

Please sign in to comment.