summaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorTor Lillqvist <tml@iki.fi>2013-02-28 01:31:45 +0200
committerTor Lillqvist <tml@iki.fi>2013-02-28 01:31:45 +0200
commit2769264989fb5ad210d271bf6c3b5586aeb8769b (patch)
treec1a7b1c262ec4b08ecdae4df18d59a825f4c5e56 /android
parent3cf4f1a13b61592b1af8040692029216d9c90d4c (diff)
Some keys need special handling
Change-Id: Ic2d2d3889d1facbf0042a946fdaf9acd472d0f94
Diffstat (limited to 'android')
-rw-r--r--android/experimental/desktop/src/org/libreoffice/android/experimental/desktop/Desktop.java42
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;
}