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..c164e4d14bfab32ef54e5bd936f6a199642d1866 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,34 +127,26 @@ public class Desktop extends Activity { |
*/ |
@Override |
public boolean dispatchKeyEvent(KeyEvent event) { |
Lambros
2014/03/27 04:20:40
I don't understand why you've removed the handlers
Sergey Ulanov
2014/03/28 00:09:46
I was testing with the Google keyboard and it alre
|
- 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); |
- break; |
- |
- case KeyEvent.KEYCODE_POUND: |
- JniInterface.keyboardAction(KeyEvent.KEYCODE_SHIFT_LEFT, depressed); |
- JniInterface.keyboardAction(KeyEvent.KEYCODE_3, depressed); |
+ // 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 case when any of the modifiers keys is pressed. |
Lambros
2014/03/27 04:20:40
remove "when", s/is/are
Lambros
2014/03/27 15:41:53
... in the case when any of the modifier keys are
Sergey Ulanov
2014/03/28 00:09:46
Done.
Sergey Ulanov
2014/03/28 00:09:46
Done.
|
+ switch (event.getAction()) { |
Lambros
2014/03/27 04:20:40
Please add a default case. Findbugs will complain
Sergey Ulanov
2014/03/28 00:09:46
Done.
|
+ case KeyEvent.ACTION_DOWN: |
+ JniInterface.sendKeyEvent(event.getKeyCode(), true); |
break; |
- |
- case KeyEvent.KEYCODE_STAR: |
- JniInterface.keyboardAction(KeyEvent.KEYCODE_SHIFT_LEFT, depressed); |
- JniInterface.keyboardAction(KeyEvent.KEYCODE_8, depressed); |
+ case KeyEvent.ACTION_UP: |
+ JniInterface.sendKeyEvent(event.getKeyCode(), false); |
break; |
- |
- case KeyEvent.KEYCODE_PLUS: |
- JniInterface.keyboardAction(KeyEvent.KEYCODE_SHIFT_LEFT, depressed); |
- JniInterface.keyboardAction(KeyEvent.KEYCODE_EQUALS, depressed); |
+ case KeyEvent.ACTION_MULTIPLE: |
+ JniInterface.sendTextEvent(event.getCharacters()); |
break; |
- |
- default: |
- // We try to send all other key codes to the host directly. |
- JniInterface.keyboardAction(event.getKeyCode(), depressed); |
} |
- |
return super.dispatchKeyEvent(event); |
} |
} |