Add support for enabling/disabling KeyEvent simulation for soft keyboards on Android similar to MouseEvents.
This commit is contained in:
parent
249f62fe95
commit
1ed1463476
@ -107,6 +107,10 @@ public class AndroidHarness extends Activity implements TouchListener, DialogInt
|
||||
* JoyAxisTriggers.
|
||||
*/
|
||||
protected boolean joystickEventsEnabled = false;
|
||||
/**
|
||||
* If true KeyEvents are generated from TouchEvents
|
||||
*/
|
||||
protected boolean keyEventsEnabled = true;
|
||||
/**
|
||||
* If true MouseEvents are generated from TouchEvents
|
||||
*/
|
||||
@ -224,6 +228,7 @@ public class AndroidHarness extends Activity implements TouchListener, DialogInt
|
||||
settings.setEmulateMouse(mouseEventsEnabled);
|
||||
settings.setEmulateMouseFlipAxis(mouseEventsInvertX, mouseEventsInvertY);
|
||||
settings.setUseJoysticks(joystickEventsEnabled);
|
||||
settings.setEmulateKeyboard(keyEventsEnabled);
|
||||
|
||||
settings.setBitsPerPixel(eglBitsPerPixel);
|
||||
settings.setAlphaBits(eglAlphaBits);
|
||||
|
||||
@ -136,8 +136,7 @@ public class AndroidInputHandler implements TouchInput {
|
||||
}
|
||||
|
||||
public void loadSettings(AppSettings settings) {
|
||||
// TODO: add simulate keyboard to settings
|
||||
// keyboardEventsEnabled = true;
|
||||
keyboardEventsEnabled = settings.isEmulateKeyboard();
|
||||
mouseEventsEnabled = settings.isEmulateMouse();
|
||||
mouseEventsInvertX = settings.isEmulateMouseFlipX();
|
||||
mouseEventsInvertY = settings.isEmulateMouseFlipY();
|
||||
@ -259,6 +258,10 @@ public class AndroidInputHandler implements TouchInput {
|
||||
this.keyboardEventsEnabled = simulate;
|
||||
}
|
||||
|
||||
public boolean isSimulateKeyboard() {
|
||||
return keyboardEventsEnabled;
|
||||
}
|
||||
|
||||
public void setOmitHistoricEvents(boolean dontSendHistory) {
|
||||
this.dontSendHistory = dontSendHistory;
|
||||
}
|
||||
|
||||
@ -108,20 +108,21 @@ public class AndroidKeyHandler implements View.OnKeyListener {
|
||||
|
||||
}
|
||||
|
||||
if (androidInput.isSimulateKeyboard()) {
|
||||
KeyInputEvent kie;
|
||||
char unicodeChar = (char)event.getUnicodeChar();
|
||||
int jmeKeyCode = AndroidKeyMapping.getJmeKey(keyCode);
|
||||
|
||||
KeyInputEvent kie;
|
||||
char unicodeChar = (char)event.getUnicodeChar();
|
||||
int jmeKeyCode = AndroidKeyMapping.getJmeKey(keyCode);
|
||||
boolean pressed = event.getAction() == KeyEvent.ACTION_DOWN;
|
||||
boolean repeating = pressed && event.getRepeatCount() > 0;
|
||||
|
||||
boolean pressed = event.getAction() == KeyEvent.ACTION_DOWN;
|
||||
boolean repeating = pressed && event.getRepeatCount() > 0;
|
||||
|
||||
kie = new KeyInputEvent(jmeKeyCode, unicodeChar, pressed, repeating);
|
||||
kie.setTime(event.getEventTime());
|
||||
androidInput.addEvent(kie);
|
||||
// logger.log(Level.FINE, "onKey keyCode: {0}, jmeKeyCode: {1}, pressed: {2}, repeating: {3}",
|
||||
// new Object[]{keyCode, jmeKeyCode, pressed, repeating});
|
||||
// logger.log(Level.FINE, "creating KeyInputEvent: {0}", kie);
|
||||
kie = new KeyInputEvent(jmeKeyCode, unicodeChar, pressed, repeating);
|
||||
kie.setTime(event.getEventTime());
|
||||
androidInput.addEvent(kie);
|
||||
// logger.log(Level.FINE, "onKey keyCode: {0}, jmeKeyCode: {1}, pressed: {2}, repeating: {3}",
|
||||
// new Object[]{keyCode, jmeKeyCode, pressed, repeating});
|
||||
// logger.log(Level.FINE, "creating KeyInputEvent: {0}", kie);
|
||||
}
|
||||
|
||||
// consume all keys ourself except Volume Up/Down and Menu
|
||||
// Don't do Menu so that typical Android Menus can be created and used
|
||||
@ -133,6 +134,7 @@ public class AndroidKeyHandler implements View.OnKeyListener {
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -90,10 +90,10 @@ public final class AppSettings extends HashMap<String, Object> {
|
||||
/**
|
||||
* Use the Android MediaPlayer / SoundPool based renderer for Android audio capabilities.
|
||||
* <p>
|
||||
* NOTE: Supports Android 2.2+ platforms.
|
||||
* NOTE: Supports Android 2.2+ platforms.
|
||||
*
|
||||
* @see AppSettings#setAudioRenderer(java.lang.String)
|
||||
* @deprecated This audio renderer has too many limitations.
|
||||
* @deprecated This audio renderer has too many limitations.
|
||||
* use {@link #ANDROID_OPENAL_SOFT} instead.
|
||||
*/
|
||||
@Deprecated
|
||||
@ -455,6 +455,26 @@ public final class AppSettings extends HashMap<String, Object> {
|
||||
return getBoolean("TouchEmulateMouseFlipY");
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable or disable keyboard emulation on touchscreen based devices.
|
||||
* This will convert soft keyboard key presses on the touchscreen
|
||||
* into the appropriate key events.
|
||||
*
|
||||
* @param emulateKeyboard If soft keyboard emulation should be enabled.
|
||||
*/
|
||||
public void setEmulateKeyboard(boolean emulateKeyboard) {
|
||||
putBoolean("TouchEmulateKeyboard", emulateKeyboard);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns true if keyboard emulation is enabled, false otherwise.
|
||||
*
|
||||
* @return Soft keyboard emulation mode.
|
||||
*/
|
||||
public boolean isEmulateKeyboard() {
|
||||
return getBoolean("TouchEmulateKeyboard");
|
||||
}
|
||||
|
||||
/**
|
||||
* @param frameRate The frame-rate is the upper limit on how high
|
||||
* the application's frames-per-second can go.
|
||||
@ -731,12 +751,12 @@ public final class AppSettings extends HashMap<String, Object> {
|
||||
public void setSettingsDialogImage(String path) {
|
||||
putString("SettingsDialogImage", path);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Enables Gamma Correction
|
||||
* This requires that the GPU supports GL_ARB_framebuffer_sRGB and will
|
||||
* This requires that the GPU supports GL_ARB_framebuffer_sRGB and will
|
||||
* disabled otherwise.
|
||||
* @param gammaCorrection
|
||||
* @param gammaCorrection
|
||||
* (Default : true)
|
||||
*/
|
||||
public void setGammaCorrection(boolean gammaCorrection) {
|
||||
@ -911,7 +931,7 @@ public final class AppSettings extends HashMap<String, Object> {
|
||||
public String getSettingsDialogImage() {
|
||||
return getString("SettingsDialogImage");
|
||||
}
|
||||
|
||||
|
||||
public boolean getGammaCorrection() {
|
||||
return getBoolean("GammaCorrection");
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user