diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
index 5c719edb95fc30bb1e7ec39bd9ea5b778968bc91..97457b2f74afce6ac2d3764156ea3bf4455b16d2 100644
--- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
+++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
@@ -426,13 +426,17 @@ public final class InputLogic {
             cancelDoubleSpacePeriodCountdown();
         }
 
-        if (processedEvent.isConsumed()) {
-            handleConsumedEvent(processedEvent, inputTransaction);
-        } else if (processedEvent.isFunctionalKeyEvent()) {
-            handleFunctionalEvent(processedEvent, inputTransaction, currentKeyboardScriptId,
-                    handler);
-        } else {
-            handleNonFunctionalEvent(processedEvent, inputTransaction, handler);
+        Event currentEvent = processedEvent;
+        while (null != currentEvent) {
+            if (currentEvent.isConsumed()) {
+                handleConsumedEvent(currentEvent, inputTransaction);
+            } else if (currentEvent.isFunctionalKeyEvent()) {
+                handleFunctionalEvent(currentEvent, inputTransaction, currentKeyboardScriptId,
+                        handler);
+            } else {
+                handleNonFunctionalEvent(currentEvent, inputTransaction, handler);
+            }
+            currentEvent = currentEvent.mNextEvent;
         }
         if (!inputTransaction.didAutoCorrect() && processedEvent.mKeyCode != Constants.CODE_SHIFT
                 && processedEvent.mKeyCode != Constants.CODE_CAPSLOCK