[Scummvm-cvs-logs] scummvm master -> 42cb01f57cbb1b98890721c245b8e84a3cde23d4

m-kiewitz m_kiewitz at users.sourceforge.net
Tue Feb 2 12:48:18 CET 2016


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:
42cb01f57c SCI: Keyboard event handling cleanup


Commit: 42cb01f57cbb1b98890721c245b8e84a3cde23d4
    https://github.com/scummvm/scummvm/commit/42cb01f57cbb1b98890721c245b8e84a3cde23d4
Author: Martin Kiewitz (m_kiewitz at users.sourceforge.net)
Date: 2016-02-02T12:47:47+01:00

Commit Message:
SCI: Keyboard event handling cleanup

Renamed "ourModifiers" to "scummVMKeyFlags"
Now also using the flags directly from the ScummVM event in case
it actually was a Keyboard event.

Changed paths:
    engines/sci/event.cpp



diff --git a/engines/sci/event.cpp b/engines/sci/event.cpp
index 1f7cc01..c358ed1 100644
--- a/engines/sci/event.cpp
+++ b/engines/sci/event.cpp
@@ -173,12 +173,24 @@ SciEvent EventManager::getScummVMEvent() {
 		return input;
 	}
 
-	int ourModifiers = em->getModifierState();
+	int	scummVMKeyFlags;
+
+	switch (ev.type) {
+	case Common::EVENT_KEYDOWN:
+	case Common::EVENT_KEYUP:
+		// Use keyboard modifiers directly in case this is a keyboard event
+		scummVMKeyFlags = ev.kbd.flags;
+		break;
+	default:
+		// Otherwise get them from EventManager
+		scummVMKeyFlags = em->getModifierState();
+		break;
+	}
 
 	input.modifiers =
-		((ourModifiers & Common::KBD_ALT) ? SCI_KEYMOD_ALT : 0) |
-		((ourModifiers & Common::KBD_CTRL) ? SCI_KEYMOD_CTRL : 0) |
-		((ourModifiers & Common::KBD_SHIFT) ? SCI_KEYMOD_LSHIFT | SCI_KEYMOD_RSHIFT : 0);
+		((scummVMKeyFlags & Common::KBD_ALT) ? SCI_KEYMOD_ALT : 0) |
+		((scummVMKeyFlags & Common::KBD_CTRL) ? SCI_KEYMOD_CTRL : 0) |
+		((scummVMKeyFlags & Common::KBD_SHIFT) ? SCI_KEYMOD_LSHIFT | SCI_KEYMOD_RSHIFT : 0);
 		// Caps lock and Scroll lock have been removed, cause we already handle upper
 		// case keys and Scroll lock doesn't seem to be used anywhere
 		//((ourModifiers & Common::KBD_CAPS) ? SCI_KEYMOD_CAPSLOCK : 0) |
@@ -226,7 +238,6 @@ SciEvent EventManager::getScummVMEvent() {
 	bool numlockOn = (ev.kbd.flags & Common::KBD_NUM);
 
 	Common::KeyCode scummVMKeycode = ev.kbd.keycode;
-	byte scummVMKeyFlags = ev.kbd.flags;
 
 	input.character = ev.kbd.ascii;
 	input.type = SCI_EVENT_KEYBOARD;
@@ -258,7 +269,7 @@ SciEvent EventManager::getScummVMEvent() {
 		}
 		if (scummVMKeycode == Common::KEYCODE_TAB) {
 			input.character = SCI_KEY_TAB;
-			if (ourModifiers & Common::KBD_SHIFT)
+			if (scummVMKeyFlags & Common::KBD_SHIFT)
 				input.character = SCI_KEY_SHIFT_TAB;
 		}
 		if (scummVMKeycode == Common::KEYCODE_DELETE)
@@ -267,7 +278,7 @@ SciEvent EventManager::getScummVMEvent() {
 		// SCI_K_F1 == 59 << 8
 		// SCI_K_SHIFT_F1 == 84 << 8
 		input.character = SCI_KEY_F1 + ((scummVMKeycode - Common::KEYCODE_F1)<<8);
-		if (ourModifiers & Common::KBD_SHIFT)
+		if (scummVMKeyFlags & Common::KBD_SHIFT)
 			input.character = input.character + 0x1900;
 	} else {
 		// Special keys that need conversion
@@ -282,13 +293,13 @@ SciEvent EventManager::getScummVMEvent() {
 	// When Ctrl AND Alt are pressed together with a regular key, Linux will give us control-key, Windows will give
 	//  us the actual key. My opinion is that windows is right, because under DOS the keys worked the same, anyway
 	//  we support the other case as well
-	if ((ourModifiers & Common::KBD_ALT) && input.character > 0 && input.character < 27)
+	if ((scummVMKeyFlags & Common::KBD_ALT) && input.character > 0 && input.character < 27)
 		input.character += 96; // 0x01 -> 'a'
 
 	// Scancodify if appropriate
-	if (ourModifiers & Common::KBD_ALT)
+	if (scummVMKeyFlags & Common::KBD_ALT)
 		input.character = altify(input.character);
-	if (getSciVersion() <= SCI_VERSION_1_MIDDLE && (ourModifiers & Common::KBD_CTRL) && input.character > 0 && input.character < 27)
+	if (getSciVersion() <= SCI_VERSION_1_MIDDLE && (scummVMKeyFlags & Common::KBD_CTRL) && input.character > 0 && input.character < 27)
 		input.character += 96; // 0x01 -> 'a'
 
 	// If no actual key was pressed (e.g. if only a modifier key was pressed),






More information about the Scummvm-git-logs mailing list