aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/event/EventInterpreter.java
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2013-01-08 12:57:50 +0900
committerJean Chalard <jchalard@google.com>2013-01-10 15:47:21 +0900
commit6a26de1d7e3bb3b277c0af6d678023b862c22a86 (patch)
tree428946318c9e0fff3e79ea5e6035de53f4891578 /java/src/com/android/inputmethod/event/EventInterpreter.java
parent424d76fbf59bea5f96694a31918568a7479b89be (diff)
downloadlatinime-6a26de1d7e3bb3b277c0af6d678023b862c22a86.tar.gz
latinime-6a26de1d7e3bb3b277c0af6d678023b862c22a86.tar.xz
latinime-6a26de1d7e3bb3b277c0af6d678023b862c22a86.zip
Initial implementation for dead keys (B3)
Bug: 5037589 Change-Id: I9e1ff92df7d0c58eb7a0f33603adebc9efb86585
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;
}