aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/event/EventInterpreter.java
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2013-01-09 23:15:48 -0800
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-01-09 23:15:49 -0800
commitae4c81993c201f501791520b8cd3697ff1f29649 (patch)
treeccd366113f0d3c4809d2493ca8890b8b9e7438ce /java/src/com/android/inputmethod/event/EventInterpreter.java
parent433f54ce9079588cb5b5c4ba4a9fd1a9f3e17eff (diff)
parent6a26de1d7e3bb3b277c0af6d678023b862c22a86 (diff)
downloadlatinime-ae4c81993c201f501791520b8cd3697ff1f29649.tar.gz
latinime-ae4c81993c201f501791520b8cd3697ff1f29649.tar.xz
latinime-ae4c81993c201f501791520b8cd3697ff1f29649.zip
Merge "Initial implementation for dead keys (B3)"
Diffstat (limited to 'java/src/com/android/inputmethod/event/EventInterpreter.java')
-rw-r--r--java/src/com/android/inputmethod/event/EventInterpreter.java11
1 files changed, 11 insertions, 0 deletions
diff --git a/java/src/com/android/inputmethod/event/EventInterpreter.java b/java/src/com/android/inputmethod/event/EventInterpreter.java
index 2874970ec..6efe899bb 100644
--- a/java/src/com/android/inputmethod/event/EventInterpreter.java
+++ b/java/src/com/android/inputmethod/event/EventInterpreter.java
@@ -19,9 +19,12 @@ package com.android.inputmethod.event;
import android.util.SparseArray;
import android.view.KeyEvent;
+import com.android.inputmethod.latin.CollectionUtils;
import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.LatinIME;
+import java.util.ArrayList;
+
/**
* This class implements the logic between receiving events and generating code points.
*
@@ -40,6 +43,7 @@ public class EventInterpreter {
final SparseArray<HardwareEventDecoder> mHardwareEventDecoders;
final SoftwareEventDecoder mSoftwareEventDecoder;
final LatinIME mLatinIme;
+ final ArrayList<Combiner> mCombiners;
/**
* Create a default interpreter.
@@ -74,6 +78,8 @@ public class EventInterpreter {
// capacity of 1.
mHardwareEventDecoders = new SparseArray<HardwareEventDecoder>(1);
mSoftwareEventDecoder = new SoftwareKeyboardEventDecoder();
+ mCombiners = CollectionUtils.newArrayList();
+ mCombiners.add(new DeadKeyCombiner());
mLatinIme = latinIme;
}
@@ -108,12 +114,17 @@ public class EventInterpreter {
private boolean onEvent(final Event event) {
Event currentlyProcessingEvent = event;
boolean processed = false;
+ for (int i = 0; i < mCombiners.size(); ++i) {
+ currentlyProcessingEvent = mCombiners.get(i).combine(event);
+ }
while (null != currentlyProcessingEvent) {
if (currentlyProcessingEvent.isCommittable()) {
mLatinIme.onCodeInput(currentlyProcessingEvent.mCodePoint,
Constants.EXTERNAL_KEYBOARD_COORDINATE,
Constants.EXTERNAL_KEYBOARD_COORDINATE);
processed = true;
+ } else if (event.isDead()) {
+ processed = true;
}
currentlyProcessingEvent = currentlyProcessingEvent.mNextEvent;
}