Fix odd "more" key behavior on tablet phone number keyboard

Bug: 3176540
Change-Id: Iaa1f3776d5ac236b2655910ede7522ceac36a9a1
diff --git a/java/res/xml-xlarge/kbd_phone.xml b/java/res/xml-xlarge/kbd_phone.xml
index 57575b6..842c74b 100644
--- a/java/res/xml-xlarge/kbd_phone.xml
+++ b/java/res/xml-xlarge/kbd_phone.xml
@@ -69,7 +69,7 @@
     </Row>
     <Row>
         <Key
-            latin:codes="@integer/key_switch_alpha_symbol"
+            latin:codes="@integer/key_shift"
             latin:keyLabel="@string/label_more_key"
             latin:keyLabelOption="fontNormal|alignLeft|alignBottom"
             latin:isModifier="true"
diff --git a/java/res/xml-xlarge/kbd_phone_symbols.xml b/java/res/xml-xlarge/kbd_phone_symbols.xml
index fea5504..9ba60ed 100644
--- a/java/res/xml-xlarge/kbd_phone_symbols.xml
+++ b/java/res/xml-xlarge/kbd_phone_symbols.xml
@@ -73,7 +73,7 @@
     </Row>
     <Row>
         <Key
-            latin:codes="@integer/key_switch_alpha_symbol"
+            latin:codes="@integer/key_shift"
             latin:keyLabel="@string/label_more_key"
             latin:keyLabelOption="fontNormal|alignLeft|alignBottom"
             latin:isModifier="true"
diff --git a/java/res/xml/kbd_qwerty_black_symbol.xml b/java/res/xml/kbd_qwerty_black_symbol.xml
index 840db9c..fe6b3a6 100644
--- a/java/res/xml/kbd_qwerty_black_symbol.xml
+++ b/java/res/xml/kbd_qwerty_black_symbol.xml
@@ -44,7 +44,7 @@
                 <default>
                     <Key
                         latin:codes="@integer/key_switch_alpha_symbol"
-                        latin:keyLabel="@string/label_symbol_key"
+                        latin:keyLabel="@string/label_to_symbol_key"
                         latin:keyWidth="20%p"
                         latin:isModifier="true"
                         latin:keyEdgeFlags="left" />
@@ -73,7 +73,7 @@
                 <default>
                     <Key
                         latin:codes="@integer/key_switch_alpha_symbol"
-                        latin:keyLabel="@string/label_symbol_key"
+                        latin:keyLabel="@string/label_to_symbol_key"
                         latin:keyWidth="15%p"
                         latin:isModifier="true"
                         latin:keyEdgeFlags="left" />
diff --git a/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java b/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java
index f1f8dc2..790f861 100644
--- a/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java
@@ -142,9 +142,18 @@
         final boolean voiceKeyEnabled = mVoiceKeyEnabled;
         final boolean hasVoiceKey = voiceKeyEnabled && !mVoiceButtonOnPrimary;
         final int imeOptions = mImeOptions;
-        mSymbolsId = new KeyboardId(locale, orientation, mode, KBD_SYMBOLS,
+        // Note: This comment is only applied for phone number keyboard layout.
+        // On non-xlarge device, "@integer/key_switch_alpha_symbol" key code is used to switch
+        // between "phone keyboard" and "phone symbols keyboard".  But on xlarge device,
+        // "@integer/key_shift" key code is used for that purpose in order to properly display
+        // "more" and "locked more" key labels.  To achieve these behavior, we should initialize
+        // mSymbolsId and mSymbolsShiftedId to "phone keyboard" and "phone symbols keyboard"
+        // respectively here for xlarge device's layout switching.
+        mSymbolsId = new KeyboardId(locale, orientation, mode,
+                mode == MODE_PHONE ? KBD_PHONE : KBD_SYMBOLS,
                 colorScheme, hasSettingsKey, voiceKeyEnabled, hasVoiceKey, imeOptions, true);
-        mSymbolsShiftedId = new KeyboardId(locale, orientation, mode, KBD_SYMBOLS_SHIFT,
+        mSymbolsShiftedId = new KeyboardId(locale, orientation, mode,
+                mode == MODE_PHONE ? KBD_PHONE_SYMBOLS : KBD_SYMBOLS_SHIFT,
                 colorScheme, hasSettingsKey, voiceKeyEnabled, hasVoiceKey, imeOptions, true);
     }