diff options
author | Tor Lillqvist <tml@iki.fi> | 2013-02-28 01:31:45 +0200 |
---|---|---|
committer | Tor Lillqvist <tml@iki.fi> | 2013-02-28 01:31:45 +0200 |
commit | 2769264989fb5ad210d271bf6c3b5586aeb8769b (patch) | |
tree | c1a7b1c262ec4b08ecdae4df18d59a825f4c5e56 /android/experimental/desktop | |
parent | 3cf4f1a13b61592b1af8040692029216d9c90d4c (diff) |
Some keys need special handling
Change-Id: Ic2d2d3889d1facbf0042a946fdaf9acd472d0f94
Diffstat (limited to 'android/experimental/desktop')
-rw-r--r-- | android/experimental/desktop/src/org/libreoffice/android/experimental/desktop/Desktop.java | 42 |
1 files changed, 38 insertions, 4 deletions
diff --git a/android/experimental/desktop/src/org/libreoffice/android/experimental/desktop/Desktop.java b/android/experimental/desktop/src/org/libreoffice/android/experimental/desktop/Desktop.java index ba3d6da05b0e..aebcfdf67251 100644 --- a/android/experimental/desktop/src/org/libreoffice/android/experimental/desktop/Desktop.java +++ b/android/experimental/desktop/src/org/libreoffice/android/experimental/desktop/Desktop.java @@ -22,6 +22,7 @@ import android.graphics.Rect; import android.os.Bundle; import android.text.InputType; import android.util.Log; +import android.view.KeyEvent; import android.view.MotionEvent; import android.view.ScaleGestureDetector; import android.view.View; @@ -30,6 +31,7 @@ import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputConnection; import android.view.inputmethod.InputMethodManager; +import com.sun.star.awt.Key; import com.sun.star.lang.XMultiComponentFactory; import com.sun.star.uno.XComponentContext; @@ -149,6 +151,11 @@ public class Desktop } } + static short getTimestamp() + { + return (short) (System.currentTimeMillis() % Short.MAX_VALUE); + } + class BitmapView extends View { @@ -188,6 +195,35 @@ public class Desktop invalidate(); } + @Override public boolean onKeyDown(int keyCode, KeyEvent event) + { + switch (keyCode) { + case KeyEvent.KEYCODE_0: + case KeyEvent.KEYCODE_1: + case KeyEvent.KEYCODE_2: + case KeyEvent.KEYCODE_3: + case KeyEvent.KEYCODE_4: + case KeyEvent.KEYCODE_5: + case KeyEvent.KEYCODE_6: + case KeyEvent.KEYCODE_7: + case KeyEvent.KEYCODE_8: + case KeyEvent.KEYCODE_9: + Desktop.key((char) ('0' + keyCode - KeyEvent.KEYCODE_0), Desktop.getTimestamp()); + return true; + case KeyEvent.KEYCODE_DEL: + Desktop.key((char) Key.BACKSPACE, Desktop.getTimestamp()); + return true; + case KeyEvent.KEYCODE_ENTER: + Desktop.key((char) Key.RETURN, Desktop.getTimestamp()); + return true; + case KeyEvent.KEYCODE_TAB: + Desktop.key((char) Key.TAB, Desktop.getTimestamp()); + return true; + default: + return false; + } + } + @Override public boolean onTouchEvent(MotionEvent event) { if (!renderedOnce) @@ -215,8 +251,7 @@ public class Desktop case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_UP: case MotionEvent.ACTION_MOVE: - short timestamp = (short) (System.currentTimeMillis() % Short.MAX_VALUE); - Desktop.touch(event.getActionMasked(), (int) event.getX(), (int) event.getY(), timestamp); + Desktop.touch(event.getActionMasked(), (int) event.getX(), (int) event.getY(), Desktop.getTimestamp()); break; } @@ -249,9 +284,8 @@ public class Desktop @Override public boolean commitText(CharSequence text, int newCursorPosition) { Log.i(TAG, "commitText(" + text + ", " + newCursorPosition + ")"); - short timestamp = (short) (System.currentTimeMillis() % Short.MAX_VALUE); for (int i = 0; i < text.length(); i++) { - Desktop.key(text.charAt(i), timestamp); + Desktop.key(text.charAt(i), Desktop.getTimestamp()); } return true; } |