Merge "Fix incorrect matching of last character to unexpected names in contact dictionary."
diff --git a/Android.mk b/Android.mk
index ee1a82a..e453579 100755
--- a/Android.mk
+++ b/Android.mk
@@ -17,5 +17,7 @@
 
 #LOCAL_SDK_VERSION := current
 
+LOCAL_PROGUARD_FLAGS := -include $(LOCAL_PATH)/proguard.flags
+
 include $(BUILD_PACKAGE)
 include $(LOCAL_PATH)/dictionary/Android.mk
diff --git a/proguard.flags b/proguard.flags
new file mode 100644
index 0000000..0a5d2dd
--- /dev/null
+++ b/proguard.flags
@@ -0,0 +1,3 @@
+-keep class com.android.inputmethod.latin.BinaryDictionary {
+  int mDictLength;
+}
diff --git a/res/xml/kbd_symbols.xml b/res/xml/kbd_symbols.xml
index 067932b..ede7b50 100755
--- a/res/xml/kbd_symbols.xml
+++ b/res/xml/kbd_symbols.xml
@@ -77,7 +77,7 @@
         />
         <Key android:codes="45" android:keyLabel="-"
                 android:popupKeyboard="@xml/kbd_popup_template"
-                android:popupCharacters="–—"
+                android:popupCharacters="_–—"
         />
         <Key android:keyLabel="+"
                 android:popupKeyboard="@xml/kbd_popup_template"
diff --git a/res/xml/popup_punctuation.xml b/res/xml/popup_punctuation.xml
index 518e3f1..a29fb52 100644
--- a/res/xml/popup_punctuation.xml
+++ b/res/xml/popup_punctuation.xml
@@ -26,8 +26,8 @@
     >
 
     <Row android:rowEdgeFlags="top">
-        <Key android:keyLabel=";" android:keyEdgeFlags="left" />
-        <Key android:keyLabel="," />
+        <Key android:keyLabel=":" android:keyEdgeFlags="left" />
+        <Key android:keyLabel="/" />
         <Key android:keyLabel="&amp;" />
         <Key android:keyLabel="(" />
         <Key android:keyLabel=")" />
@@ -35,12 +35,12 @@
         <Key android:keyLabel="+" android:keyEdgeFlags="right" />
     </Row>
     <Row android:rowEdgeFlags="bottom">
-        <Key android:codes="58" android:keyLabel=":" android:keyEdgeFlags="left" />
-        <Key android:codes="47" android:keyLabel="/" />
-        <Key android:codes="64" android:keyLabel="\@" />
-        <Key android:codes="39" android:keyLabel="\'" />
-        <Key android:codes="34" android:keyLabel="&quot;" />
-        <Key android:codes="63" android:keyLabel="\?" />
-        <Key android:codes="33" android:keyLabel="!" android:keyEdgeFlags="right" />
+        <Key android:keyLabel=";" android:keyEdgeFlags="left" />
+        <Key android:keyLabel="," />
+        <Key android:keyLabel="\@" />
+        <Key android:keyLabel="\'" />
+        <Key android:keyLabel="&quot;" />
+        <Key android:keyLabel="\?" />
+        <Key android:keyLabel="!" android:keyEdgeFlags="right" />
     </Row>
 </Keyboard>
diff --git a/src/com/android/inputmethod/latin/KeyboardSwitcher.java b/src/com/android/inputmethod/latin/KeyboardSwitcher.java
index 4322997..438680c 100644
--- a/src/com/android/inputmethod/latin/KeyboardSwitcher.java
+++ b/src/com/android/inputmethod/latin/KeyboardSwitcher.java
@@ -147,8 +147,7 @@
         public boolean equals(KeyboardId other) {
           return other.mXml == this.mXml
               && other.mKeyboardMode == this.mKeyboardMode
-              && other.mEnableShiftLock == this.mEnableShiftLock
-              && other.mHasVoice == this.mHasVoice;
+              && other.mEnableShiftLock == this.mEnableShiftLock;
         }
 
         public int hashCode() {
diff --git a/src/com/android/inputmethod/latin/LatinIME.java b/src/com/android/inputmethod/latin/LatinIME.java
index 4c81b33..18b277c 100644
--- a/src/com/android/inputmethod/latin/LatinIME.java
+++ b/src/com/android/inputmethod/latin/LatinIME.java
@@ -534,6 +534,7 @@
         mDeleteCount = 0;
         mJustAddedAutoSpace = false;
         loadSettings();
+        updateShiftKeyState(attribute);
 
         setCandidatesViewShown(false);
         setSuggestions(null, false, false, false);