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

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

Issue 214173002: Send TextEvent message from Android client (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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
« no previous file with comments | « no previous file | remoting/android/java/src/org/chromium/chromoting/DesktopView.java » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 b75d97d4d6f9775a49a15d9da7272d5b2b98418b..570fd806dade70232f9bd63f813aa00d62b33004 100644
--- a/remoting/android/java/src/org/chromium/chromoting/Desktop.java
+++ b/remoting/android/java/src/org/chromium/chromoting/Desktop.java
@@ -103,10 +103,10 @@ public class Desktop extends Activity {
KeyEvent.KEYCODE_FORWARD_DEL,
};
for (int key : keys) {
- JniInterface.keyboardAction(key, true);
+ JniInterface.sendKeyEvent(key, true);
}
for (int key : keys) {
- JniInterface.keyboardAction(key, false);
+ JniInterface.sendKeyEvent(key, false);
}
}
return true;
@@ -127,32 +127,48 @@ public class Desktop extends Activity {
*/
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
+ // Send ACTION_MULTIPLE event as TextEvent.
+ //
+ // TODO(sergeyu): For all keys on English keyboard Android generates
+ // ACTION_DOWN/ACTION_UP events, so they are sent as KeyEvent instead of
+ // TextEvent. As result the host may handle them as non-English chars
+ // when it has non-English layout selected, which might be confusing for
+ // the user. This code should be fixed to send all text input events as
+ // TextEvent, but it cannot be done now because not all hosts support
+ // TextEvent. Also, to handle keyboard shortcuts properly this code will
+ // need to track the state of modifier keys (such as Ctrl or Alt) and
+ // send KeyEvents in the case any of the modifier keys are pressed.
+ if (event.getAction() == KeyEvent.ACTION_MULTIPLE) {
+ JniInterface.sendTextEvent(event.getCharacters());
+ return super.dispatchKeyEvent(event);
+ }
+
boolean depressed = event.getAction() == KeyEvent.ACTION_DOWN;
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_AT:
- JniInterface.keyboardAction(KeyEvent.KEYCODE_SHIFT_LEFT, depressed);
- JniInterface.keyboardAction(KeyEvent.KEYCODE_2, depressed);
+ JniInterface.sendKeyEvent(KeyEvent.KEYCODE_SHIFT_LEFT, depressed);
+ JniInterface.sendKeyEvent(KeyEvent.KEYCODE_2, depressed);
break;
case KeyEvent.KEYCODE_POUND:
- JniInterface.keyboardAction(KeyEvent.KEYCODE_SHIFT_LEFT, depressed);
- JniInterface.keyboardAction(KeyEvent.KEYCODE_3, depressed);
+ JniInterface.sendKeyEvent(KeyEvent.KEYCODE_SHIFT_LEFT, depressed);
+ JniInterface.sendKeyEvent(KeyEvent.KEYCODE_3, depressed);
break;
case KeyEvent.KEYCODE_STAR:
- JniInterface.keyboardAction(KeyEvent.KEYCODE_SHIFT_LEFT, depressed);
- JniInterface.keyboardAction(KeyEvent.KEYCODE_8, depressed);
+ JniInterface.sendKeyEvent(KeyEvent.KEYCODE_SHIFT_LEFT, depressed);
+ JniInterface.sendKeyEvent(KeyEvent.KEYCODE_8, depressed);
break;
case KeyEvent.KEYCODE_PLUS:
- JniInterface.keyboardAction(KeyEvent.KEYCODE_SHIFT_LEFT, depressed);
- JniInterface.keyboardAction(KeyEvent.KEYCODE_EQUALS, depressed);
+ JniInterface.sendKeyEvent(KeyEvent.KEYCODE_SHIFT_LEFT, depressed);
+ JniInterface.sendKeyEvent(KeyEvent.KEYCODE_EQUALS, depressed);
break;
default:
// We try to send all other key codes to the host directly.
- JniInterface.keyboardAction(event.getKeyCode(), depressed);
+ JniInterface.sendKeyEvent(event.getKeyCode(), depressed);
}
return super.dispatchKeyEvent(event);
« no previous file with comments | « no previous file | remoting/android/java/src/org/chromium/chromoting/DesktopView.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698