aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java106
-rw-r--r--native/jni/src/suggest/core/dicnode/dic_node.h29
-rw-r--r--native/jni/src/suggest/core/dicnode/dic_node_utils.cpp1
-rw-r--r--native/jni/src/suggest/core/dicnode/dic_node_vector.h15
-rw-r--r--native/jni/src/suggest/core/dicnode/internal/dic_node_properties.h2
-rw-r--r--native/jni/src/suggest/core/dicnode/internal/dic_node_state.h36
-rw-r--r--native/jni/src/suggest/core/dicnode/internal/dic_node_state_input.h7
-rw-r--r--native/jni/src/suggest/core/dicnode/internal/dic_node_state_output.h18
-rw-r--r--native/jni/src/suggest/core/dicnode/internal/dic_node_state_prevword.h38
-rw-r--r--native/jni/src/suggest/core/dicnode/internal/dic_node_state_scoring.h7
-rw-r--r--native/jni/src/suggest/core/suggest.cpp12
-rw-r--r--native/jni/src/suggest/policyimpl/typing/typing_traversal.h3
-rw-r--r--tools/make-keyboard-text/res/values-et-rEE/donottranslate-more-keys.xml3
-rw-r--r--tools/make-keyboard-text/res/values-is/donottranslate-more-keys.xml6
-rw-r--r--tools/make-keyboard-text/res/values-lt/donottranslate-more-keys.xml3
-rw-r--r--tools/make-keyboard-text/res/values-lv/donottranslate-more-keys.xml3
-rw-r--r--tools/make-keyboard-text/res/values-sk/donottranslate-more-keys.xml3
-rw-r--r--tools/make-keyboard-text/res/values-sv/donottranslate-more-keys.xml5
-rw-r--r--tools/make-keyboard-text/res/values-zz/donottranslate-more-keys.xml2
19 files changed, 133 insertions, 166 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
index cace069c4..387ed3945 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
@@ -101,10 +101,10 @@ public final class KeyboardTextsTable {
/* 19: 9 */ "keylabel_for_currency",
/* 20: 8 */ "more_keys_for_r",
/* 21: 6 */ "more_keys_for_k",
- /* 22: 6 */ "keylabel_for_nordic_row1_11",
- /* 23: 6 */ "keylabel_for_nordic_row2_10",
- /* 24: 6 */ "keylabel_for_nordic_row2_11",
- /* 25: 6 */ "more_keys_for_cyrillic_ie",
+ /* 22: 6 */ "more_keys_for_cyrillic_ie",
+ /* 23: 5 */ "keylabel_for_nordic_row1_11",
+ /* 24: 5 */ "keylabel_for_nordic_row2_10",
+ /* 25: 5 */ "keylabel_for_nordic_row2_11",
/* 26: 5 */ "more_keys_for_nordic_row2_10",
/* 27: 5 */ "keylabel_for_east_slavic_row1_9",
/* 28: 5 */ "keylabel_for_east_slavic_row2_2",
@@ -714,11 +714,13 @@ public final class KeyboardTextsTable {
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* label_to_alpha_key */ "\u0410\u0411\u0412",
/* more_keys_for_y ~ */
- null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- /* ~ keylabel_for_nordic_row2_11 */
+ null, null, null, null, null, null, null, null, null, null, null,
+ /* ~ more_keys_for_k */
// U+0451: "ё" CYRILLIC SMALL LETTER IO
/* more_keys_for_cyrillic_ie */ "\u0451",
- /* more_keys_for_nordic_row2_10 */ null,
+ /* keylabel_for_nordic_row1_11 ~ */
+ null, null, null, null,
+ /* ~ more_keys_for_nordic_row2_10 */
// U+045E: "ў" CYRILLIC SMALL LETTER SHORT U
/* keylabel_for_east_slavic_row1_9 */ "\u045E",
// U+044B: "ы" CYRILLIC SMALL LETTER YERU
@@ -959,15 +961,14 @@ public final class KeyboardTextsTable {
/* single_angle_quotes */ "!text/single_raqm_laqm",
/* double_angle_quotes */ "!text/double_raqm_laqm",
/* keylabel_for_currency ~ */
- null, null, null,
- /* ~ more_keys_for_k */
+ null, null, null, null,
+ /* ~ more_keys_for_cyrillic_ie */
// U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
/* keylabel_for_nordic_row1_11 */ "\u00E5",
// U+00E6: "æ" LATIN SMALL LETTER AE
/* keylabel_for_nordic_row2_10 */ "\u00E6",
// U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
/* keylabel_for_nordic_row2_11 */ "\u00F8",
- /* more_keys_for_cyrillic_ie */ null,
// U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
/* more_keys_for_nordic_row2_10 */ "\u00E4",
/* keylabel_for_east_slavic_row1_9 ~ */
@@ -1220,7 +1221,7 @@ public final class KeyboardTextsTable {
// U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
// U+0138: "ĸ" LATIN SMALL LETTER KRA
/* more_keys_for_k */ "\u0137,\u0138",
- /* keylabel_for_nordic_row1_11 ~ */
+ /* more_keys_for_cyrillic_ie ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
@@ -1382,8 +1383,7 @@ public final class KeyboardTextsTable {
// U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
- // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
- /* more_keys_for_n */ "\u0146,\u00F1,\u0144,\u0144",
+ /* more_keys_for_n */ "\u0146,\u00F1,\u0144",
/* label_to_alpha_key */ null,
// U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
// U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
@@ -1414,13 +1414,13 @@ public final class KeyboardTextsTable {
/* more_keys_for_r */ "\u0157,\u0159,\u0155",
// U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
/* more_keys_for_k */ "\u0137",
+ /* more_keys_for_cyrillic_ie */ null,
// U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
/* keylabel_for_nordic_row1_11 */ "\u00FC",
// U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
/* keylabel_for_nordic_row2_10 */ "\u00F6",
// U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
/* keylabel_for_nordic_row2_11 */ "\u00E4",
- /* more_keys_for_cyrillic_ie */ null,
// U+00F5: "õ" LATIN SMALL LETTER O WITH TILDE
/* more_keys_for_nordic_row2_10 */ "\u00F5",
};
@@ -1605,15 +1605,14 @@ public final class KeyboardTextsTable {
// U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE
/* more_keys_for_z */ "\u017E,\u017A,\u017C",
/* more_keys_for_t ~ */
- null, null, null, null, null, null, null, null,
- /* ~ more_keys_for_k */
+ null, null, null, null, null, null, null, null, null,
+ /* ~ more_keys_for_cyrillic_ie */
// U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
/* keylabel_for_nordic_row1_11 */ "\u00E5",
// U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
/* keylabel_for_nordic_row2_10 */ "\u00F6",
// U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
/* keylabel_for_nordic_row2_11 */ "\u00E4",
- /* more_keys_for_cyrillic_ie */ null,
// U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
/* more_keys_for_nordic_row2_10 */ "\u00F8",
/* keylabel_for_east_slavic_row1_9 ~ */
@@ -1943,15 +1942,6 @@ public final class KeyboardTextsTable {
/* more_keys_for_z */ null,
// U+00FE: "þ" LATIN SMALL LETTER THORN
/* more_keys_for_t */ "\u00FE",
- /* more_keys_for_l ~ */
- null, null, null, null, null, null, null,
- /* ~ more_keys_for_k */
- // U+00F0: "ð" LATIN SMALL LETTER ETH
- /* keylabel_for_nordic_row1_11 */ "\u00F0",
- // U+00E6: "æ" LATIN SMALL LETTER AE
- /* keylabel_for_nordic_row2_10 */ "\u00E6",
- // U+00FE: "þ" LATIN SMALL LETTER THORN
- /* keylabel_for_nordic_row2_11 */ "\u00FE",
};
/* Language it: Italian */
@@ -2086,11 +2076,13 @@ public final class KeyboardTextsTable {
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* label_to_alpha_key */ "\u0410\u0411\u0412",
/* more_keys_for_y ~ */
- null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- /* ~ keylabel_for_nordic_row2_11 */
+ null, null, null, null, null, null, null, null, null, null, null,
+ /* ~ more_keys_for_k */
// U+0451: "ё" CYRILLIC SMALL LETTER IO
/* more_keys_for_cyrillic_ie */ "\u0451",
- /* more_keys_for_nordic_row2_10 */ null,
+ /* keylabel_for_nordic_row1_11 ~ */
+ null, null, null, null,
+ /* ~ more_keys_for_nordic_row2_10 */
// U+0449: "щ" CYRILLIC SMALL LETTER SHCHA
/* keylabel_for_east_slavic_row1_9 */ "\u0449",
// U+044B: "ы" CYRILLIC SMALL LETTER YERU
@@ -2163,11 +2155,13 @@ public final class KeyboardTextsTable {
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* label_to_alpha_key */ "\u0410\u0411\u0412",
/* more_keys_for_y ~ */
- null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- /* ~ keylabel_for_nordic_row2_11 */
+ null, null, null, null, null, null, null, null, null, null, null,
+ /* ~ more_keys_for_k */
// U+0451: "ё" CYRILLIC SMALL LETTER IO
/* more_keys_for_cyrillic_ie */ "\u0451",
- /* more_keys_for_nordic_row2_10 */ null,
+ /* keylabel_for_nordic_row1_11 ~ */
+ null, null, null, null,
+ /* ~ more_keys_for_nordic_row2_10 */
// U+0449: "щ" CYRILLIC SMALL LETTER SHCHA
/* keylabel_for_east_slavic_row1_9 */ "\u0449",
// U+044B: "ы" CYRILLIC SMALL LETTER YERU
@@ -2272,8 +2266,7 @@ public final class KeyboardTextsTable {
// U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
- // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
- /* more_keys_for_n */ "\u0146,\u00F1,\u0144,\u0144",
+ /* more_keys_for_n */ "\u0146,\u00F1,\u0144",
/* label_to_alpha_key */ null,
// U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
// U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
@@ -2367,8 +2360,7 @@ public final class KeyboardTextsTable {
// U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
- // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
- /* more_keys_for_n */ "\u0146,\u00F1,\u0144,\u0144",
+ /* more_keys_for_n */ "\u0146,\u00F1,\u0144",
/* label_to_alpha_key */ null,
// U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
// U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
@@ -2417,15 +2409,15 @@ public final class KeyboardTextsTable {
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* label_to_alpha_key */ "\u0410\u0411\u0412",
/* more_keys_for_y ~ */
- null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- /* ~ keylabel_for_nordic_row2_11 */
+ null, null, null, null, null, null, null, null, null, null, null,
+ /* ~ more_keys_for_k */
// U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE
/* more_keys_for_cyrillic_ie */ "\u0450",
- /* more_keys_for_nordic_row2_10 ~ */
+ /* keylabel_for_nordic_row1_11 ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null,
/* ~ more_keys_for_cyrillic_o */
// U+0455: "ѕ" CYRILLIC SMALL LETTER DZE
/* keylabel_for_south_slavic_row1_6 */ "\u0455",
@@ -2492,14 +2484,14 @@ public final class KeyboardTextsTable {
/* single_quotes */ "!text/single_9qm_rqm",
/* more_keys_for_c ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- /* ~ more_keys_for_k */
+ null,
+ /* ~ more_keys_for_cyrillic_ie */
// U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
/* keylabel_for_nordic_row1_11 */ "\u00E5",
// U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
/* keylabel_for_nordic_row2_10 */ "\u00F8",
// U+00E6: "æ" LATIN SMALL LETTER AE
/* keylabel_for_nordic_row2_11 */ "\u00E6",
- /* more_keys_for_cyrillic_ie */ null,
// U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
/* more_keys_for_nordic_row2_10 */ "\u00F6",
/* keylabel_for_east_slavic_row1_9 ~ */
@@ -2790,11 +2782,13 @@ public final class KeyboardTextsTable {
// U+0412: "В" CYRILLIC CAPITAL LETTER VE
/* label_to_alpha_key */ "\u0410\u0411\u0412",
/* more_keys_for_y ~ */
- null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- /* ~ keylabel_for_nordic_row2_11 */
+ null, null, null, null, null, null, null, null, null, null, null,
+ /* ~ more_keys_for_k */
// U+0451: "ё" CYRILLIC SMALL LETTER IO
/* more_keys_for_cyrillic_ie */ "\u0451",
- /* more_keys_for_nordic_row2_10 */ null,
+ /* keylabel_for_nordic_row1_11 ~ */
+ null, null, null, null,
+ /* ~ more_keys_for_nordic_row2_10 */
// U+0449: "щ" CYRILLIC SMALL LETTER SHCHA
/* keylabel_for_east_slavic_row1_9 */ "\u0449",
// U+044B: "ы" CYRILLIC SMALL LETTER YERU
@@ -2869,8 +2863,7 @@ public final class KeyboardTextsTable {
// U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
// U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
// U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
- // U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
- /* more_keys_for_n */ "\u0148,\u0146,\u00F1,\u0144,\u0144",
+ /* more_keys_for_n */ "\u0148,\u0146,\u00F1,\u0144",
/* label_to_alpha_key */ null,
// U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
// U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
@@ -2951,15 +2944,15 @@ public final class KeyboardTextsTable {
/* single_angle_quotes */ "!text/single_raqm_laqm",
/* double_angle_quotes */ "!text/double_raqm_laqm",
/* keylabel_for_currency ~ */
- null, null, null, null, null, null,
- /* ~ keylabel_for_nordic_row2_11 */
+ null, null, null,
+ /* ~ more_keys_for_k */
// U+0450: "ѐ" CYRILLIC SMALL LETTER IE WITH GRAVE
/* more_keys_for_cyrillic_ie */ "\u0450",
- /* more_keys_for_nordic_row2_10 ~ */
+ /* keylabel_for_nordic_row1_11 ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
- null, null, null, null, null, null, null, null, null, null,
+ null, null, null, null, null, null, null, null, null, null, null, null, null,
/* ~ more_keys_for_cyrillic_o */
// TODO: Move these to sr-Latn once we can handle IETF language tag with script name specified.
// BEGIN: More keys definitions for Serbian (Latin)
@@ -3040,8 +3033,7 @@ public final class KeyboardTextsTable {
/* label_to_alpha_key */ null,
// U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
// U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
- // U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
- /* more_keys_for_y */ "\u00FD,\u00FF,\u00FC",
+ /* more_keys_for_y */ "\u00FD,\u00FF",
// U+00F0: "ð" LATIN SMALL LETTER ETH
// U+010F: "ď" LATIN SMALL LETTER D WITH CARON
/* more_keys_for_d */ "\u00F0,\u010F",
@@ -3061,13 +3053,13 @@ public final class KeyboardTextsTable {
// U+0159: "ř" LATIN SMALL LETTER R WITH CARON
/* more_keys_for_r */ "\u0159",
/* more_keys_for_k */ null,
+ /* more_keys_for_cyrillic_ie */ null,
// U+00E5: "å" LATIN SMALL LETTER A WITH RING ABOVE
/* keylabel_for_nordic_row1_11 */ "\u00E5",
// U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
/* keylabel_for_nordic_row2_10 */ "\u00F6",
// U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
/* keylabel_for_nordic_row2_11 */ "\u00E4",
- /* more_keys_for_cyrillic_ie */ null,
// U+00F8: "ø" LATIN SMALL LETTER O WITH STROKE
// U+0153: "œ" LATIN SMALL LIGATURE OE
/* more_keys_for_nordic_row2_10 */ "\u00F8,\u0153",
@@ -3443,7 +3435,7 @@ public final class KeyboardTextsTable {
// U+0103: "ă" LATIN SMALL LETTER A WITH BREVE
// U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
// U+00AA: "ª" FEMININE ORDINAL INDICATOR
- /* more_keys_for_a */ "\u00E0,\u00E1,\u00E2,\u00E3,\u00E4,\u00E5,\u00E6,\u00E3,\u00E5,\u0101,\u0103,\u0105,\u00AA",
+ /* more_keys_for_a */ "\u00E0,\u00E1,\u00E2,\u00E3,\u00E4,\u00E5,\u00E6,\u0101,\u0103,\u0105,\u00AA",
// U+00F2: "ò" LATIN SMALL LETTER O WITH GRAVE
// U+00F3: "ó" LATIN SMALL LETTER O WITH ACUTE
// U+00F4: "ô" LATIN SMALL LETTER O WITH CIRCUMFLEX
@@ -3550,7 +3542,7 @@ public final class KeyboardTextsTable {
// U+0137: "ķ" LATIN SMALL LETTER K WITH CEDILLA
// U+0138: "ĸ" LATIN SMALL LETTER KRA
/* more_keys_for_k */ "\u0137,\u0138",
- /* keylabel_for_nordic_row1_11 ~ */
+ /* more_keys_for_cyrillic_ie ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
@@ -3595,7 +3587,7 @@ public final class KeyboardTextsTable {
"hr", LANGUAGE_hr, /* 9/ 19 Croatian */
"hu", LANGUAGE_hu, /* 9/ 19 Hungarian */
"hy", LANGUAGE_hy_AM, /* 8/122 Armenian (Armenia) */
- "is", LANGUAGE_is, /* 13/ 25 Icelandic */
+ "is", LANGUAGE_is, /* 10/ 15 Icelandic */
"it", LANGUAGE_it, /* 5/ 5 Italian */
"iw", LANGUAGE_iw, /* 20/117 Hebrew */
"ka", LANGUAGE_ka_GE, /* 3/ 11 Georgian (Georgia) */
diff --git a/native/jni/src/suggest/core/dicnode/dic_node.h b/native/jni/src/suggest/core/dicnode/dic_node.h
index b812f8ff4..65dad5677 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node.h
@@ -36,7 +36,7 @@
#define DUMP_WORD_AND_SCORE(header) \
do { char charBuf[50]; char prevWordCharBuf[50]; \
INTS_TO_CHARS(getOutputWordBuf(), getNodeCodePointCount(), charBuf, NELEMS(charBuf)); \
- INTS_TO_CHARS(mDicNodeState.mDicNodeStatePrevWord.mPrevWord, \
+ INTS_TO_CHARS(mDicNodeState.mDicNodeStatePrevWord.getPrevWordBuf(), \
mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength(), prevWordCharBuf, \
NELEMS(prevWordCharBuf)); \
AKLOGI("#%8s, %5f, %5f, %5f, %5f, %s, %s, %d, %5f,", header, \
@@ -97,7 +97,7 @@ class DicNode {
DicNode(const DicNode &dicNode);
DicNode &operator=(const DicNode &dicNode);
- virtual ~DicNode() {}
+ ~DicNode() {}
// Init for copy
void initByCopy(const DicNode *const dicNode) {
@@ -130,22 +130,9 @@ class DicNode {
NOT_A_PROBABILITY /* probability */, false /* isTerminal */,
true /* hasChildren */, false /* isBlacklistedOrNotAWord */, 0 /* depth */,
0 /* terminalDepth */);
- // TODO: Move to dicNodeState?
- mDicNodeState.mDicNodeStateOutput.init(); // reset for next word
- mDicNodeState.mDicNodeStateInput.init(
- &dicNode->mDicNodeState.mDicNodeStateInput, true /* resetTerminalDiffCost */);
- mDicNodeState.mDicNodeStateScoring.init(
- &dicNode->mDicNodeState.mDicNodeStateScoring);
- mDicNodeState.mDicNodeStatePrevWord.init(
- dicNode->mDicNodeState.mDicNodeStatePrevWord.getPrevWordCount() + 1,
- dicNode->mDicNodeProperties.getProbability(),
+ mDicNodeState.initAsRootWithPreviousWord(&dicNode->mDicNodeState,
dicNode->mDicNodeProperties.getPtNodePos(),
- dicNode->mDicNodeState.mDicNodeStatePrevWord.mPrevWord,
- dicNode->mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength(),
- dicNode->getOutputWordBuf(),
- dicNode->mDicNodeProperties.getDepth(),
- dicNode->mDicNodeState.mDicNodeStatePrevWord.getSecondWordFirstInputIndex(),
- mDicNodeState.mDicNodeStateInput.getInputIndex(0) /* lastInputIndex */);
+ dicNode->mDicNodeProperties.getDepth());
PROF_NODE_COPY(&dicNode->mProfiler, mProfiler);
}
@@ -231,7 +218,7 @@ class DicNode {
}
bool isFirstCharUppercase() const {
- const int c = getOutputWordBuf()[0];
+ const int c = mDicNodeState.mDicNodeStateOutput.getCodePointAt(0);
return CharUtils::isAsciiUpper(c);
}
@@ -326,7 +313,7 @@ class DicNode {
void outputResult(int *dest) const {
const uint16_t prevWordLength = mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength();
const uint16_t currentDepth = getNodeCodePointCount();
- DicNodeUtils::appendTwoWords(mDicNodeState.mDicNodeStatePrevWord.mPrevWord,
+ DicNodeUtils::appendTwoWords(mDicNodeState.mDicNodeStatePrevWord.getPrevWordBuf(),
prevWordLength, getOutputWordBuf(), currentDepth, dest);
DUMP_WORD_AND_SCORE("OUTPUT");
}
@@ -337,7 +324,7 @@ class DicNode {
// are concatenated together in mPrevWord - which contains a space at the end.
int getTotalNodeSpaceCount() const {
if (isFirstWord()) return 0;
- return CharUtils::getSpaceCount(mDicNodeState.mDicNodeStatePrevWord.mPrevWord,
+ return CharUtils::getSpaceCount(mDicNodeState.mDicNodeStatePrevWord.getPrevWordBuf(),
mDicNodeState.mDicNodeStatePrevWord.getPrevWordLength());
}
@@ -389,7 +376,7 @@ class DicNode {
}
AK_FORCE_INLINE const int *getOutputWordBuf() const {
- return mDicNodeState.mDicNodeStateOutput.mCodePointsBuf;
+ return mDicNodeState.mDicNodeStateOutput.getCodePointBuf();
}
int getPrevCodePointG(int pointerId) const {
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp b/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp
index a6ea68c29..48752f2cd 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp
+++ b/native/jni/src/suggest/core/dicnode/dic_node_utils.cpp
@@ -16,7 +16,6 @@
#include "suggest/core/dicnode/dic_node_utils.h"
-#include <algorithm>
#include <cstring>
#include "suggest/core/dicnode/dic_node.h"
diff --git a/native/jni/src/suggest/core/dicnode/dic_node_vector.h b/native/jni/src/suggest/core/dicnode/dic_node_vector.h
index 9364e7751..cb28e57d8 100644
--- a/native/jni/src/suggest/core/dicnode/dic_node_vector.h
+++ b/native/jni/src/suggest/core/dicnode/dic_node_vector.h
@@ -32,10 +32,10 @@ class DicNodeVector {
#else
static const int DEFAULT_NODES_SIZE_FOR_OPTIMIZATION = 60;
#endif
- AK_FORCE_INLINE DicNodeVector() : mDicNodes(0), mLock(false), mEmptyNode() {}
+ AK_FORCE_INLINE DicNodeVector() : mDicNodes(), mLock(false) {}
// Specify the capacity of the vector
- AK_FORCE_INLINE DicNodeVector(const int size) : mDicNodes(0), mLock(false), mEmptyNode() {
+ AK_FORCE_INLINE DicNodeVector(const int size) : mDicNodes(), mLock(false) {
mDicNodes.reserve(size);
}
@@ -52,13 +52,9 @@ class DicNodeVector {
return static_cast<int>(mDicNodes.size());
}
- bool exceeds(const size_t limit) const {
- return mDicNodes.size() >= limit;
- }
-
void pushPassingChild(DicNode *dicNode) {
ASSERT(!mLock);
- mDicNodes.push_back(mEmptyNode);
+ mDicNodes.emplace_back();
mDicNodes.back().initAsPassingChild(dicNode);
}
@@ -67,7 +63,7 @@ class DicNodeVector {
const bool hasChildren, const bool isBlacklistedOrNotAWord,
const uint16_t mergedNodeCodePointCount, const int *const mergedNodeCodePoints) {
ASSERT(!mLock);
- mDicNodes.push_back(mEmptyNode);
+ mDicNodes.emplace_back();
mDicNodes.back().initAsChild(dicNode, ptNodePos, childrenPtNodeArrayPos, probability,
isTerminal, hasChildren, isBlacklistedOrNotAWord, mergedNodeCodePointCount,
mergedNodeCodePoints);
@@ -80,14 +76,13 @@ class DicNodeVector {
DicNode *front() {
ASSERT(1 <= static_cast<int>(mDicNodes.size()));
- return &mDicNodes[0];
+ return &mDicNodes.front();
}
private:
DISALLOW_COPY_AND_ASSIGN(DicNodeVector);
std::vector<DicNode> mDicNodes;
bool mLock;
- DicNode mEmptyNode;
};
} // namespace latinime
#endif // LATINIME_DIC_NODE_VECTOR_H
diff --git a/native/jni/src/suggest/core/dicnode/internal/dic_node_properties.h b/native/jni/src/suggest/core/dicnode/internal/dic_node_properties.h
index c41a7243a..ab02e6192 100644
--- a/native/jni/src/suggest/core/dicnode/internal/dic_node_properties.h
+++ b/native/jni/src/suggest/core/dicnode/internal/dic_node_properties.h
@@ -33,7 +33,7 @@ class DicNodeProperties {
mIsTerminal(false), mHasChildrenPtNodes(false), mIsBlacklistedOrNotAWord(false),
mDepth(0), mLeavingDepth(0) {}
- virtual ~DicNodeProperties() {}
+ ~DicNodeProperties() {}
// Should be called only once per DicNode is initialized.
void init(const int pos, const int childrenPos, const int nodeCodePoint, const int probability,
diff --git a/native/jni/src/suggest/core/dicnode/internal/dic_node_state.h b/native/jni/src/suggest/core/dicnode/internal/dic_node_state.h
index b0fddb724..a41667567 100644
--- a/native/jni/src/suggest/core/dicnode/internal/dic_node_state.h
+++ b/native/jni/src/suggest/core/dicnode/internal/dic_node_state.h
@@ -37,7 +37,18 @@ class DicNodeState {
mDicNodeStateScoring() {
}
- virtual ~DicNodeState() {}
+ ~DicNodeState() {}
+
+ DicNodeState &operator=(const DicNodeState& src) {
+ init(&src);
+ return *this;
+ }
+
+ DicNodeState(const DicNodeState& src)
+ : mDicNodeStateInput(), mDicNodeStateOutput(), mDicNodeStatePrevWord(),
+ mDicNodeStateScoring() {
+ init(&src);
+ }
// Init with prevWordPos
void init(const int prevWordPos) {
@@ -47,6 +58,24 @@ class DicNodeState {
mDicNodeStateScoring.init();
}
+ // Init with previous word.
+ void initAsRootWithPreviousWord(const DicNodeState *prevWordDicNodeState,
+ const int prevWordPos, const int prevWordCodePointCount) {
+ mDicNodeStateOutput.init(); // reset for next word
+ mDicNodeStateInput.init(
+ &prevWordDicNodeState->mDicNodeStateInput, true /* resetTerminalDiffCost */);
+ mDicNodeStateScoring.init(&prevWordDicNodeState->mDicNodeStateScoring);
+ mDicNodeStatePrevWord.init(
+ prevWordDicNodeState->mDicNodeStatePrevWord.getPrevWordCount() + 1,
+ prevWordPos,
+ prevWordDicNodeState->mDicNodeStatePrevWord.getPrevWordBuf(),
+ prevWordDicNodeState->mDicNodeStatePrevWord.getPrevWordLength(),
+ prevWordDicNodeState->mDicNodeStateOutput.getCodePointBuf(),
+ prevWordCodePointCount,
+ prevWordDicNodeState->mDicNodeStatePrevWord.getSecondWordFirstInputIndex(),
+ prevWordDicNodeState->mDicNodeStateInput.getInputIndex(0) /* lastInputIndex */);
+ }
+
// Init by copy
AK_FORCE_INLINE void init(const DicNodeState *const src) {
mDicNodeStateInput.init(&src->mDicNodeStateInput);
@@ -62,11 +91,6 @@ class DicNodeState {
mDicNodeStateOutput.addMergedNodeCodePoints(
mergedNodeCodePointCount, mergedNodeCodePoints);
}
-
- private:
- // Caution!!!
- // Use a default copy constructor and an assign operator because shallow copies are ok
- // for this class
};
} // namespace latinime
#endif // LATINIME_DIC_NODE_STATE_H
diff --git a/native/jni/src/suggest/core/dicnode/internal/dic_node_state_input.h b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_input.h
index bbd9435b5..3d788114f 100644
--- a/native/jni/src/suggest/core/dicnode/internal/dic_node_state_input.h
+++ b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_input.h
@@ -25,7 +25,7 @@ namespace latinime {
class DicNodeStateInput {
public:
DicNodeStateInput() {}
- virtual ~DicNodeStateInput() {}
+ ~DicNodeStateInput() {}
// TODO: Merge into DicNodeStatePrevWord::truncate
void truncate(const int commitPoint) {
@@ -89,9 +89,8 @@ class DicNodeStateInput {
}
private:
- // Caution!!!
- // Use a default copy constructor and an assign operator because shallow copies are ok
- // for this class
+ DISALLOW_COPY_AND_ASSIGN(DicNodeStateInput);
+
int mInputIndex[MAX_POINTER_COUNT_G];
int mPrevCodePoint[MAX_POINTER_COUNT_G];
float mTerminalDiffCost[MAX_POINTER_COUNT_G];
diff --git a/native/jni/src/suggest/core/dicnode/internal/dic_node_state_output.h b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_output.h
index abafc0edf..bdb182c1d 100644
--- a/native/jni/src/suggest/core/dicnode/internal/dic_node_state_output.h
+++ b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_output.h
@@ -27,11 +27,9 @@ namespace latinime {
class DicNodeStateOutput {
public:
- DicNodeStateOutput() : mOutputtedCodePointCount(0) {
- init();
- }
+ DicNodeStateOutput() : mOutputtedCodePointCount(0) {}
- virtual ~DicNodeStateOutput() {}
+ ~DicNodeStateOutput() {}
void init() {
mOutputtedCodePointCount = 0;
@@ -63,19 +61,19 @@ class DicNodeStateOutput {
}
}
- // TODO: Remove
int getCodePointAt(const int index) const {
return mCodePointsBuf[index];
}
- // TODO: Move to private
- int mCodePointsBuf[MAX_WORD_LENGTH];
+ const int *getCodePointBuf() const {
+ return mCodePointsBuf;
+ }
private:
- // Caution!!!
- // Use a default copy constructor and an assign operator because shallow copies are ok
- // for this class
+ DISALLOW_COPY_AND_ASSIGN(DicNodeStateOutput);
+
uint16_t mOutputtedCodePointCount;
+ int mCodePointsBuf[MAX_WORD_LENGTH];
};
} // namespace latinime
#endif // LATINIME_DIC_NODE_STATE_OUTPUT_H
diff --git a/native/jni/src/suggest/core/dicnode/internal/dic_node_state_prevword.h b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_prevword.h
index 7868f7853..f2b1ce8f7 100644
--- a/native/jni/src/suggest/core/dicnode/internal/dic_node_state_prevword.h
+++ b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_prevword.h
@@ -30,29 +30,18 @@ namespace latinime {
class DicNodeStatePrevWord {
public:
AK_FORCE_INLINE DicNodeStatePrevWord()
- : mPrevWordCount(0), mPrevWordLength(0), mPrevWordStart(0), mPrevWordProbability(0),
- mPrevWordPtNodePos(NOT_A_DICT_POS), mSecondWordFirstInputIndex(NOT_AN_INDEX) {
- memset(mPrevWord, 0, sizeof(mPrevWord));
- }
+ : mPrevWordCount(0), mPrevWordLength(0), mPrevWordStart(0),
+ mPrevWordPtNodePos(NOT_A_DICT_POS), mSecondWordFirstInputIndex(NOT_AN_INDEX) {}
- virtual ~DicNodeStatePrevWord() {}
-
- void init() {
- mPrevWordLength = 0;
- mPrevWordCount = 0;
- mPrevWordStart = 0;
- mPrevWordProbability = -1;
- mPrevWordPtNodePos = NOT_A_DICT_POS;
- mSecondWordFirstInputIndex = NOT_AN_INDEX;
- }
+ ~DicNodeStatePrevWord() {}
void init(const int prevWordNodePos) {
mPrevWordLength = 0;
mPrevWordCount = 0;
mPrevWordStart = 0;
- mPrevWordProbability = -1;
mPrevWordPtNodePos = prevWordNodePos;
mSecondWordFirstInputIndex = NOT_AN_INDEX;
+ mPrevWord[0] = 0;
}
// Init by copy
@@ -60,18 +49,15 @@ class DicNodeStatePrevWord {
mPrevWordLength = prevWord->mPrevWordLength;
mPrevWordCount = prevWord->mPrevWordCount;
mPrevWordStart = prevWord->mPrevWordStart;
- mPrevWordProbability = prevWord->mPrevWordProbability;
mPrevWordPtNodePos = prevWord->mPrevWordPtNodePos;
mSecondWordFirstInputIndex = prevWord->mSecondWordFirstInputIndex;
memmove(mPrevWord, prevWord->mPrevWord, prevWord->mPrevWordLength * sizeof(mPrevWord[0]));
}
- void init(const int16_t prevWordCount, const int16_t prevWordProbability,
- const int prevWordNodePos, const int *const src0, const int16_t length0,
- const int *const src1, const int16_t length1,
+ void init(const int16_t prevWordCount, const int prevWordNodePos, const int *const src0,
+ const int16_t length0, const int *const src1, const int16_t length1,
const int prevWordSecondWordFirstInputIndex, const int lastInputIndex) {
mPrevWordCount = std::min(prevWordCount, static_cast<int16_t>(MAX_RESULTS));
- mPrevWordProbability = prevWordProbability;
mPrevWordPtNodePos = prevWordNodePos;
int twoWordsLen =
DicNodeUtils::appendTwoWords(src0, length0, src1, length1, mPrevWord);
@@ -137,19 +123,19 @@ class DicNodeStatePrevWord {
return true;
}
- // TODO: Move to private
- int mPrevWord[MAX_WORD_LENGTH];
+ const int *getPrevWordBuf() const {
+ return mPrevWord;
+ }
private:
- // Caution!!!
- // Use a default copy constructor and an assign operator because shallow copies are ok
- // for this class
+ DISALLOW_COPY_AND_ASSIGN(DicNodeStatePrevWord);
+
int16_t mPrevWordCount;
int16_t mPrevWordLength;
int16_t mPrevWordStart;
- int16_t mPrevWordProbability;
int mPrevWordPtNodePos;
int mSecondWordFirstInputIndex;
+ int mPrevWord[MAX_WORD_LENGTH];
};
} // namespace latinime
#endif // LATINIME_DIC_NODE_STATE_PREVWORD_H
diff --git a/native/jni/src/suggest/core/dicnode/internal/dic_node_state_scoring.h b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_scoring.h
index 18b7d736a..458eac81b 100644
--- a/native/jni/src/suggest/core/dicnode/internal/dic_node_state_scoring.h
+++ b/native/jni/src/suggest/core/dicnode/internal/dic_node_state_scoring.h
@@ -37,7 +37,7 @@ class DicNodeStateScoring {
mNormalizedCompoundDistanceAfterFirstWord(MAX_VALUE_FOR_WEIGHTING) {
}
- virtual ~DicNodeStateScoring() {}
+ ~DicNodeStateScoring() {}
void init() {
mEditCorrectionCount = 0;
@@ -175,9 +175,8 @@ class DicNodeStateScoring {
}
private:
- // Caution!!!
- // Use a default copy constructor and an assign operator because shallow copies are ok
- // for this class
+ DISALLOW_COPY_AND_ASSIGN(DicNodeStateScoring);
+
DoubleLetterLevel mDoubleLetterLevel;
DigraphUtils::DigraphCodePointIndex mDigraphIndex;
diff --git a/native/jni/src/suggest/core/suggest.cpp b/native/jni/src/suggest/core/suggest.cpp
index c3b670337..f60a210d4 100644
--- a/native/jni/src/suggest/core/suggest.cpp
+++ b/native/jni/src/suggest/core/suggest.cpp
@@ -248,17 +248,16 @@ void Suggest::processTerminalDicNode(
if (dicNode->shouldBeFilteredBySafetyNetForBigram()) {
return;
}
+ if (!dicNode->hasMatchedOrProximityCodePoints()) {
+ return;
+ }
// Create a non-cached node here.
- DicNode terminalDicNode;
- DicNodeUtils::initByCopy(dicNode, &terminalDicNode);
+ DicNode terminalDicNode(*dicNode);
if (TRAVERSAL->needsToTraverseAllUserInput()
&& dicNode->getInputIndex(0) < traverseSession->getInputSize()) {
Weighting::addCostAndForwardInputIndex(WEIGHTING, CT_TERMINAL_INSERTION, traverseSession, 0,
&terminalDicNode, traverseSession->getMultiBigramMap());
}
- if (!dicNode->hasMatchedOrProximityCodePoints()) {
- return;
- }
Weighting::addCostAndForwardInputIndex(WEIGHTING, CT_TERMINAL, traverseSession, 0,
&terminalDicNode, traverseSession->getMultiBigramMap());
traverseSession->getDicTraverseCache()->copyPushTerminal(&terminalDicNode);
@@ -375,6 +374,7 @@ void Suggest::processDicNodeAsTransposition(DicTraverseSession *traverseSession,
DicNode *dicNode) const {
const int16_t pointIndex = dicNode->getInputIndex(0);
DicNodeVector childDicNodes1;
+ DicNodeVector childDicNodes2;
DicNodeUtils::getAllChildDicNodes(dicNode, traverseSession->getDictionaryStructurePolicy(),
&childDicNodes1);
const int childSize1 = childDicNodes1.getSizeAndLock();
@@ -386,7 +386,7 @@ void Suggest::processDicNodeAsTransposition(DicTraverseSession *traverseSession,
continue;
}
if (childDicNodes1[i]->hasChildren()) {
- DicNodeVector childDicNodes2;
+ childDicNodes2.clear();
DicNodeUtils::getAllChildDicNodes(childDicNodes1[i],
traverseSession->getDictionaryStructurePolicy(), &childDicNodes2);
const int childSize2 = childDicNodes2.getSizeAndLock();
diff --git a/native/jni/src/suggest/policyimpl/typing/typing_traversal.h b/native/jni/src/suggest/policyimpl/typing/typing_traversal.h
index 3db00ad3a..7c86b7dc9 100644
--- a/native/jni/src/suggest/policyimpl/typing/typing_traversal.h
+++ b/native/jni/src/suggest/policyimpl/typing/typing_traversal.h
@@ -162,9 +162,8 @@ class TypingTraversal : public Traversal {
if (probability < ScoringParams::THRESHOLD_NEXT_WORD_PROBABILITY) {
return false;
}
- const int c = dicNode->getOutputWordBuf()[0];
const bool shortCappedWord = dicNode->getNodeCodePointCount()
- < ScoringParams::THRESHOLD_SHORT_WORD_LENGTH && CharUtils::isAsciiUpper(c);
+ < ScoringParams::THRESHOLD_SHORT_WORD_LENGTH && dicNode->isFirstCharUppercase();
return !shortCappedWord
|| probability >= ScoringParams::THRESHOLD_NEXT_WORD_PROBABILITY_FOR_CAPPED;
}
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 d037044bd..e9bd9faf7 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
@@ -70,9 +70,8 @@
<string name="more_keys_for_s">&#x0161;,&#x00DF;,&#x015B;,&#x015F;</string>
<!-- U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
- U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE -->
- <string name="more_keys_for_n">&#x0146;,&#x00F1;,&#x0144;,&#x0144;</string>
+ <string name="more_keys_for_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-is/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-is/donottranslate-more-keys.xml
index 4b4d986b8..2886d015e 100644
--- a/tools/make-keyboard-text/res/values-is/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-is/donottranslate-more-keys.xml
@@ -64,12 +64,6 @@
<string name="more_keys_for_d">&#x00F0;</string>
<!-- U+00FE: "þ" LATIN SMALL LETTER THORN -->
<string name="more_keys_for_t">&#x00FE;</string>
- <!-- U+00F0: "ð" LATIN SMALL LETTER ETH -->
- <string name="keylabel_for_nordic_row1_11">&#x00F0;</string>
- <!-- U+00E6: "æ" LATIN SMALL LETTER AE -->
- <string name="keylabel_for_nordic_row2_10">&#x00E6;</string>
- <!-- U+00FE: "þ" LATIN SMALL LETTER THORN -->
- <string name="keylabel_for_nordic_row2_11">&#x00FE;</string>
<string name="single_quotes">!text/single_9qm_lqm</string>
<string name="double_quotes">!text/double_9qm_lqm</string>
</resources>
diff --git a/tools/make-keyboard-text/res/values-lt/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-lt/donottranslate-more-keys.xml
index 7e2b8a076..c1c596059 100644
--- a/tools/make-keyboard-text/res/values-lt/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-lt/donottranslate-more-keys.xml
@@ -71,9 +71,8 @@
<string name="more_keys_for_s">&#x0161;,&#x00DF;,&#x015B;,&#x015F;</string>
<!-- U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
- U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE -->
- <string name="more_keys_for_n">&#x0146;,&#x00F1;,&#x0144;,&#x0144;</string>
+ <string name="more_keys_for_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-lv/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-lv/donottranslate-more-keys.xml
index c64e37bc8..c27458b7c 100644
--- a/tools/make-keyboard-text/res/values-lv/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-lv/donottranslate-more-keys.xml
@@ -70,9 +70,8 @@
<string name="more_keys_for_s">&#x0161;,&#x00DF;,&#x015B;,&#x015F;</string>
<!-- U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
- U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE -->
- <string name="more_keys_for_n">&#x0146;,&#x00F1;,&#x0144;,&#x0144;</string>
+ <string name="more_keys_for_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-sk/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-sk/donottranslate-more-keys.xml
index 2ed538e5b..cf2238f67 100644
--- a/tools/make-keyboard-text/res/values-sk/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-sk/donottranslate-more-keys.xml
@@ -71,9 +71,8 @@
<!-- U+0148: "ň" LATIN SMALL LETTER N WITH CARON
U+0146: "ņ" LATIN SMALL LETTER N WITH CEDILLA
U+00F1: "ñ" LATIN SMALL LETTER N WITH TILDE
- U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE
U+0144: "ń" LATIN SMALL LETTER N WITH ACUTE -->
- <string name="more_keys_for_n">&#x0148;,&#x0146;,&#x00F1;,&#x0144;,&#x0144;</string>
+ <string name="more_keys_for_n">&#x0148;,&#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-sv/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-sv/donottranslate-more-keys.xml
index 2472364d0..0da027258 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
@@ -71,9 +71,8 @@
U+016B: "ū" LATIN SMALL LETTER U WITH MACRON -->
<string name="more_keys_for_u">&#x00FC;,&#x00FA;,&#x00F9;,&#x00FB;,&#x016B;</string>
<!-- U+00FD: "ý" LATIN SMALL LETTER Y WITH ACUTE
- U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS
- U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS -->
- <string name="more_keys_for_y">&#x00FD;,&#x00FF;,&#x00FC;</string>
+ U+00FF: "ÿ" LATIN SMALL LETTER Y WITH DIAERESIS -->
+ <string name="more_keys_for_y">&#x00FD;,&#x00FF;</string>
<!-- U+017A: "ź" LATIN SMALL LETTER Z WITH ACUTE
U+017E: "ž" LATIN SMALL LETTER Z WITH CARON
U+017C: "ż" LATIN SMALL LETTER Z WITH DOT ABOVE -->
diff --git a/tools/make-keyboard-text/res/values-zz/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-zz/donottranslate-more-keys.xml
index eb984a469..ad69019a3 100644
--- a/tools/make-keyboard-text/res/values-zz/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-zz/donottranslate-more-keys.xml
@@ -29,7 +29,7 @@
U+0103: "ă" LATIN SMALL LETTER A WITH BREVE
U+0105: "ą" LATIN SMALL LETTER A WITH OGONEK
U+00AA: "ª" FEMININE ORDINAL INDICATOR -->
- <string name="more_keys_for_a">&#x00E0;,&#x00E1;,&#x00E2;,&#x00E3;,&#x00E4;,&#x00E5;,&#x00E6;,&#x00E3;,&#x00E5;,&#x0101;,&#x0103;,&#x0105;,&#x00AA;</string>
+ <string name="more_keys_for_a">&#x00E0;,&#x00E1;,&#x00E2;,&#x00E3;,&#x00E4;,&#x00E5;,&#x00E6;,&#x0101;,&#x0103;,&#x0105;,&#x00AA;</string>
<!-- U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
U+00EA: "ê" LATIN SMALL LETTER E WITH CIRCUMFLEX