diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
index 387ed39..e056a26 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
@@ -525,10 +525,10 @@
         null, null, null, null, null, null, null, null, null, null,
         /* ~ more_keys_for_n */
         // Label for "switch to alphabetic" key.
-        // U+0623: "ا" ARABIC LETTER ALEF
+        // U+0623: "أ" ARABIC LETTER ALEF WITH HAMZA ABOVE
         // U+200C: ZERO WIDTH NON-JOINER
         // U+0628: "ب" ARABIC LETTER BEH
-        // U+062C: "پ" ARABIC LETTER PEH
+        // U+062C: "ج" ARABIC LETTER JEEM
         /* label_to_alpha_key */ "\u0623\u200C\u0628\u200C\u062C",
         /* more_keys_for_y ~ */
         null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Arabic.java b/tests/src/com/android/inputmethod/keyboard/layout/Arabic.java
index 65b050b..6fbede8 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Arabic.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Arabic.java
@@ -95,10 +95,10 @@
             return ARABIC_DIACRITICS;
         }
 
-        // U+0623: "ا" ARABIC LETTER ALEF
+        // U+0623: "أ" ARABIC LETTER ALEF WITH HAMZA ABOVE
         // U+200C: ZERO WIDTH NON-JOINER
         // U+0628: "ب" ARABIC LETTER BEH
-        // U+062C: "پ" ARABIC LETTER PEH
+        // U+062C: "ج" ARABIC LETTER JEEM
         private static final ExpectedKey ARABIC_ALPHABET_KEY = key(
                 "\u0623\u200C\u0628\u200C\u062C", Constants.CODE_SWITCH_ALPHA_SYMBOL);
         // U+0663: "٣" ARABIC-INDIC DIGIT THREE
@@ -107,10 +107,6 @@
         // U+061F: "؟" ARABIC QUESTION MARK
         private static final ExpectedKey ARABIC_SYMBOLS_KEY = key(
                 "\u0663\u0662\u0661\u061F", Constants.CODE_SWITCH_ALPHA_SYMBOL);
-        // U+0663: "٣" ARABIC-INDIC DIGIT THREE
-        // U+0662: "٢" ARABIC-INDIC DIGIT TWO
-        // U+0661: "١" ARABIC-INDIC DIGIT ONE
-        // U+061F: "؟" ARABIC QUESTION MARK
         private static final ExpectedKey ARABIC_BACK_TO_SYMBOLS_KEY = key(
                 "\u0663\u0662\u0661\u061F", Constants.CODE_SHIFT);
 
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Hindi.java b/tests/src/com/android/inputmethod/keyboard/layout/Hindi.java
index 0ba768b..c1d1616 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Hindi.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Hindi.java
@@ -77,8 +77,7 @@
 
         // U+20B9: "₹" INDIAN RUPEE SIGN
         private static final ExpectedKey CURRENCY_HINDI = key("\u20B9",
-                Symbols.DOLLAR_SIGN, Symbols.CENT_SIGN, Symbols.EURO_SIGN, Symbols.POUND_SIGN,
-                Symbols.YEN_SIGN, Symbols.PESO_SIGN);
+                Symbols.CURRENCY_GENERIC_MORE_KEYS);
     }
 
     @Override
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Khmer.java b/tests/src/com/android/inputmethod/keyboard/layout/Khmer.java
new file mode 100644
index 0000000..61ade8b
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Khmer.java
@@ -0,0 +1,322 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout;
+
+import com.android.inputmethod.keyboard.KeyboardId;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+import com.android.inputmethod.latin.Constants;
+
+import java.util.Locale;
+
+/**
+ * The Khmer alphabet keyboard.
+ */
+public final class Khmer extends LayoutBase {
+    private static final String LAYOUT_NAME = "khmer";
+
+    public Khmer(final LayoutCustomizer customizer) {
+        super(customizer, Symbols.class, SymbolsShifted.class);
+    }
+
+    @Override
+    public String getName() { return LAYOUT_NAME; }
+
+    public static class KhmerCustomizer extends LayoutCustomizer {
+        public KhmerCustomizer(final Locale locale) { super(locale); }
+
+        @Override
+        public ExpectedKey getAlphabetKey() { return KHMER_ALPHABET_KEY; }
+
+        @Override
+        public ExpectedKey getCurrencyKey() { return CURRENCY_DOLLAR_WITH_RIEL; }
+
+        @Override
+        public ExpectedKey[] getRightShiftKeys(final boolean isPhone) { return EMPTY_KEYS; }
+
+        // U+1780: "ក" KHMER LETTER KA
+        // U+1781: "ខ" KHMER LETTER KHA
+        // U+1782: "គ" KHMER LETTER KO
+        private static final ExpectedKey KHMER_ALPHABET_KEY = key(
+                "\u1780\u1781\u1782", Constants.CODE_SWITCH_ALPHA_SYMBOL);
+
+        // U+17DB: "៛" KHMER CURRENCY SYMBOL RIEL
+        private static final ExpectedKey CURRENCY_DOLLAR_WITH_RIEL = key(Symbols.DOLLAR_SIGN,
+                moreKey("\u17DB"), Symbols.CENT_SIGN, Symbols.POUND_SIGN, Symbols.EURO_SIGN,
+                Symbols.YEN_SIGN, Symbols.PESO_SIGN);
+    }
+
+    @Override
+    ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) {
+        if (isPhone) {
+            return ALPHABET_COMMON;
+        }
+        final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
+        builder.addKeysOnTheRightOfRow(4, EXCLAMATION_AND_QUESTION_MARKS);
+        return builder.build();
+    }
+
+    @Override
+    public ExpectedKey[][] getCommonAlphabetShiftLayout(final boolean isPhone,
+            final int elementId) {
+        if (elementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED) {
+            return getCommonAlphabetLayout(isPhone);
+        }
+        return ALPHABET_SHIFTED_COMMON;
+    }
+
+    // Helper method to create alphabet layout by adding special function keys.
+    @Override
+    ExpectedKeyboardBuilder convertCommonLayoutToKeyboard(final ExpectedKeyboardBuilder builder,
+            final boolean isPhone) {
+        final LayoutCustomizer customizer = getCustomizer();
+        final ExpectedKey[] spacebar = joinKeys(
+                customizer.getKeysLeftToSpacebar(isPhone),
+                customizer.getSpaceKeys(isPhone),
+                customizer.getKeysRightToSpacebar(isPhone));
+        builder.setKeysOfRow(5, spacebar);
+        if (isPhone) {
+            builder.addKeysOnTheRightOfRow(4, DELETE_KEY)
+                    .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey())
+                    .addKeysOnTheRightOfRow(5, key(ENTER_KEY, EMOJI_KEY));
+        } else {
+            builder.addKeysOnTheRightOfRow(1, DELETE_KEY)
+                    .addKeysOnTheRightOfRow(3, ENTER_KEY)
+                    .addKeysOnTheLeftOfRow(5, customizer.getSymbolsKey(), SETTINGS_KEY)
+                    .addKeysOnTheRightOfRow(5, EMOJI_KEY);
+        }
+        builder.addKeysOnTheLeftOfRow(4, customizer.getLeftShiftKeys(isPhone))
+                .addKeysOnTheRightOfRow(4, customizer.getRightShiftKeys(isPhone));
+        return builder;
+    }
+
+    private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    // U+17E1: "១" KHMER DIGIT ONE
+                    // U+17F1: "៱" KHMER SYMBOL LEK ATTAK MUOY
+                    key("\u17E1", joinMoreKeys("1", "\u17F1")),
+                    // U+17E2: "២" KHMER DIGIT TWO
+                    // U+17F2: "៲" KHMER SYMBOL LEK ATTAK PII
+                    key("\u17E2", joinMoreKeys("2", "\u17F2")),
+                    // U+17E3: "៣" KHMER DIGIT THREE
+                    // U+17F3: "៳" KHMER SYMBOL LEK ATTAK BEI
+                    key("\u17E3", joinMoreKeys("3", "\u17F3")),
+                    // U+17E4: "៤" KHMER DIGIT FOUR
+                    // U+17F4: "៴" KHMER SYMBOL LEK ATTAK BUON
+                    key("\u17E4", joinMoreKeys("4", "\u17F4")),
+                    // U+17E5: "៥" KHMER DIGIT FIVE
+                    // U+17F5: "៵" KHMER SYMBOL LEK ATTAK PRAM
+                    key("\u17E5", joinMoreKeys("5", "\u17F5")),
+                    // U+17E6: "៦" KHMER DIGIT SIX
+                    // U+17F6: "៶" KHMER SYMBOL LEK ATTAK PRAM-MUOY
+                    key("\u17E6", joinMoreKeys("6", "\u17F6")),
+                    // U+17E7: "៧" KHMER DIGIT SEVEN
+                    // U+17F7: "៷" KHMER SYMBOL LEK ATTAK PRAM-PII
+                    key("\u17E7", joinMoreKeys("7", "\u17F7")),
+                    // U+17E8: "៨" KHMER DIGIT EIGHT
+                    // U+17F8: "៸" KHMER SYMBOL LEK ATTAK PRAM-BEI
+                    key("\u17E8", joinMoreKeys("8", "\u17F8")),
+                    // U+17E9: "៩" KHMER DIGIT NINE
+                    // U+17F9: "៹" KHMER SYMBOL LEK ATTAK PRAM-BUON
+                    key("\u17E9", joinMoreKeys("9", "\u17F9")),
+                    // U+17E0: "០" KHMER DIGIT ZERO
+                    // U+17F0: "៰" KHMER SYMBOL LEK ATTAK SON
+                    key("\u17E0", joinMoreKeys("0", "\u17F0")),
+                    // U+17A5: "ឥ" KHMER INDEPENDENT VOWEL QI
+                    // U+17A6: "ឦ" KHMER INDEPENDENT VOWEL QII
+                    key("\u17A5", moreKey("\u17A6")),
+                    // U+17B2: "ឲ" KHMER INDEPENDENT VOWEL QOO TYPE TWO
+                    // U+17B1: "ឱ" KHMER INDEPENDENT VOWEL QOO TYPE ONE
+                    key("\u17B2", moreKey("\u17B1")))
+            .setKeysOfRow(2,
+                    // U+1786: "ឆ" KHMER LETTER CHA
+                    key("\u1786"),
+                    // U+17B9: "ឹ" KHMER VOWEL SIGN Y
+                    key("\u17B9"),
+                    // U+17C1: "េ" KHMER VOWEL SIGN E
+                    key("\u17C1"),
+                    // U+179A: "រ" KHMER LETTER RO
+                    key("\u179A"),
+                    // U+178F: "ត" KHMER LETTER TA
+                    key("\u178F"),
+                    // U+1799: "យ" KHMER LETTER YO
+                    key("\u1799"),
+                    // U+17BB: "ុ" KHMER VOWEL SIGN U
+                    key("\u17BB"),
+                    // U+17B7: "ិ" KHMER VOWEL SIGN I
+                    key("\u17B7"),
+                    // U+17C4: "ោ" KHMER VOWEL SIGN OO
+                    key("\u17C4"),
+                    // U+1795: "ផ" KHMER LETTER PHA
+                    key("\u1795"),
+                    // U+17C0: "ៀ" KHMER VOWEL SIGN IE
+                    key("\u17C0"),
+                    // U+17AA: "ឪ" KHMER INDEPENDENT VOWEL QUUV
+                    // U+17A7: "ឧ" KHMER INDEPENDENT VOWEL QU
+                    // U+17B1: "ឱ" KHMER INDEPENDENT VOWEL QOO TYPE ONE
+                    // U+17B3: "ឳ" KHMER INDEPENDENT VOWEL QAU
+                    // U+17A9: "ឩ" KHMER INDEPENDENT VOWEL QUU
+                    // U+17A8: "ឨ" KHMER INDEPENDENT VOWEL QUK
+                    key("\u17AA", joinMoreKeys("\u17A7", "\u17B1", "\u17B3", "\u17A9", "\u17A8")))
+            .setKeysOfRow(3,
+                    // U+17B6: "ា" KHMER VOWEL SIGN AA
+                    key("\u17B6"),
+                    // U+179F: "ស" KHMER LETTER SA
+                    key("\u179F"),
+                    // U+178A: "ដ" KHMER LETTER DA
+                    key("\u178A"),
+                    // U+1790: "ថ" KHMER LETTER THA
+                    key("\u1790"),
+                    // U+1784: "ង" KHMER LETTER NGO
+                    key("\u1784"),
+                    // U+17A0: "ហ" KHMER LETTER HA
+                    key("\u17A0"),
+                    // U+17D2: "្" KHMER SIGN COENG
+                    key("\u17D2"),
+                    // U+1780: "ក" KHMER LETTER KA
+                    key("\u1780"),
+                    // U+179B: "ល" KHMER LETTER LO
+                    key("\u179B"),
+                    // U+17BE: "ើ" KHMER VOWEL SIGN OE
+                    key("\u17BE"),
+                    // U+17CB: "់" KHMER SIGN BANTOC
+                    key("\u17CB"),
+                    // U+17AE: "ឮ" KHMER INDEPENDENT VOWEL LYY
+                    // U+17AD: "ឭ" KHMER INDEPENDENT VOWEL LY
+                    // U+17B0: "ឰ" KHMER INDEPENDENT VOWEL QAI
+                    key("\u17AE", joinMoreKeys("\u17AD", "\u17B0")))
+            .setLabelsOfRow(4,
+                    // U+178B: "ឋ" KHMER LETTER TTHA
+                    // U+1781: "ខ" KHMER LETTER KHA
+                    // U+1785: "ច" KHMER LETTER CA
+                    // U+179C: "វ" KHMER LETTER VO
+                    // U+1794: "ប" KHMER LETTER BA
+                    // U+1793: "ន" KHMER LETTER NO
+                    // U+1798: "ម" KHMER LETTER MO
+                    // U+17BB/U+17C6: "ុំ" KHMER VOWEL SIGN U/KHMER SIGN NIKAHIT
+                    // U+17D4: "។" KHMER SIGN KHAN
+                    // U+17CA: "៊" KHMER SIGN TRIISAP
+                    "\u178B", "\u1781", "\u1785", "\u179C", "\u1794", "\u1793", "\u1798",
+                    "\u17BB\u17C6", "\u17D4", "\u17CA")
+            .build();
+
+    private static final ExpectedKey[][] ALPHABET_SHIFTED_COMMON = new ExpectedKeyboardBuilder()
+            .setKeysOfRow(1,
+                    key("!", ZWJ_KEY),
+                    // U+17D7: "ៗ" KHMER SIGN LEK TOO
+                    key("\u17D7", ZWNJ_KEY),
+                    // U+17D1: "៑" KHMER SIGN VIRIAM
+                    key("\"", moreKey("\u17D1")),
+                    // U+17DB: "៛" KHMER CURRENCY SYMBOL RIEL
+                    key("\u17DB", joinMoreKeys(Symbols.DOLLAR_SIGN, Symbols.EURO_SIGN)),
+                    // U+17D6: "៖" KHMER SIGN CAMNUC PII KUUH
+                    key("%", moreKey("\u17D6")),
+                    // U+17CD: "៍" KHMER SIGN TOANDAKHIAT
+                    // U+17D9: "៙" KHMER SIGN PHNAEK MUAN
+                    key("\u17CD", moreKey("\u17D9")),
+                    // U+17D0: "័" KHMER SIGN SAMYOK SANNYA
+                    // U+17DA: "៚" KHMER SIGN KOOMUUT
+                    key("\u17D0", moreKey("\u17DA")),
+                    // U+17CF: "៏" KHMER SIGN AHSDA
+                    key("\u17CF", moreKey("*")),
+                    // U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+                    key("(", joinMoreKeys("{", "\u00AB")),
+                    // U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+                    key(")", joinMoreKeys("}", "\u00BB")),
+                    // U+17CC: "៌" KHMER SIGN ROBAT
+                    // U+00D7: "×" MULTIPLICATION SIGN
+                    key("\u17CC", moreKey("\u00D7")),
+                    // U+17CE: "៎" KHMER SIGN KAKABAT
+                    key("\u17CE"))
+            .setKeysOfRow(2,
+                    // U+1788: "ឈ" KHMER LETTER CHO
+                    // U+17DC: "ៜ" KHMER SIGN AVAKRAHASANYA
+                    key("\u1788", moreKey("\u17DC")),
+                    // U+17BA: "ឺ" KHMER VOWEL SIGN YY
+                    // U+17DD: "៝" KHMER SIGN ATTHACAN
+                    key("\u17BA", moreKey("\u17DD")),
+                    // U+17C2: "ែ" KHMER VOWEL SIGN AE
+                    key("\u17C2"),
+                    // U+17AC: "ឬ" KHMER INDEPENDENT VOWEL RYY
+                    // U+17AB: "ឫ" KHMER INDEPENDENT VOWEL RY
+                    key("\u17AC", moreKey("\u17AB")),
+                    // U+1791: "ទ" KHMER LETTER TO
+                    key("\u1791"),
+                    // U+17BD: "ួ" KHMER VOWEL SIGN UA
+                    key("\u17BD"),
+                    // U+17BC: "ូ" KHMER VOWEL SIGN UU
+                    key("\u17BC"),
+                    // U+17B8: "ី" KHMER VOWEL SIGN II
+                    key("\u17B8"),
+                    // U+17C5: "ៅ" KHMER VOWEL SIGN AU
+                    key("\u17C5"),
+                    // U+1797: "ភ" KHMER LETTER PHO
+                    key("\u1797"),
+                    // U+17BF: "ឿ" KHMER VOWEL SIGN YA
+                    key("\u17BF"),
+                    // U+17B0: "ឰ" KHMER INDEPENDENT VOWEL QAI
+                    key("\u17B0"))
+            .setKeysOfRow(3,
+                    // U+17B6/U+17C6: "ាំ" KHMER VOWEL SIGN AA/KHMER SIGN NIKAHIT
+                    key("\u17B6\u17C6"),
+                    // U+17C3: "ៃ" KHMER VOWEL SIGN AI
+                    key("\u17C3"),
+                    // U+178C: "ឌ" KHMER LETTER DO
+                    key("\u178C"),
+                    // U+1792: "ធ" KHMER LETTER THO
+                    key("\u1792"),
+                    // U+17A2: "អ" KHMER LETTER QAE
+                    key("\u17A2"),
+                    // U+17C7: "ះ" KHMER SIGN REAHMUK
+                    // U+17C8: "ៈ" KHMER SIGN YUUKALEAPINTU
+                    key("\u17C7", moreKey("\u17C8")),
+                    // U+1789: "ញ" KHMER LETTER NYO
+                    key("\u1789"),
+                    // U+1782: "គ" KHMER LETTER KO
+                    // U+179D: "ឝ" KHMER LETTER SHA
+                    key("\u1782", moreKey("\u179D")),
+                    // U+17A1: "ឡ" KHMER LETTER LA
+                    key("\u17A1"),
+                    // U+17C4/U+17C7: "ោះ" KHMER VOWEL SIGN OO/KHMER SIGN REAHMUK
+                    key("\u17C4\u17C7"),
+                    // U+17C9: "៉" KHMER SIGN MUUSIKATOAN
+                    key("\u17C9"),
+                    // U+17AF: "ឯ" KHMER INDEPENDENT VOWEL QE
+                    key("\u17AF"))
+            .setKeysOfRow(4,
+                    // U+178D: "ឍ" KHMER LETTER TTHO
+                    key("\u178D"),
+                    // U+1783: "ឃ" KHMER LETTER KHO
+                    key("\u1783"),
+                    // U+1787: "ជ" KHMER LETTER CO
+                    key("\u1787"),
+                    // U+17C1/U+17C7: "េះ" KHMER VOWEL SIGN E/KHMER SIGN REAHMUK
+                    key("\u17C1\u17C7"),
+                    // U+1796: "ព" KHMER LETTER PO
+                    // U+179E: "ឞ" KHMER LETTER SSO
+                    key("\u1796", moreKey("\u179E")),
+                    // U+178E: "ណ" KHMER LETTER NNO
+                    key("\u178E"),
+                    // U+17C6: "ំ" KHMER SIGN NIKAHIT
+                    key("\u17C6"),
+                    // U+17BB/U+17C7: "ុះ" KHMER VOWEL SIGN U/KHMER SIGN REAHMUK
+                    key("\u17BB\u17C7"),
+                    // U+17D5: "៕" KHMER SIGN BARIYOOSAN
+                    key("\u17D5"),
+                    key("?"))
+            .build();
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java b/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java
index 2c1ac2e..982777b 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java
@@ -265,7 +265,8 @@
             key("!", moreKey("\u00A1")), key("?", moreKey("\u00BF")));
     // U+200C: ZERO WIDTH NON-JOINER
     // U+200D: ZERO WIDTH JOINER
-    static final ExpectedKey ZWNJ_ZWJ_KEY = key(ICON_ZWNJ, "\u200C", moreKey(ICON_ZWJ, "\u200D"));
+    static final ExpectedKey ZWNJ_KEY = key(ICON_ZWNJ, "\u200C");
+    static final ExpectedKey ZWJ_KEY = key(ICON_ZWJ, "\u200D");
 
     // Punctuation more keys for phone form factor.
     public static final ExpectedKey[] PHONE_PUNCTUATION_MORE_KEYS = joinKeys(
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/NepaliRomanized.java b/tests/src/com/android/inputmethod/keyboard/layout/NepaliRomanized.java
index 2925894..c0bc29f 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/NepaliRomanized.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/NepaliRomanized.java
@@ -45,7 +45,7 @@
 
         @Override
         public ExpectedKey[] getSpaceKeys(final boolean isPhone) {
-            return joinKeys(SPACE_KEY, ZWNJ_ZWJ_KEY);
+            return joinKeys(SPACE_KEY, key(ZWNJ_KEY, ZWJ_KEY));
         }
 
         // U+0930/U+0941/U+002E "रु." NEPALESE RUPEE SIGN
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Symbols.java b/tests/src/com/android/inputmethod/keyboard/layout/Symbols.java
index 127d81a..9ce4187 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Symbols.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Symbols.java
@@ -74,6 +74,9 @@
             CENT_SIGN, POUND_SIGN, EURO_SIGN, YEN_SIGN, PESO_SIGN);
     public static final ExpectedKey CURRENCY_EURO = key("\u20AC",
             CENT_SIGN, POUND_SIGN, DOLLAR_SIGN, YEN_SIGN, PESO_SIGN);
+    public static final ExpectedKey[] CURRENCY_GENERIC_MORE_KEYS = joinMoreKeys(
+            Symbols.DOLLAR_SIGN, Symbols.CENT_SIGN, Symbols.EURO_SIGN, Symbols.POUND_SIGN,
+            Symbols.YEN_SIGN, Symbols.PESO_SIGN);
 
     // Variations of the "double quote" key's "more keys" on the 3rd row.
     public static final String DOUBLE_QUOTE = "DOUBLE_QUOTE";
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/Thai.java b/tests/src/com/android/inputmethod/keyboard/layout/Thai.java
index 747e0aa..64081a1 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/Thai.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/Thai.java
@@ -61,8 +61,7 @@
 
         // U+0E3F: "฿" THAI CURRENCY SYMBOL BAHT
         private static final ExpectedKey CURRENCY_BAHT = key("\u0E3F",
-                Symbols.DOLLAR_SIGN, Symbols.CENT_SIGN, Symbols.EURO_SIGN, Symbols.POUND_SIGN,
-                Symbols.YEN_SIGN, Symbols.PESO_SIGN);
+                Symbols.CURRENCY_GENERIC_MORE_KEYS);
     }
 
     @Override
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsArabic.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsArabic.java
index 7c97df5..fd76708 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsArabic.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsArabic.java
@@ -25,7 +25,7 @@
 import java.util.Locale;
 
 /**
- * ar: TestsArabic/arabic
+ * ar: Arabic/arabic
  */
 @SmallTest
 public class TestsArabic extends LayoutTestsBase {
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsKhmerKH.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsKhmerKH.java
new file mode 100644
index 0000000..df2f40d
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsKhmerKH.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.inputmethod.keyboard.layout.tests;
+
+import android.test.suitebuilder.annotation.SmallTest;
+
+import com.android.inputmethod.keyboard.layout.Khmer;
+import com.android.inputmethod.keyboard.layout.Khmer.KhmerCustomizer;
+import com.android.inputmethod.keyboard.layout.LayoutBase;
+
+import java.util.Locale;
+
+/**
+ * km_KH: Khmer (Cambodia)/khmer
+ */
+@SmallTest
+public final class TestsKhmerKH extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("km", "KH");
+    private static final LayoutBase LAYOUT = new Khmer(new KhmerCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsUkrainian.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsUkrainian.java
index 20749d6..27893fe 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsUkrainian.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsUkrainian.java
@@ -58,8 +58,7 @@
 
         // U+20B4: "₴" HRYVNIA SIGN
         private static final ExpectedKey CURRENCY_HRYVNIA = key("\u20B4",
-                Symbols.DOLLAR_SIGN, Symbols.CENT_SIGN, Symbols.EURO_SIGN, Symbols.POUND_SIGN,
-                Symbols.YEN_SIGN, Symbols.PESO_SIGN);
+                Symbols.CURRENCY_GENERIC_MORE_KEYS);
 
         @Override
         public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsVietnamese.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsVietnamese.java
index 94b0c1f..96ae38a 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsVietnamese.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsVietnamese.java
@@ -54,8 +54,7 @@
 
         // U+20AB: "₫" DONG SIGN
         private static final ExpectedKey CURRENCY_DONG = key("\u20AB",
-                Symbols.DOLLAR_SIGN, Symbols.CENT_SIGN, Symbols.EURO_SIGN, Symbols.POUND_SIGN,
-                Symbols.YEN_SIGN, Symbols.PESO_SIGN);
+                Symbols.CURRENCY_GENERIC_MORE_KEYS);
 
         @Override
         public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
diff --git a/tools/make-keyboard-text/res/values-ar/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-ar/donottranslate-more-keys.xml
index d997685..4bbe343 100644
--- a/tools/make-keyboard-text/res/values-ar/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-ar/donottranslate-more-keys.xml
@@ -19,10 +19,10 @@
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <!-- Label for "switch to alphabetic" key.
-         U+0623: "ا" ARABIC LETTER ALEF
+         U+0623: "أ" ARABIC LETTER ALEF WITH HAMZA ABOVE
          U+200C: ZERO WIDTH NON-JOINER
          U+0628: "ب" ARABIC LETTER BEH
-         U+062C: "پ" ARABIC LETTER PEH -->
+         U+062C: "ج" ARABIC LETTER JEEM -->
     <string name="label_to_alpha_key">&#x0623;&#x200C;&#x0628;&#x200C;&#x062C;</string>
     <!-- U+0661: "١" ARABIC-INDIC DIGIT ONE -->
     <string name="keylabel_for_symbols_1">&#x0661;</string>
