diff --git a/java/res/xml/keyboard_layout_set_nordic.xml b/java/res/xml/keyboard_layout_set_nordic.xml
index d07f78a9a3529f59d08654233af43442d9191a92..eb3d45be08b6b9429a814ceeb3a01329aed07bc7 100644
--- a/java/res/xml/keyboard_layout_set_nordic.xml
+++ b/java/res/xml/keyboard_layout_set_nordic.xml
@@ -24,7 +24,7 @@
         latin:elementName="alphabet"
         latin:elementKeyboard="@xml/kbd_nordic"
         latin:enableProximityCharsCorrection="true"
-        latin:allowRedundantMoreKeys="true" />
+        latin:allowRedundantMoreKeys="false" />
     <Element
         latin:elementName="symbols"
         latin:elementKeyboard="@xml/kbd_symbols" />
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
index 846e4968a462577f410de0d111b538ecbc21facd..a778ee80b2a1b2bad7b4d6547d9003cfcfe6bb10 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
@@ -952,20 +952,24 @@ public final class KeyboardTextsTable {
 
     /* Locale da: Danish */
     private static final String[] TEXTS_da = {
+        // U+00E5: "Ã¥" LATIN SMALL LETTER A WITH RING ABOVE
+        // U+00E6: "æ" LATIN SMALL LETTER AE
         // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
         // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
         // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
         // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
         // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
         // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
-        /* morekeys_a */ "\u00E1,\u00E4,\u00E0,\u00E2,\u00E3,\u0101",
+        /* morekeys_a */ "\u00E5,\u00E6,\u00E1,\u00E4,\u00E0,\u00E2,\u00E3,\u0101",
+        // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+        // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
         // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
         // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
         // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
         // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
         // U+0153: "Å“" LATIN SMALL LIGATURE OE
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
-        /* morekeys_o */ "\u00F3,\u00F4,\u00F2,\u00F5,\u0153,\u014D",
+        /* morekeys_o */ "\u00F8,\u00F6,\u00F3,\u00F4,\u00F2,\u00F5,\u0153,\u014D",
         // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
         // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
         /* morekeys_e */ "\u00E9,\u00EB",
@@ -1666,13 +1670,16 @@ public final class KeyboardTextsTable {
 
     /* Locale fi: Finnish */
     private static final String[] TEXTS_fi = {
+        // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+        // U+00E5: "Ã¥" LATIN SMALL LETTER A WITH RING ABOVE
         // U+00E6: "æ" LATIN SMALL LETTER AE
         // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
         // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
         // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
         // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
         // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
-        /* morekeys_a */ "\u00E6,\u00E0,\u00E1,\u00E2,\u00E3,\u0101",
+        /* morekeys_a */ "\u00E4,\u00E5,\u00E6,\u00E0,\u00E1,\u00E2,\u00E3,\u0101",
+        // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
         // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
         // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
         // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
@@ -1680,7 +1687,7 @@ public final class KeyboardTextsTable {
         // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
         // U+0153: "Å“" LATIN SMALL LIGATURE OE
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
-        /* morekeys_o */ "\u00F8,\u00F4,\u00F2,\u00F3,\u00F5,\u0153,\u014D",
+        /* morekeys_o */ "\u00F6,\u00F8,\u00F4,\u00F2,\u00F3,\u00F5,\u0153,\u014D",
         /* morekeys_e */ null,
         // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
         /* morekeys_u */ "\u00FC",
@@ -2784,21 +2791,24 @@ public final class KeyboardTextsTable {
 
     /* Locale nb: Norwegian Bokmål */
     private static final String[] TEXTS_nb = {
-        // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+        // U+00E5: "Ã¥" LATIN SMALL LETTER A WITH RING ABOVE
+        // U+00E6: "æ" LATIN SMALL LETTER AE
         // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+        // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
         // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
         // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
         // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
         // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
-        /* morekeys_a */ "\u00E0,\u00E4,\u00E1,\u00E2,\u00E3,\u0101",
+        /* morekeys_a */ "\u00E5,\u00E6,\u00E4,\u00E0,\u00E1,\u00E2,\u00E3,\u0101",
+        // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+        // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
         // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
         // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
         // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
-        // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
         // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
         // U+0153: "Å“" LATIN SMALL LIGATURE OE
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
-        /* morekeys_o */ "\u00F4,\u00F2,\u00F3,\u00F6,\u00F5,\u0153,\u014D",
+        /* morekeys_o */ "\u00F8,\u00F6,\u00F4,\u00F2,\u00F3,\u00F5,\u0153,\u014D",
         // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
         // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
         // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
@@ -3381,18 +3391,24 @@ public final class KeyboardTextsTable {
 
     /* Locale sv: Swedish */
     private static final String[] TEXTS_sv = {
+        // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+        // U+00E5: "Ã¥" LATIN SMALL LETTER A WITH RING
+        // U+00E6: "æ" LATIN SMALL LETTER AE
         // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
         // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
         // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
         // U+0105: "Ä…" LATIN SMALL LETTER A WITH OGONEK
         // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
-        /* morekeys_a */ "\u00E1,\u00E0,\u00E2,\u0105,\u00E3",
+        /* morekeys_a */ "\u00E4,\u00E5,\u00E6,\u00E1,\u00E0,\u00E2,\u0105,\u00E3",
+        // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+        // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+        // U+0153: "Å“" LATIN SMALL LIGATURE OE
         // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
         // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
         // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
         // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
         // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
-        /* morekeys_o */ "\u00F3,\u00F2,\u00F4,\u00F5,\u014D",
+        /* morekeys_o */ "\u00F6,\u00F8,\u0153,\u00F3,\u00F2,\u00F4,\u00F5,\u014D",
         // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
         // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
         // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java b/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java
index eb11278d656f24ccda6edc5eb22704815b2f2a15..b714ec794c8cb28c07ba2a70128fc68a28a0e795 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/LayoutBase.java
@@ -50,6 +50,24 @@ public abstract class LayoutBase extends AbstractLayoutBase {
             return 4;
         }
 
+        /**
+         * Set accented letters to a specific keyboard element.
+         * @param builder the {@link ExpectedKeyboardBuilder} object that contains common keyboard
+         *        layout.
+         * @param elementId the element id of keyboard
+         * @return the {@link ExpectedKeyboardBuilder} object that contains accented letters as
+         *        "more keys".
+         */
+        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder,
+                final int elementId) {
+            // This method can be overridden by an extended class to provide customized expected
+            // accented letters depending on the shift state of keyboard.
+            // This is a default behavior to call a shift-state-independent
+            // {@link #setAccentedLetters(ExpectedKeyboardBuilder)} implementation, so that
+            // <code>elementId</code> is ignored here.
+            return setAccentedLetters(builder);
+        }
+
         /**
          * Set accented letters to common layout.
          * @param builder the {@link ExpectedKeyboardBuilder} object that contains common keyboard
@@ -386,7 +404,7 @@ public abstract class LayoutBase extends AbstractLayoutBase {
     ExpectedKey[][] getCommonAlphabetShiftLayout(final boolean isPhone, final int elementId) {
         final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(
                 getCommonAlphabetLayout(isPhone));
-        getCustomizer().setAccentedLetters(builder);
+        getCustomizer().setAccentedLetters(builder, elementId);
         builder.toUpperCase(getLocale());
         return builder.build();
     }
@@ -411,7 +429,7 @@ public abstract class LayoutBase extends AbstractLayoutBase {
         final ExpectedKeyboardBuilder builder;
         if (elementId == KeyboardId.ELEMENT_ALPHABET) {
             builder = new ExpectedKeyboardBuilder(getCommonAlphabetLayout(isPhone));
-            getCustomizer().setAccentedLetters(builder);
+            getCustomizer().setAccentedLetters(builder, elementId);
         } else {
             final ExpectedKey[][] commonLayout = getCommonAlphabetShiftLayout(isPhone, elementId);
             if (commonLayout == null) {
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/DanishCustomizer.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/DanishCustomizer.java
index b7c181b6e65bd3bdddc7ddce23ae7717fb46c8ad..2c5df60456abc196ea16f6a90347efce1536c424 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/tests/DanishCustomizer.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/DanishCustomizer.java
@@ -53,9 +53,35 @@ class DanishCustomizer extends EuroCustomizer {
                 .setMoreKeysOf("\u00F8", "\u00F6");
     }
 
+    protected void setMoreKeysOfA(final ExpectedKeyboardBuilder builder) {
+        builder
+                // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+                // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+                // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+                // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+                // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+                // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+                .setMoreKeysOf("a", "\u00E1", "\u00E4", "\u00E0", "\u00E2", "\u00E3", "\u0101");
+    }
+
+    protected void setMoreKeysOfO(final ExpectedKeyboardBuilder builder) {
+        builder
+                // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+                // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+                // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+                // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+                // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+                // U+0153: "Å“" LATIN SMALL LIGATURE OE
+                // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+                .setMoreKeysOf("o", "\u00F6", "\u00F3", "\u00F4", "\u00F2", "\u00F5", "\u0153",
+                        "\u014D");
+    }
+
     @Override
     public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
         setNordicKeys(builder);
+        setMoreKeysOfA(builder);
+        setMoreKeysOfO(builder);
         return builder
                 // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
                 // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
@@ -72,20 +98,6 @@ class DanishCustomizer extends EuroCustomizer {
                 // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
                 // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
                 .setMoreKeysOf("i", "\u00ED", "\u00EF")
-                // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
-                // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
-                // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
-                // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
-                // U+0153: "Å“" LATIN SMALL LIGATURE OE
-                // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
-                .setMoreKeysOf("o", "\u00F3", "\u00F4", "\u00F2", "\u00F5", "\u0153", "\u014D")
-                // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
-                // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
-                // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
-                // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
-                // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
-                // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
-                .setMoreKeysOf("a", "\u00E1", "\u00E4", "\u00E0", "\u00E2", "\u00E3", "\u0101")
                 // U+00DF: "ß" LATIN SMALL LETTER SHARP S
                 // U+015B: "Å›" LATIN SMALL LETTER S WITH ACUTE
                 // U+0161: "Å¡" LATIN SMALL LETTER S WITH CARON
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/EstonianEECustomizer.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/EstonianEECustomizer.java
new file mode 100644
index 0000000000000000000000000000000000000000..d0b87726f5c321d3b41b9a9e5e46c52be10456f4
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/EstonianEECustomizer.java
@@ -0,0 +1,170 @@
+/*
+ * 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 com.android.inputmethod.keyboard.KeyboardId;
+import com.android.inputmethod.keyboard.layout.LayoutBase.EuroCustomizer;
+import com.android.inputmethod.keyboard.layout.Nordic;
+import com.android.inputmethod.keyboard.layout.Symbols;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+class EstonianEECustomizer extends EuroCustomizer {
+    public EstonianEECustomizer(final Locale locale) {
+        super(locale);
+    }
+
+    @Override
+    public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_R9L; }
+
+    @Override
+    public ExpectedKey[] getSingleQuoteMoreKeys() { return Symbols.SINGLE_QUOTES_R9L; }
+
+    protected void setNordicKeys(final ExpectedKeyboardBuilder builder) {
+        builder
+                // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+                .replaceKeyOfLabel(Nordic.ROW1_11, "\u00FC")
+                // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+                // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+                .replaceKeyOfLabel(Nordic.ROW2_10, "\u00F6")
+                .setMoreKeysOf("\u00F6", "\u00F5")
+                // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+                .replaceKeyOfLabel(Nordic.ROW2_11, "\u00E4");
+    }
+
+    protected void setMoreKeysOfA(final ExpectedKeyboardBuilder builder) {
+        builder
+                // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+                // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+                // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+                // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+                // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+                // U+00E5: "Ã¥" LATIN SMALL LETTER A WITH RING ABOVE
+                // U+00E6: "æ" LATIN SMALL LETTER AE
+                // U+0105: "Ä…" LATIN SMALL LETTER A WITH OGONEK
+                .setMoreKeysOf("a", "\u0101", "\u00E0", "\u00E1", "\u00E2", "\u00E3", "\u00E5",
+                        "\u00E6", "\u0105");
+    }
+
+    protected void setMoreKeysOfI(final ExpectedKeyboardBuilder builder, final int elementId) {
+        // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
+        // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+        // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+        // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+        // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+        // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+        // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
+        if (elementId == KeyboardId.ELEMENT_ALPHABET) {
+            builder.setMoreKeysOf("i",
+                    "\u012B", "\u00EC", "\u012F", "\u00ED", "\u00EE", "\u00EF", "\u0131");
+        } else {
+            // The upper-case letter of "ı" in Estonian locale is "I". It should be omitted
+            // from the more keys of "I".
+            builder.setMoreKeysOf("i",
+                    "\u012B", "\u00EC", "\u012F", "\u00ED", "\u00EE", "\u00EF");
+        }
+    }
+
+    protected void setMoreKeysOfO(final ExpectedKeyboardBuilder builder) {
+        builder
+                // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+                // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+                // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+                // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+                // U+0153: "Å“" LATIN SMALL LIGATURE OE
+                // U+0151: "Å‘" LATIN SMALL LETTER O WITH DOUBLE ACUTE
+                // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+                .setMoreKeysOf("o", "\u00F5", "\u00F2", "\u00F3", "\u00F4", "\u0153", "\u0151",
+                        "\u00F8");
+    }
+
+    protected void setMoreKeysOfU(final ExpectedKeyboardBuilder builder) {
+        builder
+                // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
+                // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
+                // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+                // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+                // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+                // U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
+                // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
+                .setMoreKeysOf("u", "\u016B", "\u0173", "\u00F9", "\u00FA", "\u00FB", "\u016F",
+                        "\u0171");
+    }
+
+    @Override
+    public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder,
+            final int elementId) {
+        setNordicKeys(builder);
+        setMoreKeysOfA(builder);
+        setMoreKeysOfI(builder, elementId);
+        setMoreKeysOfO(builder);
+        setMoreKeysOfU(builder);
+        return builder
+                // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
+                // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
+                // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
+                // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
+                // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
+                // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
+                // U+0119: "Ä™" LATIN SMALL LETTER E WITH OGONEK
+                // U+011B: "Ä›" LATIN SMALL LETTER E WITH CARON
+                .setMoreKeysOf("e",
+                        "\u0113", "\u00E8", "\u0117", "\u00E9", "\u00EA", "\u00EB", "\u0119",
+                        "\u011B")
+                // U+0157: "Å—" LATIN SMALL LETTER R WITH CEDILLA
+                // U+0159: "Å™" LATIN SMALL LETTER R WITH CARON
+                // U+0155: "Å•" LATIN SMALL LETTER R WITH ACUTE
+                .setMoreKeysOf("r", "\u0157", "\u0159", "\u0155")
+                // U+0163: "Å£" LATIN SMALL LETTER T WITH CEDILLA
+                // U+0165: "Å¥" LATIN SMALL LETTER T WITH CARON
+                .setMoreKeysOf("t", "\u0163", "\u0165")
+                // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
+                // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
+                .setMoreKeysOf("y", "\u00FD", "\u00FF")
+                // U+0161: "Å¡" LATIN SMALL LETTER S WITH CARON
+                // U+00DF: "ß" LATIN SMALL LETTER SHARP S
+                // U+015B: "Å›" LATIN SMALL LETTER S WITH ACUTE
+                // U+015F: "ÅŸ" LATIN SMALL LETTER S WITH CEDILLA
+                .setMoreKeysOf("s", "\u0161", "\u00DF", "\u015B", "\u015F")
+                // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
+                .setMoreKeysOf("d", "\u010F")
+                // U+0123: "Ä£" LATIN SMALL LETTER G WITH CEDILLA
+                // U+011F: "ÄŸ" LATIN SMALL LETTER G WITH BREVE
+                .setMoreKeysOf("g", "\u0123", "\u011F")
+                // U+0137: "Ä·" LATIN SMALL LETTER K WITH CEDILLA
+                .setMoreKeysOf("k", "\u0137")
+                // U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA
+                // U+0142: "Å‚" LATIN SMALL LETTER L WITH STROKE
+                // U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE
+                // U+013E: "ľ" LATIN SMALL LETTER L WITH CARON
+                .setMoreKeysOf("l", "\u013C", "\u0142", "\u013A", "\u013E")
+                // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
+                // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
+                // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
+                .setMoreKeysOf("z", "\u017E", "\u017C", "\u017A")
+                // U+010D: "č" LATIN SMALL LETTER C WITH CARON
+                // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
+                // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
+                .setMoreKeysOf("c", "\u010D", "\u00E7", "\u0107")
+                // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
+                // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
+                // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
+                .setMoreKeysOf("n", "\u0146", "\u00F1", "\u0144");
+    }
+}
\ No newline at end of file
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/FinnishCustomizer.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/FinnishCustomizer.java
index 9adb637835f8f6dfb19aa9695bc4376eff0c703a..912aec4a0a07ca668616368498e5576b0cf72ee5 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/tests/FinnishCustomizer.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/FinnishCustomizer.java
@@ -39,12 +39,19 @@ class FinnishCustomizer extends EuroCustomizer {
                 .setMoreKeysOf("\u00E4", "\u00E6");
     }
 
-    @Override
-    public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
-        setNordicKeys(builder);
-        return builder
-                // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-                .setMoreKeysOf("u", "\u00FC")
+    protected void setMoreKeysOfA(final ExpectedKeyboardBuilder builder) {
+        builder
+                // U+00E6: "æ" LATIN SMALL LETTER AE
+                // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+                // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+                // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+                // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+                // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+                .setMoreKeysOf("a", "\u00E6", "\u00E0", "\u00E1", "\u00E2", "\u00E3", "\u0101");
+    }
+
+    protected void setMoreKeysOfO(final ExpectedKeyboardBuilder builder) {
+        builder
                 // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
                 // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
                 // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
@@ -52,15 +59,18 @@ class FinnishCustomizer extends EuroCustomizer {
                 // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
                 // U+0153: "Å“" LATIN SMALL LIGATURE OE
                 // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
-                .setMoreKeysOf("o",
-                        "\u00F8", "\u00F4", "\u00F2", "\u00F3", "\u00F5", "\u0153", "\u014D")
-                // U+00E6: "æ" LATIN SMALL LETTER AE
-                // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
-                // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
-                // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
-                // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
-                // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
-                .setMoreKeysOf("a", "\u00E6", "\u00E0", "\u00E1", "\u00E2", "\u00E3", "\u0101")
+                .setMoreKeysOf("o", "\u00F8", "\u00F4", "\u00F2", "\u00F3", "\u00F5", "\u0153",
+                        "\u014D");
+    }
+
+    @Override
+    public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
+        setNordicKeys(builder);
+        setMoreKeysOfA(builder);
+        setMoreKeysOfO(builder);
+        return builder
+                // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+                .setMoreKeysOf("u", "\u00FC")
                 // U+0161: "Å¡" LATIN SMALL LETTER S WITH CARON
                 // U+00DF: "ß" LATIN SMALL LETTER SHARP S
                 // U+015B: "Å›" LATIN SMALL LETTER S WITH ACUTE
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/NorwegianCustomizer.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/NorwegianCustomizer.java
index 3d3ed4b6de30789d99213f725e4ed1a7fbed6efd..4be7a57c5be81657d65f0658b5e6a83ca8028ab6 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/tests/NorwegianCustomizer.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/NorwegianCustomizer.java
@@ -47,9 +47,35 @@ class NorwegianCustomizer extends LayoutCustomizer {
                 .setMoreKeysOf("\u00E6", "\u00E4");
     }
 
+    protected void setMoreKeysOfA(final ExpectedKeyboardBuilder builder) {
+        builder
+                // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+                // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+                // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+                // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+                // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+                // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+                .setMoreKeysOf("a", "\u00E4", "\u00E0", "\u00E1", "\u00E2", "\u00E3", "\u0101");
+    }
+
+    protected void setMoreKeysOfO(final ExpectedKeyboardBuilder builder) {
+        builder
+                // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+                // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+                // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+                // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+                // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+                // U+0153: "Å“" LATIN SMALL LIGATURE OE
+                // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+                .setMoreKeysOf("o", "\u00F6", "\u00F4", "\u00F2", "\u00F3", "\u00F5", "\u0153",
+                        "\u014D");
+    }
+
     @Override
     public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
         setNordicKeys(builder);
+        setMoreKeysOfA(builder);
+        setMoreKeysOfO(builder);
         return builder
                 // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
                 // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
@@ -65,22 +91,6 @@ class NorwegianCustomizer extends LayoutCustomizer {
                 // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
                 // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
                 // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
-                .setMoreKeysOf("u", "\u00FC", "\u00FB", "\u00F9", "\u00FA", "\u016B")
-                // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
-                // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
-                // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
-                // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
-                // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
-                // U+0153: "Å“" LATIN SMALL LIGATURE OE
-                // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
-                .setMoreKeysOf("o",
-                        "\u00F4", "\u00F2", "\u00F3", "\u00F6", "\u00F5", "\u0153", "\u014D")
-                // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
-                // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
-                // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
-                // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
-                // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
-                // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
-                .setMoreKeysOf("a", "\u00E0", "\u00E4", "\u00E1", "\u00E2", "\u00E3", "\u0101");
+                .setMoreKeysOf("u", "\u00FC", "\u00FB", "\u00F9", "\u00FA", "\u016B");
     }
 }
\ No newline at end of file
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/SwedishCustomizer.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/SwedishCustomizer.java
index 36b55b196b7699145a259349a3ff3b360266bb66..af4a971bde3c1b6253497ee8d96436f43594dec9 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/tests/SwedishCustomizer.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/SwedishCustomizer.java
@@ -64,9 +64,35 @@ class SwedishCustomizer extends LayoutCustomizer {
                 .setMoreKeysOf("\u00E4", "\u00E6");
     }
 
+    protected void setMoreKeysOfA(final ExpectedKeyboardBuilder builder) {
+        builder
+                // U+00E6: "æ" LATIN SMALL LETTER AE
+                // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+                // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+                // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+                // U+0105: "Ä…" LATIN SMALL LETTER A WITH OGONEK
+                // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+                .setMoreKeysOf("a", "\u00E6", "\u00E1", "\u00E0", "\u00E2", "\u0105", "\u00E3");
+    }
+
+    protected void setMoreKeysOfO(final ExpectedKeyboardBuilder builder) {
+        builder
+                // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+                // U+0153: "Å“" LATIN SMALL LIGATURE OE
+                // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+                // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+                // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+                // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+                // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+                .setMoreKeysOf("o", "\u00F8", "\u0153", "\u00F3", "\u00F2", "\u00F4", "\u00F5",
+                        "\u014D");
+    }
+
     @Override
     public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
         setNordicKeys(builder);
+        setMoreKeysOfA(builder);
+        setMoreKeysOfO(builder);
         return builder
                 // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
                 // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
@@ -93,18 +119,6 @@ class SwedishCustomizer extends LayoutCustomizer {
                 // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
                 // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
                 .setMoreKeysOf("i", "\u00ED", "\u00EC", "\u00EE", "\u00EF")
-                // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
-                // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
-                // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
-                // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
-                // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
-                .setMoreKeysOf("o", "\u00F3", "\u00F2", "\u00F4", "\u00F5", "\u014D")
-                // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
-                // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
-                // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
-                // U+0105: "Ä…" LATIN SMALL LETTER A WITH OGONEK
-                // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
-                .setMoreKeysOf("a", "\u00E1", "\u00E0", "\u00E2", "\u0105", "\u00E3")
                 // U+015B: "Å›" LATIN SMALL LETTER S WITH ACUTE
                 // U+0161: "Å¡" LATIN SMALL LETTER S WITH CARON
                 // U+015F: "ÅŸ" LATIN SMALL LETTER S WITH CEDILLA
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsDanishQwertz.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsDanishQwertz.java
index a53a3d43ca0d576e14b753e4eccf8db15e74d250..886b3de7e1a5f23a282789fab95107e99434b07c 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsDanishQwertz.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsDanishQwertz.java
@@ -44,5 +44,35 @@ public final class TestsDanishQwertz extends LayoutTestsBase {
         protected void setNordicKeys(final ExpectedKeyboardBuilder builder) {
             // QWERTZ layout doesn't have Nordic keys.
         }
+
+        @Override
+        protected void setMoreKeysOfA(final ExpectedKeyboardBuilder builder) {
+            builder
+                    // U+00E5: "Ã¥" LATIN SMALL LETTER A WITH RING ABOVE
+                    // U+00E6: "æ" LATIN SMALL LETTER AE
+                    // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+                    // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+                    // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+                    // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+                    // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+                    // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+                    .setMoreKeysOf("a", "\u00E5", "\u00E6", "\u00E1", "\u00E4", "\u00E0", "\u00E2",
+                            "\u00E3", "\u0101");
+        }
+
+        @Override
+        protected void setMoreKeysOfO(final ExpectedKeyboardBuilder builder) {
+            builder
+                    // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+                    // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+                    // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+                    // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+                    // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+                    // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+                    // U+0153: "Å“" LATIN SMALL LIGATURE OE
+                    // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+                    .setMoreKeysOf("o", "\u00F8", "\u00F6", "\u00F3", "\u00F4", "\u00F2", "\u00F5",
+                            "\u0153", "\u014D");
+        }
     }
 }
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEstonianEE.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEstonianEE.java
index 865e9ea17ed73641aa4206ff75edd45ef1ec131c..28c2eb3010a3b95fd42e31a2f18cf0774c7d268d 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEstonianEE.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEstonianEE.java
@@ -19,11 +19,7 @@ package com.android.inputmethod.keyboard.layout.tests;
 import android.test.suitebuilder.annotation.SmallTest;
 
 import com.android.inputmethod.keyboard.layout.LayoutBase;
-import com.android.inputmethod.keyboard.layout.LayoutBase.EuroCustomizer;
 import com.android.inputmethod.keyboard.layout.Nordic;
-import com.android.inputmethod.keyboard.layout.Symbols;
-import com.android.inputmethod.keyboard.layout.expected.ExpectedKey;
-import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
 
 import java.util.Locale;
 
@@ -37,121 +33,4 @@ public final class TestsEstonianEE extends LayoutTestsBase {
 
     @Override
     LayoutBase getLayout() { return LAYOUT; }
-
-    private static class EstonianEECustomizer extends EuroCustomizer {
-        public EstonianEECustomizer(final Locale locale) {
-            super(locale);
-        }
-
-        @Override
-        public ExpectedKey[] getDoubleQuoteMoreKeys() { return Symbols.DOUBLE_QUOTES_R9L; }
-
-        @Override
-        public ExpectedKey[] getSingleQuoteMoreKeys() { return Symbols.SINGLE_QUOTES_R9L; }
-
-        @Override
-        public ExpectedKeyboardBuilder setAccentedLetters(final ExpectedKeyboardBuilder builder) {
-            return builder
-                    // U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON
-                    // U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
-                    // U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
-                    // U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
-                    // U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
-                    // U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS
-                    // U+0119: "Ä™" LATIN SMALL LETTER E WITH OGONEK
-                    // U+011B: "Ä›" LATIN SMALL LETTER E WITH CARON
-                    .setMoreKeysOf("e",
-                            "\u0113", "\u00E8", "\u0117", "\u00E9", "\u00EA", "\u00EB", "\u0119",
-                            "\u011B")
-                    // U+0157: "Å—" LATIN SMALL LETTER R WITH CEDILLA
-                    // U+0159: "Å™" LATIN SMALL LETTER R WITH CARON
-                    // U+0155: "Å•" LATIN SMALL LETTER R WITH ACUTE
-                    .setMoreKeysOf("r", "\u0157", "\u0159", "\u0155")
-                    // U+0163: "Å£" LATIN SMALL LETTER T WITH CEDILLA
-                    // U+0165: "Å¥" LATIN SMALL LETTER T WITH CARON
-                    .setMoreKeysOf("t", "\u0163", "\u0165")
-                    // U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
-                    // U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
-                    .setMoreKeysOf("y", "\u00FD", "\u00FF")
-                    // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-                    // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
-                    // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
-                    // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
-                    // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
-                    // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
-                    // U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
-                    // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
-                    .setMoreKeysOf("u",
-                            "\u00FC", "\u016B", "\u0173", "\u00F9", "\u00FA", "\u00FB", "\u016F",
-                            "\u0171")
-                    // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
-                    // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
-                    // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
-                    // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
-                    // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
-                    // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
-                    // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
-                    .setMoreKeysOf("i",
-                            "\u012B", "\u00EC", "\u012F", "\u00ED", "\u00EE", "\u00EF", "\u0131")
-                    // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
-                    // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
-                    // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
-                    // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
-                    // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
-                    // U+0153: "Å“" LATIN SMALL LIGATURE OE
-                    // U+0151: "Å‘" LATIN SMALL LETTER O WITH DOUBLE ACUTE
-                    // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
-                    .setMoreKeysOf("o",
-                            "\u00F6", "\u00F5", "\u00F2", "\u00F3", "\u00F4", "\u0153", "\u0151",
-                            "\u00F8")
-                    // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
-                    .replaceKeyOfLabel(Nordic.ROW1_11, "\u00FC")
-                    // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
-                    // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
-                    .replaceKeyOfLabel(Nordic.ROW2_10, key("\u00F6", moreKey("\u00F5")))
-                    // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
-                    .replaceKeyOfLabel(Nordic.ROW2_11, "\u00E4")
-                    // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
-                    // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
-                    // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
-                    // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
-                    // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
-                    // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
-                    // U+00E5: "Ã¥" LATIN SMALL LETTER A WITH RING ABOVE
-                    // U+00E6: "æ" LATIN SMALL LETTER AE
-                    // U+0105: "Ä…" LATIN SMALL LETTER A WITH OGONEK
-                    .setMoreKeysOf("a",
-                            "\u00E4", "\u0101", "\u00E0", "\u00E1", "\u00E2", "\u00E3", "\u00E5",
-                            "\u00E6", "\u0105")
-                    // U+0161: "Å¡" LATIN SMALL LETTER S WITH CARON
-                    // U+00DF: "ß" LATIN SMALL LETTER SHARP S
-                    // U+015B: "Å›" LATIN SMALL LETTER S WITH ACUTE
-                    // U+015F: "ÅŸ" LATIN SMALL LETTER S WITH CEDILLA
-                    .setMoreKeysOf("s", "\u0161", "\u00DF", "\u015B", "\u015F")
-                    // U+010F: "ď" LATIN SMALL LETTER D WITH CARON
-                    .setMoreKeysOf("d", "\u010F")
-                    // U+0123: "Ä£" LATIN SMALL LETTER G WITH CEDILLA
-                    // U+011F: "ÄŸ" LATIN SMALL LETTER G WITH BREVE
-                    .setMoreKeysOf("g", "\u0123", "\u011F")
-                    // U+0137: "Ä·" LATIN SMALL LETTER K WITH CEDILLA
-                    .setMoreKeysOf("k", "\u0137")
-                    // U+013C: "ļ" LATIN SMALL LETTER L WITH CEDILLA
-                    // U+0142: "Å‚" LATIN SMALL LETTER L WITH STROKE
-                    // U+013A: "ĺ" LATIN SMALL LETTER L WITH ACUTE
-                    // U+013E: "ľ" LATIN SMALL LETTER L WITH CARON
-                    .setMoreKeysOf("l", "\u013C", "\u0142", "\u013A", "\u013E")
-                    // U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
-                    // U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
-                    // U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
-                    .setMoreKeysOf("z", "\u017E", "\u017C", "\u017A")
-                    // U+010D: "č" LATIN SMALL LETTER C WITH CARON
-                    // U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
-                    // U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
-                    .setMoreKeysOf("c", "\u010D", "\u00E7", "\u0107")
-                    // U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
-                    // U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
-                    // U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE
-                    .setMoreKeysOf("n", "\u0146", "\u00F1", "\u0144");
-        }
-    }
 }
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEstonianEEQwerty.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEstonianEEQwerty.java
new file mode 100644
index 0000000000000000000000000000000000000000..ab8960b667e6bd394056e229c513107da1eeb6d7
--- /dev/null
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsEstonianEEQwerty.java
@@ -0,0 +1,110 @@
+/*
+ * 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.LayoutBase;
+import com.android.inputmethod.keyboard.layout.Qwerty;
+import com.android.inputmethod.keyboard.layout.expected.ExpectedKeyboardBuilder;
+
+import java.util.Locale;
+
+/**
+ * et_EE: Estonian (Estonia)/qwerty
+ */
+@SmallTest
+public final class TestsEstonianEEQwerty extends LayoutTestsBase {
+    private static final Locale LOCALE = new Locale("et", "EE");
+    private static final LayoutBase LAYOUT = new Qwerty(new EstonianEEQwertyCustomizer(LOCALE));
+
+    @Override
+    LayoutBase getLayout() { return LAYOUT; }
+
+    private static class EstonianEEQwertyCustomizer extends EstonianEECustomizer {
+        public EstonianEEQwertyCustomizer(final Locale locale) {
+            super(locale);
+        }
+
+        @Override
+        protected void setNordicKeys(final ExpectedKeyboardBuilder builder) {
+            // QWERTY layout doesn't have Nordic keys.
+        }
+
+        @Override
+        protected void setMoreKeysOfA(final ExpectedKeyboardBuilder builder) {
+            builder
+                    // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+                    // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+                    // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+                    // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+                    // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+                    // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+                    // U+00E5: "Ã¥" LATIN SMALL LETTER A WITH RING ABOVE
+                    // U+00E6: "æ" LATIN SMALL LETTER AE
+                    // U+0105: "Ä…" LATIN SMALL LETTER A WITH OGONEK
+                    .setMoreKeysOf("a", "\u00E4", "\u0101", "\u00E0", "\u00E1", "\u00E2", "\u00E3",
+                            "\u00E5", "\u00E6", "\u0105");
+        }
+
+        @Override
+        protected void setMoreKeysOfI(final ExpectedKeyboardBuilder builder, final int elementId) {
+            // TODO: The upper-case letter of "ı" in Estonian locale is "I". It should be omitted
+            // from the more keys of "I".
+            builder
+                    // U+012B: "Ä«" LATIN SMALL LETTER I WITH MACRON
+                    // U+00EC: "ì" LATIN SMALL LETTER I WITH GRAVE
+                    // U+012F: "į" LATIN SMALL LETTER I WITH OGONEK
+                    // U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
+                    // U+00EE: "î" LATIN SMALL LETTER I WITH CIRCUMFLEX
+                    // U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS
+                    // U+0131: "ı" LATIN SMALL LETTER DOTLESS I
+                    .setMoreKeysOf("i",
+                            "\u012B", "\u00EC", "\u012F", "\u00ED", "\u00EE", "\u00EF", "\u0131");
+        }
+
+        @Override
+        protected void setMoreKeysOfO(final ExpectedKeyboardBuilder builder) {
+            builder
+                    // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+                    // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+                    // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+                    // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+                    // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+                    // U+0153: "Å“" LATIN SMALL LIGATURE OE
+                    // U+0151: "Å‘" LATIN SMALL LETTER O WITH DOUBLE ACUTE
+                    // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+                    .setMoreKeysOf("o", "\u00F6", "\u00F5", "\u00F2", "\u00F3", "\u00F4", "\u0153",
+                            "\u0151", "\u00F8");
+        }
+
+        @Override
+        protected void setMoreKeysOfU(final ExpectedKeyboardBuilder builder) {
+            builder
+                    // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
+                    // U+016B: "Å«" LATIN SMALL LETTER U WITH MACRON
+                    // U+0173: "ų" LATIN SMALL LETTER U WITH OGONEK
+                    // U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
+                    // U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
+                    // U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
+                    // U+016F: "ů" LATIN SMALL LETTER U WITH RING ABOVE
+                    // U+0171: "ű" LATIN SMALL LETTER U WITH DOUBLE ACUTE
+                    .setMoreKeysOf("u", "\u00FC", "\u016B", "\u0173", "\u00F9", "\u00FA", "\u00FB",
+                            "\u016F", "\u0171");
+        }
+    }
+}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsFinnishQwerty.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsFinnishQwerty.java
index 2838fef4e9725e2caf708cbb87f2593dab392b62..c3df9d1158f32722ed09c4d5d9b62612ac6815f9 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsFinnishQwerty.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsFinnishQwerty.java
@@ -44,5 +44,35 @@ public final class TestsFinnishQwerty extends LayoutTestsBase {
         protected void setNordicKeys(final ExpectedKeyboardBuilder builder) {
             // QWERTY layout doesn't have Nordic keys.
         }
+
+        @Override
+        protected void setMoreKeysOfA(final ExpectedKeyboardBuilder builder) {
+            builder
+                    // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+                    // U+00E5: "Ã¥" LATIN SMALL LETTER A WITH RING ABOVE
+                    // U+00E6: "æ" LATIN SMALL LETTER AE
+                    // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+                    // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+                    // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+                    // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+                    // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+                    .setMoreKeysOf("a", "\u00E4", "\u00E5", "\u00E6", "\u00E0", "\u00E1", "\u00E2",
+                            "\u00E3", "\u0101");
+        }
+
+        @Override
+        protected void setMoreKeysOfO(final ExpectedKeyboardBuilder builder) {
+            builder
+                    // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+                    // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+                    // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+                    // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+                    // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+                    // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+                    // U+0153: "Å“" LATIN SMALL LIGATURE OE
+                    // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+                    .setMoreKeysOf("o", "\u00F6", "\u00F8", "\u00F4", "\u00F2", "\u00F3", "\u00F5",
+                            "\u0153", "\u014D");
+        }
     }
 }
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNorwegianColemak.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNorwegianColemak.java
index 6c3f8b996a10abe298b4f07a2ff9d70c70a1fa70..a481796edc6d1849dcee90b5f5f5d76bce69f685 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNorwegianColemak.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsNorwegianColemak.java
@@ -44,5 +44,36 @@ public final class TestsNorwegianColemak extends LayoutTestsBase {
         protected void setNordicKeys(final ExpectedKeyboardBuilder builder) {
             // Colemak layout doesn't have Nordic keys.
         }
+
+        @Override
+        protected void setMoreKeysOfA(final ExpectedKeyboardBuilder builder) {
+            builder
+                    // U+00E5: "Ã¥" LATIN SMALL LETTER A WITH RING ABOVE
+                    // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+                    // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+                    // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+                    // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+                    // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+                    // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+                    // U+0101: "ā" LATIN SMALL LETTER A WITH MACRON
+                    .setMoreKeysOf("a", "\u00E5", "\u00E6", "\u00E4", "\u00E0", "\u00E1", "\u00E2",
+                            "\u00E3", "\u0101");
+        }
+
+        @Override
+        protected void setMoreKeysOfO(final ExpectedKeyboardBuilder builder) {
+            builder
+                    // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+                    // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+                    // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+                    // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+                    // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+                    // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+                    // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+                    // U+0153: "Å“" LATIN SMALL LIGATURE OE
+                    // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+                    .setMoreKeysOf("o", "\u00F8", "\u00F6", "\u00F4", "\u00F2", "\u00F3", "\u00F5",
+                            "\u0153", "\u014D");
+        }
     }
 }
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSwedishPcQwerty.java b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSwedishPcQwerty.java
index bb4b9dd22b0e94594e93326d07093e3db63f8a07..ed74d6d740765ed216370743aa0fbe042c9a1c36 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSwedishPcQwerty.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/tests/TestsSwedishPcQwerty.java
@@ -85,5 +85,36 @@ public final class TestsSwedishPcQwerty extends LayoutTestsBase {
         protected void setNordicKeys(final ExpectedKeyboardBuilder builder) {
             // PC QWERTY layout doesn't have Nordic keys.
         }
+
+        @Override
+        protected void setMoreKeysOfA(final ExpectedKeyboardBuilder builder) {
+            builder
+                    // U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+                    // U+00E5: "Ã¥" LATIN SMALL LETTER A WITH RING ABOVE
+                    // U+00E6: "æ" LATIN SMALL LETTER AE
+                    // U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+                    // U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+                    // U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
+                    // U+0105: "Ä…" LATIN SMALL LETTER A WITH OGONEK
+                    // U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
+                    .setMoreKeysOf("a", "\u00E4", "\u00E5", "\u00E6", "\u00E1", "\u00E0", "\u00E2",
+                            "\u0105", "\u00E3");
+        }
+
+        @Override
+        protected void setMoreKeysOfO(final ExpectedKeyboardBuilder builder) {
+            builder
+                    // U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+                    // U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+                    // U+0153: "Å“" LATIN SMALL LIGATURE OE
+                    // U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+                    // U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
+                    // U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+                    // U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
+                    // U+014D: "ō" LATIN SMALL LETTER O WITH MACRON
+                    .setMoreKeysOf("o", "\u00F6", "\u00F8", "\u0153", "\u00F3", "\u00F2", "\u00F4",
+                            "\u00F5", "\u014D");
+        }
+
     }
 }
diff --git a/tools/make-keyboard-text/res/values-da/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-da/donottranslate-more-keys.xml
index c22e262750fd31185fc7aaca596facbacdb6d0c1..98abb05868d1919d77878c2e1aa510af1c636a80 100644
--- a/tools/make-keyboard-text/res/values-da/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-da/donottranslate-more-keys.xml
@@ -18,26 +18,30 @@
 */
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+    <!-- U+00E5: "Ã¥" LATIN SMALL LETTER A WITH RING ABOVE
+         U+00E6: "æ" LATIN SMALL LETTER AE
+         U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
          U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
          U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
          U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
          U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
          U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
-    <string name="morekeys_a">&#x00E1;,&#x00E4;,&#x00E0;,&#x00E2;,&#x00E3;,&#x0101;</string>
+    <string name="morekeys_a">&#x00E5;,&#x00E6;,&#x00E1;,&#x00E4;,&#x00E0;,&#x00E2;,&#x00E3;,&#x0101;</string>
     <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
          U+00EB: "ë" LATIN SMALL LETTER E WITH DIAERESIS -->
     <string name="morekeys_e">&#x00E9;,&#x00EB;</string>
     <!-- U+00ED: "í" LATIN SMALL LETTER I WITH ACUTE
          U+00EF: "ï" LATIN SMALL LETTER I WITH DIAERESIS -->
     <string name="morekeys_i">&#x00ED;,&#x00EF;</string>
-    <!-- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+    <!-- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+         U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+         U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
          U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
          U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
          U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
          U+0153: "Å“" LATIN SMALL LIGATURE OE
          U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
-    <string name="morekeys_o">&#x00F3;,&#x00F4;,&#x00F2;,&#x00F5;,&#x0153;,&#x014D;</string>
+    <string name="morekeys_o">&#x00F8;,&#x00F6;,&#x00F3;,&#x00F4;,&#x00F2;,&#x00F5;,&#x0153;,&#x014D;</string>
     <!-- U+00FA: "ú" LATIN SMALL LETTER U WITH ACUTE
          U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
          U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
diff --git a/tools/make-keyboard-text/res/values-et-rEE/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-et-rEE/donottranslate-more-keys.xml
index 9a8fa3c5977cac1d19fea3ff3f9b7a0ab5ca3263..79266e8235474f139bcb3ac97546ae996c70a92b 100644
--- a/tools/make-keyboard-text/res/values-et-rEE/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-et-rEE/donottranslate-more-keys.xml
@@ -72,7 +72,6 @@
          U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
          U+0144: "Å„" LATIN SMALL LETTER N WITH ACUTE -->
     <string name="morekeys_n">&#x0146;,&#x00F1;,&#x0144;</string>
-
     <!-- U+010D: "č" LATIN SMALL LETTER C WITH CARON
          U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
          U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE -->
diff --git a/tools/make-keyboard-text/res/values-fi/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-fi/donottranslate-more-keys.xml
index 82b84726247cded1d3476e052c76f094163469c0..b06d9e49df7209f6f4718042aa617b24af69afbe 100644
--- a/tools/make-keyboard-text/res/values-fi/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-fi/donottranslate-more-keys.xml
@@ -18,21 +18,24 @@
 */
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- U+00E6: "æ" LATIN SMALL LETTER AE
+    <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+00E5: "Ã¥" LATIN SMALL LETTER A WITH RING ABOVE
+         U+00E6: "æ" LATIN SMALL LETTER AE
          U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
          U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
          U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
          U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
          U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
-    <string name="morekeys_a">&#x00E6;,&#x00E0;,&#x00E1;,&#x00E2;,&#x00E3;,&#x0101;</string>
-    <!-- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+    <string name="morekeys_a">&#x00E4;,&#x00E5;,&#x00E6;,&#x00E0;,&#x00E1;,&#x00E2;,&#x00E3;,&#x0101;</string>
+    <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+         U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
          U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
          U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
          U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
          U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
          U+0153: "Å“" LATIN SMALL LIGATURE OE
          U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
-    <string name="morekeys_o">&#x00F8;,&#x00F4;,&#x00F2;,&#x00F3;,&#x00F5;,&#x0153;,&#x014D;</string>
+    <string name="morekeys_o">&#x00F6;,&#x00F8;,&#x00F4;,&#x00F2;,&#x00F3;,&#x00F5;,&#x0153;,&#x014D;</string>
     <!-- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS -->
     <string name="morekeys_u">&#x00FC;</string>
     <!-- U+0161: "Å¡" LATIN SMALL LETTER S WITH CARON
diff --git a/tools/make-keyboard-text/res/values-nb/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-nb/donottranslate-more-keys.xml
index c5307a98d4835899bc6767554fe7d087fb912cf4..37f9f8a1fd57e25d714395438fafcfe44affdc7f 100644
--- a/tools/make-keyboard-text/res/values-nb/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-nb/donottranslate-more-keys.xml
@@ -18,13 +18,15 @@
 */
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
+    <!-- U+00E5: "Ã¥" LATIN SMALL LETTER A WITH RING ABOVE
+         U+00E6: "æ" LATIN SMALL LETTER AE
          U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
          U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
          U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
          U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE
          U+0101: "ā" LATIN SMALL LETTER A WITH MACRON -->
-    <string name="morekeys_a">&#x00E0;,&#x00E4;,&#x00E1;,&#x00E2;,&#x00E3;,&#x0101;</string>
+    <string name="morekeys_a">&#x00E5;,&#x00E6;,&#x00E4;,&#x00E0;,&#x00E1;,&#x00E2;,&#x00E3;,&#x0101;</string>
     <!-- U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
          U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
          U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX
@@ -33,14 +35,15 @@
          U+0117: "Ä—" LATIN SMALL LETTER E WITH DOT ABOVE
          U+0113: "Ä“" LATIN SMALL LETTER E WITH MACRON -->
     <string name="morekeys_e">&#x00E9;,&#x00E8;,&#x00EA;,&#x00EB;,&#x0119;,&#x0117;,&#x0113;</string>
-    <!-- U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
+    <!-- U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+         U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+         U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
          U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
          U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
-         U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
          U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
          U+0153: "Å“" LATIN SMALL LIGATURE OE
          U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
-    <string name="morekeys_o">&#x00F4;,&#x00F2;,&#x00F3;,&#x00F6;,&#x00F5;,&#x0153;,&#x014D;</string>
+    <string name="morekeys_o">&#x00F8;,&#x00F6;,&#x00F4;,&#x00F2;,&#x00F3;,&#x00F5;,&#x0153;,&#x014D;</string>
     <!-- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
          U+00FB: "û" LATIN SMALL LETTER U WITH CIRCUMFLEX
          U+00F9: "ù" LATIN SMALL LETTER U WITH GRAVE
diff --git a/tools/make-keyboard-text/res/values-sv/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-sv/donottranslate-more-keys.xml
index ead514026e013512ac914d269e11e73395f8d077..832e438f38e4bf71ef9b8dc7de05bc0902f236aa 100644
--- a/tools/make-keyboard-text/res/values-sv/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-sv/donottranslate-more-keys.xml
@@ -18,12 +18,15 @@
 */
 -->
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
+    <!-- U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
+         U+00E5: "Ã¥" LATIN SMALL LETTER A WITH RING
+         U+00E6: "æ" LATIN SMALL LETTER AE
+         U+00E1: "á" LATIN SMALL LETTER A WITH ACUTE
          U+00E0: "à" LATIN SMALL LETTER A WITH GRAVE
          U+00E2: "â" LATIN SMALL LETTER A WITH CIRCUMFLEX
          U+0105: "Ä…" LATIN SMALL LETTER A WITH OGONEK
          U+00E3: "ã" LATIN SMALL LETTER A WITH TILDE -->
-    <string name="morekeys_a">&#x00E1;,&#x00E0;,&#x00E2;,&#x0105;,&#x00E3;</string>
+    <string name="morekeys_a">&#x00E4;,&#x00E5;,&#x00E6;,&#x00E1;,&#x00E0;,&#x00E2;,&#x0105;,&#x00E3;</string>
     <!-- U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
          U+0107: "ć" LATIN SMALL LETTER C WITH ACUTE
          U+010D: "č" LATIN SMALL LETTER C WITH CARON -->
@@ -48,12 +51,15 @@
          U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
          U+0148: "ň" LATIN SMALL LETTER N WITH CARON -->
     <string name="morekeys_n">&#x0144;,&#x00F1;,&#x0148;</string>
-    <!-- U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
+    <!-- U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
+         U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
+         U+0153: "Å“" LATIN SMALL LIGATURE OE
+         U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
          U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
          U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
          U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
          U+014D: "ō" LATIN SMALL LETTER O WITH MACRON -->
-    <string name="morekeys_o">&#x00F3;,&#x00F2;,&#x00F4;,&#x00F5;,&#x014D;</string>
+    <string name="morekeys_o">&#x00F6;,&#x00F8;,&#x0153;,&#x00F3;,&#x00F2;,&#x00F4;,&#x00F5;,&#x014D;</string>
     <!-- U+0159: "Å™" LATIN SMALL LETTER R WITH CARON -->
     <string name="morekeys_r">&#x0159;</string>
     <!-- U+015B: "Å›" LATIN SMALL LETTER S WITH ACUTE