Fix modifier keys on root version

This commit is contained in:
Cameron Gutman 2014-10-10 22:53:34 -07:00
parent a61b85b494
commit 947882d16f

View File

@ -74,8 +74,6 @@ public class Game extends Activity implements SurfaceHolder.Callback,
private int modifierFlags = 0; private int modifierFlags = 0;
private boolean grabbedInput = true; private boolean grabbedInput = true;
private boolean grabComboDown = false; private boolean grabComboDown = false;
private static final int MODIFIER_CTRL = 0x1;
private static final int MODIFIER_SHIFT = 0x2;
private ConfigurableDecoderRenderer decoderRenderer; private ConfigurableDecoderRenderer decoderRenderer;
@ -343,17 +341,20 @@ public class Game extends Activity implements SurfaceHolder.Callback,
}; };
// Returns true if the key stroke was consumed // Returns true if the key stroke was consumed
private boolean handleMagicKeyCombos(short translatedKey, boolean down) { private boolean handleSpecialKeys(short translatedKey, boolean down) {
int modifierMask = 0; int modifierMask = 0;
// Mask off the high byte // Mask off the high byte
translatedKey &= 0xff; translatedKey &= 0xff;
if (translatedKey == KeyboardTranslator.VK_CONTROL) { if (translatedKey == KeyboardTranslator.VK_CONTROL) {
modifierMask = MODIFIER_CTRL; modifierMask = KeyboardPacket.MODIFIER_CTRL;
} }
else if (translatedKey == KeyboardTranslator.VK_SHIFT) { else if (translatedKey == KeyboardTranslator.VK_SHIFT) {
modifierMask = MODIFIER_SHIFT; modifierMask = KeyboardPacket.MODIFIER_SHIFT;
}
else if (translatedKey == KeyboardTranslator.VK_ALT) {
modifierMask = KeyboardPacket.MODIFIER_ALT;
} }
if (down) { if (down) {
@ -365,7 +366,8 @@ public class Game extends Activity implements SurfaceHolder.Callback,
// Check if Ctrl+Shift+Z is pressed // Check if Ctrl+Shift+Z is pressed
if (translatedKey == KeyboardTranslator.VK_Z && if (translatedKey == KeyboardTranslator.VK_Z &&
(modifierFlags & (MODIFIER_CTRL|MODIFIER_SHIFT)) == (MODIFIER_CTRL|MODIFIER_SHIFT)) (modifierFlags & (KeyboardPacket.MODIFIER_CTRL | KeyboardPacket.MODIFIER_SHIFT)) ==
(KeyboardPacket.MODIFIER_CTRL | KeyboardPacket.MODIFIER_SHIFT))
{ {
if (down) { if (down) {
// Now that we've pressed the magic combo // Now that we've pressed the magic combo
@ -413,6 +415,10 @@ public class Game extends Activity implements SurfaceHolder.Callback,
return modifier; return modifier;
} }
private byte getModifierState() {
return (byte) modifierFlags;
}
@Override @Override
public boolean onKeyDown(int keyCode, KeyEvent event) { public boolean onKeyDown(int keyCode, KeyEvent event) {
InputDevice dev = event.getDevice(); InputDevice dev = event.getDevice();
@ -435,7 +441,7 @@ public class Game extends Activity implements SurfaceHolder.Callback,
} }
// Let this method take duplicate key down events // Let this method take duplicate key down events
if (handleMagicKeyCombos(translated, true)) { if (handleSpecialKeys(translated, true)) {
return true; return true;
} }
@ -477,7 +483,7 @@ public class Game extends Activity implements SurfaceHolder.Callback,
return super.onKeyUp(keyCode, event); return super.onKeyUp(keyCode, event);
} }
if (handleMagicKeyCombos(translated, false)) { if (handleSpecialKeys(translated, false)) {
return true; return true;
} }
@ -816,15 +822,15 @@ public class Game extends Activity implements SurfaceHolder.Callback,
public void keyboardEvent(boolean buttonDown, short keyCode) { public void keyboardEvent(boolean buttonDown, short keyCode) {
short keyMap = keybTranslator.translate(keyCode); short keyMap = keybTranslator.translate(keyCode);
if (keyMap != 0) { if (keyMap != 0) {
if (handleMagicKeyCombos(keyMap, buttonDown)) { if (handleSpecialKeys(keyMap, buttonDown)) {
return; return;
} }
if (buttonDown) { if (buttonDown) {
keybTranslator.sendKeyDown(keyMap, (byte) 0); keybTranslator.sendKeyDown(keyMap, getModifierState());
} }
else { else {
keybTranslator.sendKeyUp(keyMap, (byte) 0); keybTranslator.sendKeyUp(keyMap, getModifierState());
} }
} }
} }