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

Unified Diff: content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java

Issue 759033002: Handle accent keys from physical keyboards. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: addressed review comments and moved common dead-key code to public static method Created 6 years 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: content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java
diff --git a/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java b/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java
index 5b8e505c0ef47f03b35ce9a194aeb08f604ac060..c29324fa39ae89a2bd9cbb59c84c079469a1e947 100644
--- a/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java
+++ b/content/public/android/java/src/org/chromium/content/browser/input/ImeAdapter.java
@@ -338,7 +338,12 @@ public class ImeAdapter {
}
public boolean dispatchKeyEvent(KeyEvent event) {
- return translateAndSendNativeEvents(event);
+ // Physical keyboards have their events come through here instead of
+ // AdapterInputConnection.
+ if (mInputConnection != null) {
+ return mInputConnection.sendKeyEvent(event);
+ }
+ return translateAndSendNativeEvents(event, 0);
}
private int shouldSendKeyEventWithKeyCode(String text) {
@@ -407,11 +412,11 @@ public class ImeAdapter {
translateAndSendNativeEvents(new KeyEvent(eventTime, eventTime,
KeyEvent.ACTION_DOWN, keyCode, 0, 0,
KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
- flags));
+ flags), 0);
translateAndSendNativeEvents(new KeyEvent(SystemClock.uptimeMillis(), eventTime,
KeyEvent.ACTION_UP, keyCode, 0, 0,
KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
- flags));
+ flags), 0);
}
// Calls from Java to C++
@@ -446,9 +451,9 @@ public class ImeAdapter {
// composition below.
if (keyCode > 0 && isCommit && mLastComposeText == null) {
mLastSyntheticKeyCode = keyCode;
- return translateAndSendNativeEvents(keyEvent)
+ return translateAndSendNativeEvents(keyEvent, 0)
&& translateAndSendNativeEvents(
- KeyEvent.changeAction(keyEvent, KeyEvent.ACTION_UP));
+ KeyEvent.changeAction(keyEvent, KeyEvent.ACTION_UP), 0);
}
// When typing, there is no issue sending KeyDown and KeyUp events around the
@@ -499,7 +504,7 @@ public class ImeAdapter {
nativeFinishComposingText(mNativeImeAdapterAndroid);
}
- boolean translateAndSendNativeEvents(KeyEvent event) {
+ boolean translateAndSendNativeEvents(KeyEvent event, int accentChar) {
if (mNativeImeAdapterAndroid == 0) return false;
int action = event.getAction();
@@ -517,9 +522,11 @@ public class ImeAdapter {
return false;
}
mViewEmbedder.onImeEvent();
+ int unicodeChar = AdapterInputConnection.maybeAddAccentToCharacter(
+ accentChar, event.getUnicodeChar());
return nativeSendKeyEvent(mNativeImeAdapterAndroid, event, event.getAction(),
getModifiers(event.getMetaState()), event.getEventTime(), event.getKeyCode(),
- /*isSystemKey=*/false, event.getUnicodeChar());
+ /*isSystemKey=*/false, unicodeChar);
}
boolean sendSyntheticKeyEvent(int eventType, long timestampMs, int keyCode, int modifiers,

Powered by Google App Engine
This is Rietveld 408576698