From 52c3a67d8fa064a5d18f357f292dd2c7d64ce1c8 Mon Sep 17 00:00:00 2001 From: Niko Skrypnik Date: Sun, 10 Mar 2013 00:42:53 +0200 Subject: [PATCH 1/2] Fix problem with typing non-ascii symbols on ANdroid Keyboard --- src/src/org/renpy/android/SDLSurfaceView.java | 36 +++++++++++++++++-- 1 file changed, 33 insertions(+), 3 deletions(-) diff --git a/src/src/org/renpy/android/SDLSurfaceView.java b/src/src/org/renpy/android/SDLSurfaceView.java index 1fc1c53514..e6a0214c6d 100644 --- a/src/src/org/renpy/android/SDLSurfaceView.java +++ b/src/src/org/renpy/android/SDLSurfaceView.java @@ -336,7 +336,7 @@ private void printConfig(EGL10 egl, EGLDisplay display, public SDLSurfaceView(Activity act, String argument) { super(act); - + Log.i("python", String.format("I'm alive!!")); SDLSurfaceView.instance = this; mActivity = act; @@ -351,6 +351,10 @@ public SDLSurfaceView(Activity act, String argument) { PowerManager pm = (PowerManager) act.getSystemService(Context.POWER_SERVICE); wakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "Screen On"); + requestFocus(); + Log.i("python", String.format("Focus is requested!!")); + setFocusable(true); + setFocusableInTouchMode(true); } @@ -943,7 +947,7 @@ public boolean onTouchEvent(final MotionEvent event) { @Override public boolean onKeyDown(int keyCode, final KeyEvent event) { - //Log.i("python", String.format("key down %d", keyCode)); + Log.i("python", String.format("key down %d", keyCode)); if (mInputActivated && nativeKey(keyCode, 1, event.getUnicodeChar())) { return true; } else { @@ -953,13 +957,39 @@ public boolean onKeyDown(int keyCode, final KeyEvent event) { @Override public boolean onKeyUp(int keyCode, final KeyEvent event) { - //Log.i("python", String.format("key up %d", keyCode)); + Log.i("python", String.format("key up %d", keyCode)); if (mInputActivated && nativeKey(keyCode, 0, event.getUnicodeChar())) { return true; } else { return super.onKeyUp(keyCode, event); } } + + @Override + public boolean onKeyMultiple(int keyCode, int count, KeyEvent event){ + String keys = event.getCharacters(); + char[] keysBuffer = new char[keys.length()]; + if (keyCode == 0){ + // FIXME: here is hardcoed value of "q" key + // on hacker's keyboard. It is passed to + // nativeKey function to get it worked if + // we get 9 and some non-ascii characters + // but it my cause some odd behaviour + keyCode = 45; + } + + if (mInputActivated){ + keys.getChars(0, keys.length(), keysBuffer, 0); + for(char c: keysBuffer){ + //Log.i("python", "Char from multiply " + (int) c); + // Calls both up/down events to emulate key pressing + nativeKey(keyCode, 1, (int) c); + nativeKey(keyCode, 0, (int) c); + } + } + + return true; + } static void activateInput() { mInputActivated = true; From 1407c5a4a7c7555b4aae992a0086c68275656477 Mon Sep 17 00:00:00 2001 From: Niko Skrypnik Date: Sun, 10 Mar 2013 00:53:48 +0200 Subject: [PATCH 2/2] Some code cleanup --- src/src/org/renpy/android/SDLSurfaceView.java | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/src/org/renpy/android/SDLSurfaceView.java b/src/src/org/renpy/android/SDLSurfaceView.java index e6a0214c6d..2d6ccfae4d 100644 --- a/src/src/org/renpy/android/SDLSurfaceView.java +++ b/src/src/org/renpy/android/SDLSurfaceView.java @@ -336,7 +336,6 @@ private void printConfig(EGL10 egl, EGLDisplay display, public SDLSurfaceView(Activity act, String argument) { super(act); - Log.i("python", String.format("I'm alive!!")); SDLSurfaceView.instance = this; mActivity = act; @@ -351,10 +350,6 @@ public SDLSurfaceView(Activity act, String argument) { PowerManager pm = (PowerManager) act.getSystemService(Context.POWER_SERVICE); wakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "Screen On"); - requestFocus(); - Log.i("python", String.format("Focus is requested!!")); - setFocusable(true); - setFocusableInTouchMode(true); } @@ -947,7 +942,7 @@ public boolean onTouchEvent(final MotionEvent event) { @Override public boolean onKeyDown(int keyCode, final KeyEvent event) { - Log.i("python", String.format("key down %d", keyCode)); + //Log.i("python", String.format("key down %d", keyCode)); if (mInputActivated && nativeKey(keyCode, 1, event.getUnicodeChar())) { return true; } else { @@ -957,7 +952,7 @@ public boolean onKeyDown(int keyCode, final KeyEvent event) { @Override public boolean onKeyUp(int keyCode, final KeyEvent event) { - Log.i("python", String.format("key up %d", keyCode)); + //Log.i("python", String.format("key up %d", keyCode)); if (mInputActivated && nativeKey(keyCode, 0, event.getUnicodeChar())) { return true; } else {