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

Side by Side 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, 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | remoting/android/java/src/org/chromium/chromoting/DesktopView.java » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.chromoting; 5 package org.chromium.chromoting;
6 6
7 import android.app.Activity; 7 import android.app.Activity;
8 import android.content.res.Configuration; 8 import android.content.res.Configuration;
9 import android.os.Bundle; 9 import android.os.Bundle;
10 import android.view.KeyEvent; 10 import android.view.KeyEvent;
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 return true; 96 return true;
97 97
98 case R.id.actionbar_send_ctrl_alt_del: 98 case R.id.actionbar_send_ctrl_alt_del:
99 { 99 {
100 int[] keys = { 100 int[] keys = {
101 KeyEvent.KEYCODE_CTRL_LEFT, 101 KeyEvent.KEYCODE_CTRL_LEFT,
102 KeyEvent.KEYCODE_ALT_LEFT, 102 KeyEvent.KEYCODE_ALT_LEFT,
103 KeyEvent.KEYCODE_FORWARD_DEL, 103 KeyEvent.KEYCODE_FORWARD_DEL,
104 }; 104 };
105 for (int key : keys) { 105 for (int key : keys) {
106 JniInterface.keyboardAction(key, true); 106 JniInterface.sendKeyEvent(key, true);
107 } 107 }
108 for (int key : keys) { 108 for (int key : keys) {
109 JniInterface.keyboardAction(key, false); 109 JniInterface.sendKeyEvent(key, false);
110 } 110 }
111 } 111 }
112 return true; 112 return true;
113 113
114 case R.id.actionbar_help: 114 case R.id.actionbar_help:
115 HelpActivity.launch(this, HELP_URL); 115 HelpActivity.launch(this, HELP_URL);
116 return true; 116 return true;
117 117
118 default: 118 default:
119 return super.onOptionsItemSelected(item); 119 return super.onOptionsItemSelected(item);
120 } 120 }
121 } 121 }
122 122
123 /** 123 /**
124 * Called once when a keyboard key is pressed, then again when that same key is released. This 124 * Called once when a keyboard key is pressed, then again when that same key is released. This
125 * is not guaranteed to be notified of all soft keyboard events: certian key boards might not 125 * is not guaranteed to be notified of all soft keyboard events: certian key boards might not
126 * call it at all, while others might skip it in certain situations (e.g. sw ipe input). 126 * call it at all, while others might skip it in certain situations (e.g. sw ipe input).
127 */ 127 */
128 @Override 128 @Override
129 public boolean dispatchKeyEvent(KeyEvent event) { 129 public boolean dispatchKeyEvent(KeyEvent event) {
130 // Send ACTION_MULTIPLE event as TextEvent.
131 //
132 // TODO(sergeyu): For all keys on English keyboard Android generates
133 // ACTION_DOWN/ACTION_UP events, so they are sent as KeyEvent instead of
134 // TextEvent. As result the host may handle them as non-English chars
135 // when it has non-English layout selected, which might be confusing for
136 // the user. This code should be fixed to send all text input events as
137 // TextEvent, but it cannot be done now because not all hosts support
138 // TextEvent. Also, to handle keyboard shortcuts properly this code will
139 // need to track the state of modifier keys (such as Ctrl or Alt) and
140 // send KeyEvents in the case any of the modifier keys are pressed.
141 if (event.getAction() == KeyEvent.ACTION_MULTIPLE) {
142 JniInterface.sendTextEvent(event.getCharacters());
143 return super.dispatchKeyEvent(event);
144 }
145
130 boolean depressed = event.getAction() == KeyEvent.ACTION_DOWN; 146 boolean depressed = event.getAction() == KeyEvent.ACTION_DOWN;
131 147
132 switch (event.getKeyCode()) { 148 switch (event.getKeyCode()) {
133 case KeyEvent.KEYCODE_AT: 149 case KeyEvent.KEYCODE_AT:
134 JniInterface.keyboardAction(KeyEvent.KEYCODE_SHIFT_LEFT, depress ed); 150 JniInterface.sendKeyEvent(KeyEvent.KEYCODE_SHIFT_LEFT, depressed );
135 JniInterface.keyboardAction(KeyEvent.KEYCODE_2, depressed); 151 JniInterface.sendKeyEvent(KeyEvent.KEYCODE_2, depressed);
136 break; 152 break;
137 153
138 case KeyEvent.KEYCODE_POUND: 154 case KeyEvent.KEYCODE_POUND:
139 JniInterface.keyboardAction(KeyEvent.KEYCODE_SHIFT_LEFT, depress ed); 155 JniInterface.sendKeyEvent(KeyEvent.KEYCODE_SHIFT_LEFT, depressed );
140 JniInterface.keyboardAction(KeyEvent.KEYCODE_3, depressed); 156 JniInterface.sendKeyEvent(KeyEvent.KEYCODE_3, depressed);
141 break; 157 break;
142 158
143 case KeyEvent.KEYCODE_STAR: 159 case KeyEvent.KEYCODE_STAR:
144 JniInterface.keyboardAction(KeyEvent.KEYCODE_SHIFT_LEFT, depress ed); 160 JniInterface.sendKeyEvent(KeyEvent.KEYCODE_SHIFT_LEFT, depressed );
145 JniInterface.keyboardAction(KeyEvent.KEYCODE_8, depressed); 161 JniInterface.sendKeyEvent(KeyEvent.KEYCODE_8, depressed);
146 break; 162 break;
147 163
148 case KeyEvent.KEYCODE_PLUS: 164 case KeyEvent.KEYCODE_PLUS:
149 JniInterface.keyboardAction(KeyEvent.KEYCODE_SHIFT_LEFT, depress ed); 165 JniInterface.sendKeyEvent(KeyEvent.KEYCODE_SHIFT_LEFT, depressed );
150 JniInterface.keyboardAction(KeyEvent.KEYCODE_EQUALS, depressed); 166 JniInterface.sendKeyEvent(KeyEvent.KEYCODE_EQUALS, depressed);
151 break; 167 break;
152 168
153 default: 169 default:
154 // We try to send all other key codes to the host directly. 170 // We try to send all other key codes to the host directly.
155 JniInterface.keyboardAction(event.getKeyCode(), depressed); 171 JniInterface.sendKeyEvent(event.getKeyCode(), depressed);
156 } 172 }
157 173
158 return super.dispatchKeyEvent(event); 174 return super.dispatchKeyEvent(event);
159 } 175 }
160 } 176 }
OLDNEW
« 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