Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(343)

Unified Diff: remoting/android/java/src/org/chromium/chromoting/Desktop.java

Issue 21236002: Chromoting Android app mouse/keyboard bugfixes and enhancements (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: One last (TODO) comment change Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: remoting/android/java/src/org/chromium/chromoting/Desktop.java
diff --git a/remoting/android/java/src/org/chromium/chromoting/Desktop.java b/remoting/android/java/src/org/chromium/chromoting/Desktop.java
index 7c8bb1141e858c8e2420deea72990f18d49c3879..1377b333875d04d4d66c793e4d0f90de8fbf8983 100644
--- a/remoting/android/java/src/org/chromium/chromoting/Desktop.java
+++ b/remoting/android/java/src/org/chromium/chromoting/Desktop.java
@@ -67,14 +67,41 @@ public class Desktop extends Activity {
}
}
- /** Called when a hardware key is pressed, and usually when a software key is pressed. */
+ /**
+ * Called once when a keyboard key is pressed, then again when that same key is released. This
+ * is not guaranteed to be notified of all soft keyboard events: certian keyboards might not
+ * call it at all, while others might skip it in certain situations (e.g. swipe input).
+ */
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
- JniInterface.keyboardAction(event.getKeyCode(), event.getAction() == KeyEvent.ACTION_DOWN);
+ boolean depressed = event.getAction() == KeyEvent.ACTION_DOWN;
- if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
- // We stop this event from propagating further to prevent the keyboard from closing.
- return true;
+ switch (event.getKeyCode()) {
+ case KeyEvent.KEYCODE_AT:
+ JniInterface.keyboardAction(KeyEvent.KEYCODE_SHIFT_LEFT, depressed);
+ JniInterface.keyboardAction(KeyEvent.KEYCODE_2, depressed);
+ break;
+ case KeyEvent.KEYCODE_POUND:
+ JniInterface.keyboardAction(KeyEvent.KEYCODE_SHIFT_LEFT, depressed);
+ JniInterface.keyboardAction(KeyEvent.KEYCODE_3, depressed);
+ break;
+ case KeyEvent.KEYCODE_STAR:
+ JniInterface.keyboardAction(KeyEvent.KEYCODE_SHIFT_LEFT, depressed);
+ JniInterface.keyboardAction(KeyEvent.KEYCODE_8, depressed);
+ break;
+ case KeyEvent.KEYCODE_PLUS:
+ JniInterface.keyboardAction(KeyEvent.KEYCODE_SHIFT_LEFT, depressed);
+ JniInterface.keyboardAction(KeyEvent.KEYCODE_EQUALS, depressed);
+ break;
+ default:
+ // We try to send all other key codes to the host directly.
+ JniInterface.keyboardAction(event.getKeyCode(), depressed);
+
+ if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER ||
+ event.getKeyCode() == KeyEvent.KEYCODE_NUMPAD_ENTER) {
+ // We stop this key from propagating to prevent the keyboard from closing.
+ return true;
+ }
}
return super.dispatchKeyEvent(event);
« no previous file with comments | « remoting/android/java/AndroidManifest.xml ('k') | remoting/android/java/src/org/chromium/chromoting/DesktopView.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698