Refactor symbol key state into KeyboardSwitcher

Change-Id: Idce4e9bf070b08b8a930fd8e800df9c4d8829f8f
diff --git a/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java b/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java
index fa3cf22..fdcf0ad 100644
--- a/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java
@@ -75,6 +75,7 @@
     private final LatinIME mInputMethodService;
     private final LanguageSwitcher mLanguageSwitcher;
 
+    private ModifierKeyState mSymbolKeyState = new ModifierKeyState();
     private KeyboardId mSymbolsId;
     private KeyboardId mSymbolsShiftedId;
 
@@ -382,6 +383,23 @@
         mInputView.setShiftLocked(shiftLocked);
     }
 
+    public void onPressSymbol() {
+        mSymbolKeyState.onPress();
+    }
+
+    public void onReleaseSymbol() {
+        mSymbolKeyState.onRelease();
+    }
+
+    public boolean isSymbolMomentary() {
+        return mSymbolKeyState.isMomentary();
+    }
+
+    public void onOtherKeyPressed() {
+        // TODO: shift key state will be handled too.
+        mSymbolKeyState.onOtherKeyPressed();
+    }
+
     public void toggleShift() {
         if (isAlphabetMode())
             return;
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index b3ac17b..c18174b 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -241,7 +241,6 @@
 
     // Modifier keys state
     private final ModifierKeyState mShiftKeyState = new ModifierKeyState();
-    private final ModifierKeyState mSymbolKeyState = new ModifierKeyState();
 
     private Tutorial mTutorial;
 
@@ -2323,11 +2322,11 @@
                 handleShift();
             }
         } else if (distinctMultiTouch && primaryCode == BaseKeyboard.KEYCODE_MODE_CHANGE) {
-            mSymbolKeyState.onPress();
+            switcher.onPressSymbol();
             changeKeyboardMode();
         } else {
             mShiftKeyState.onOtherKeyPressed();
-            mSymbolKeyState.onOtherKeyPressed();
+            switcher.onOtherKeyPressed();
         }
     }
 
@@ -2352,10 +2351,10 @@
             }
             mShiftKeyState.onRelease();
         } else if (distinctMultiTouch && primaryCode == BaseKeyboard.KEYCODE_MODE_CHANGE) {
-            if (mSymbolKeyState.isMomentary()) {
+            if (switcher.isSymbolMomentary()) {
                 changeKeyboardMode();
             }
-            mSymbolKeyState.onRelease();
+            switcher.onReleaseSymbol();
         }
     }