diff options
author | 2013-01-08 12:57:50 +0900 | |
---|---|---|
committer | 2013-01-10 15:47:21 +0900 | |
commit | 6a26de1d7e3bb3b277c0af6d678023b862c22a86 (patch) | |
tree | 428946318c9e0fff3e79ea5e6035de53f4891578 /java/src/com/android/inputmethod/event/EventInterpreter.java | |
parent | 424d76fbf59bea5f96694a31918568a7479b89be (diff) | |
download | latinime-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.java | 11 |
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; } |