Chromium Code Reviews| 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); |
| } |
| } |