aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--java/res/xml-sw600dp/rows_nepali_romanized.xml5
-rw-r--r--java/res/xml-sw600dp/rows_nepali_traditional.xml6
-rw-r--r--java/res/xml/key_period.xml15
-rw-r--r--java/res/xml/rowkeys_nepali_romanized3.xml15
-rw-r--r--java/res/xml/rowkeys_nepali_traditional3.xml (renamed from java/res/xml/rowkeys_nepali_traditional3_right5.xml)67
-rw-r--r--java/res/xml/rowkeys_nepali_traditional3_left6.xml61
-rw-r--r--java/res/xml/rowkeys_nepali_traditional3_right3.xml52
-rw-r--r--java/res/xml/rows_nepali_romanized.xml8
-rw-r--r--java/res/xml/rows_nepali_traditional.xml3
-rw-r--r--java/src/com/android/inputmethod/keyboard/Keyboard.java7
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java5
-rw-r--r--java/src/com/android/inputmethod/keyboard/ProximityInfo.java28
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java200
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java28
-rw-r--r--java/src/com/android/inputmethod/latin/makedict/WordProperty.java31
-rw-r--r--native/jni/Android.mk2
-rw-r--r--native/jni/com_android_inputmethod_keyboard_ProximityInfo.cpp6
-rw-r--r--native/jni/src/suggest/core/layout/additional_proximity_chars.cpp2
-rw-r--r--native/jni/src/suggest/core/layout/additional_proximity_chars.h27
-rw-r--r--native/jni/src/suggest/core/layout/proximity_info.cpp21
-rw-r--r--native/jni/src/suggest/core/layout/proximity_info.h14
-rw-r--r--native/jni/src/suggest/core/layout/proximity_info_state.cpp4
-rw-r--r--native/jni/src/suggest/core/layout/proximity_info_state.h3
-rw-r--r--native/jni/src/suggest/core/layout/proximity_info_utils.h11
-rw-r--r--native/jni/src/suggest/core/session/dic_traverse_session.cpp8
-rw-r--r--tests/src/com/android/inputmethod/keyboard/layout/NepaliRomanized.java25
-rw-r--r--tests/src/com/android/inputmethod/keyboard/layout/NepaliTraditional.java94
-rw-r--r--tests/src/com/android/inputmethod/keyboard/layout/customizer/NepaliCustomizer.java22
-rw-r--r--tests/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderEncoderTests.java12
-rw-r--r--tools/make-keyboard-text/res/values-ne-rNP/donottranslate-more-keys.xml5
30 files changed, 339 insertions, 448 deletions
diff --git a/java/res/xml-sw600dp/rows_nepali_romanized.xml b/java/res/xml-sw600dp/rows_nepali_romanized.xml
index fe73fbd9e..41cd2f9b4 100644
--- a/java/res/xml-sw600dp/rows_nepali_romanized.xml
+++ b/java/res/xml-sw600dp/rows_nepali_romanized.xml
@@ -39,7 +39,7 @@
latin:keyWidth="fillRight" />
</Row>
<Row
- latin:keyWidth="8.182%p"
+ latin:keyWidth="8.0%p"
latin:keyLabelFlags="fontNormal"
>
<Key
@@ -47,6 +47,9 @@
latin:keyWidth="10.0%p" />
<include latin:keyboardLayout="@xml/rowkeys_nepali_romanized3" />
<include latin:keyboardLayout="@xml/keys_exclamation_question" />
+ <Key
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyWidth="fillRight" />
</Row>
<include latin:keyboardLayout="@xml/row_qwerty4" />
</merge>
diff --git a/java/res/xml-sw600dp/rows_nepali_traditional.xml b/java/res/xml-sw600dp/rows_nepali_traditional.xml
index e56271f21..d23ca24e4 100644
--- a/java/res/xml-sw600dp/rows_nepali_traditional.xml
+++ b/java/res/xml-sw600dp/rows_nepali_traditional.xml
@@ -45,8 +45,8 @@
<Key
latin:keyStyle="shiftKeyStyle"
latin:keyWidth="10.0%p" />
- <include latin:keyboardLayout="@xml/rowkeys_nepali_traditional3_left6" />
- <include latin:keyboardLayout="@xml/rowkeys_nepali_traditional3_right5" />
- </Row>
+ <include latin:keyboardLayout="@xml/rowkeys_nepali_traditional3" />
+ <include latin:keyboardLayout="@xml/keys_exclamation_question" />
+ </Row>
<include latin:keyboardLayout="@xml/row_qwerty4" />
</merge>
diff --git a/java/res/xml/key_period.xml b/java/res/xml/key_period.xml
index 10325ef1a..5b59cff19 100644
--- a/java/res/xml/key_period.xml
+++ b/java/res/xml/key_period.xml
@@ -23,21 +23,6 @@
>
<switch>
<case
- latin:languageCode="ne"
- latin:keyboardLayoutSet="nepali_traditional"
- >
- <!-- Because the font rendering system prior to API version 16 can't automatically
- render dotted circle for incomplete combining letter of some scripts, different
- set of Key definitions are needed based on the API version. -->
- <include
- latin:keyboardLayout="@xml/keystyle_devanagari_sign_virama" />
- <Key
- latin:keyStyle="baseKeyDevanagariSignVirama"
- latin:keyLabelFlags="hasPopupHint"
- latin:moreKeys="!text/morekeys_punctuation"
- latin:backgroundType="functional" />
- </case>
- <case
latin:keyboardLayoutSet="dvorak"
>
<Key
diff --git a/java/res/xml/rowkeys_nepali_romanized3.xml b/java/res/xml/rowkeys_nepali_romanized3.xml
index 24f590832..c6a1e283e 100644
--- a/java/res/xml/rowkeys_nepali_romanized3.xml
+++ b/java/res/xml/rowkeys_nepali_romanized3.xml
@@ -43,11 +43,6 @@
<Key latin:keyStyle="baseKeyDevanagariSignAnusvara" />
<!-- U+0919: "ङ" DEVANAGARI LETTER NGA -->
<Key latin:keySpec="&#x0919;" />
- <!-- Because the font rendering system prior to API version 16 can't automatically
- render dotted circle for incomplete combining letter of some scripts, different
- set of Key definitions are needed based on the API version. -->
- <include latin:keyboardLayout="@xml/keystyle_devanagari_sign_virama" />
- <Key latin:keyStyle="baseKeyDevanagariSignVirama" />
</case>
<default>
<!-- U+0937: "ष" DEVANAGARI LETTER SSA -->
@@ -64,16 +59,14 @@
<Key latin:keySpec="&#x0928;" />
<!-- U+092E: "म" DEVANAGARI LETTER MA -->
<Key latin:keySpec="&#x092E;" />
- <!-- U+0964: "।" DEVANAGARI DANDA
- U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA -->
- <Key
- latin:keySpec="&#x0964;"
- latin:moreKeys="&#x093D;" />
<!-- Because the font rendering system prior to API version 16 can't automatically
render dotted circle for incomplete combining letter of some scripts, different
set of Key definitions are needed based on the API version. -->
<include latin:keyboardLayout="@xml/keystyle_devanagari_sign_virama" />
- <Key latin:keyStyle="baseKeyDevanagariSignVirama" />
+ <!-- U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA -->
+ <Key
+ latin:keyStyle="baseKeyDevanagariSignVirama"
+ latin:moreKeys="&#x093D;" />
</default>
</switch>
</merge>
diff --git a/java/res/xml/rowkeys_nepali_traditional3_right5.xml b/java/res/xml/rowkeys_nepali_traditional3.xml
index c7c73a446..c43c59386 100644
--- a/java/res/xml/rowkeys_nepali_traditional3_right5.xml
+++ b/java/res/xml/rowkeys_nepali_traditional3.xml
@@ -21,6 +21,27 @@
<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
<switch>
<case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
+ <!-- U+0915/U+094D: "क्" DEVANAGARI LETTER KA/DEVANAGARI SIGN VIRAMA -->
+ <Key
+ latin:keySpec="&#x0915;&#x094D;"
+ latin:keyLabelFlags="followKeyLetterRatio" />
+ <!-- U+0939/U+094D/U+092E: "ह्म" DEVANAGARI LETTER HA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER MA -->
+ <Key
+ latin:keySpec="&#x0939;&#x094D;&#x092E;"
+ latin:keyLabelFlags="followKeyLetterRatio" />
+ <!-- U+090B: "ऋ" DEVANAGARI LETTER VOCALIC R -->
+ <Key latin:keySpec="&#x090B;" />
+ <!-- U+0950: "ॐ" DEVANAGARI OM -->
+ <Key latin:keySpec="&#x0950;" />
+ <!-- Because the font rendering system prior to API version 16 can't automatically
+ render dotted circle for incomplete combining letter of some scripts, different
+ set of Key definitions are needed based on the API version. -->
+ <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_au" />
+ <Key latin:keyStyle="baseKeyDevanagariVowelSignAu" />
+ <!-- U+0926/U+094D/U+092F: "द्य" DEVANAGARI LETTER DA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER YA -->
+ <Key
+ latin:keySpec="&#x0926;&#x094D;&#x092F;"
+ latin:keyLabelFlags="followKeyLetterRatio" />
<!-- Because the font rendering system prior to API version 16 can't automatically
render dotted circle for incomplete combining letter of some scripts, different
set of Key definitions are needed based on the API version. -->
@@ -33,44 +54,36 @@
set of Key definitions are needed based on the API version. -->
<include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_ai" />
<Key latin:keyStyle="baseKeyDevanagariVowelSignAi" />
- <!-- U+0930/U+0941: "रु" DEVANAGARI LETTER RA/DEVANAGARI VOWEL SIGN U -->
- <Key
- latin:keySpec="&#x0930;&#x0941;"
- latin:moreKeys="!"
- latin:keyLabelFlags="followKeyLetterRatio" />
- <Key
- latin:keySpec="\?"
- latin:keyLabelFlags="fontDefault" />
</case>
<default>
- <!-- Because the font rendering system prior to API version 16 can't automatically
- render dotted circle for incomplete combining letter of some scripts, different
- set of Key definitions are needed based on the API version. -->
- <include latin:keyboardLayout="@xml/keystyle_devanagari_sign_visarga" />
- <!-- U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA -->
- <Key
- latin:keyStyle="baseKeyDevanagariSignVisarga"
- latin:moreKeys="&#x093D;" />
+ <!-- U+0936: "श" DEVANAGARI LETTER SHA -->
+ <Key latin:keySpec="&#x0936;" />
+ <!-- U+0939: "ह" DEVANAGARI LETTER HA -->
+ <Key latin:keySpec="&#x0939;" />
+ <!-- U+0905: "अ" DEVANAGARI LETTER A -->
+ <Key latin:keySpec="&#x0905;" />
+ <!-- U+0916: "ख" DEVANAGARI LETTER KHA -->
+ <Key latin:keySpec="&#x0916;" />
+ <!-- U+0926: "द" DEVANAGARI LETTER DA -->
+ <Key latin:keySpec="&#x0926;" />
+ <!-- U+0932: "ल" DEVANAGARI LETTER LA -->
+ <Key latin:keySpec="&#x0932;" />
<!-- Because the font rendering system prior to API version 16 can't automatically
render dotted circle for incomplete combining letter of some scripts, different
set of Key definitions are needed based on the API version. -->
<include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_e" />
- <!-- Override more keys with empty definition -->
- <key-style latin:styleName="moreKeysDevanagariVowelSignE" />
<Key latin:keyStyle="baseKeyDevanagariVowelSignE" />
- <!-- U+0964: "।" DEVANAGARI DANDA -->
- <Key latin:keySpec="&#x0964;" />
- <!-- U+0930: "र" DEVANAGARI LETTER RA -->
- <Key
- latin:keySpec="&#x0930;"
- latin:moreKeys="!" />
<!-- Because the font rendering system prior to API version 16 can't automatically
render dotted circle for incomplete combining letter of some scripts, different
set of Key definitions are needed based on the API version. -->
- <include latin:keyboardLayout="@xml/keystyle_devanagari_sign_virama" />
+ <include
+ latin:keyboardLayout="@xml/keystyle_devanagari_sign_virama" />
+ <Key latin:keyStyle="baseKeyDevanagariSignVirama" />
+ <!-- U+0930: "र" DEVANAGARI LETTER RA
+ U+0930/U+0941: "रु" DEVANAGARI LETTER RA/DEVANAGARI VOWEL SIGN U -->
<Key
- latin:keyStyle="baseKeyDevanagariSignVirama"
- latin:moreKeys="\?" />
+ latin:keySpec="&#x0930;"
+ latin:moreKeys="&#x0930;&#x0941;" />
</default>
</switch>
</merge>
diff --git a/java/res/xml/rowkeys_nepali_traditional3_left6.xml b/java/res/xml/rowkeys_nepali_traditional3_left6.xml
deleted file mode 100644
index ade278710..000000000
--- a/java/res/xml/rowkeys_nepali_traditional3_left6.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, 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.
-*/
--->
-
-<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
- <switch>
- <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
- <!-- U+0915/U+094D: "क्" DEVANAGARI LETTER KA/DEVANAGARI SIGN VIRAMA -->
- <Key
- latin:keySpec="&#x0915;&#x094D;"
- latin:keyLabelFlags="followKeyLetterRatio" />
- <!-- U+0939/U+094D/U+092E: "ह्म" DEVANAGARI LETTER HA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER MA -->
- <Key
- latin:keySpec="&#x0939;&#x094D;&#x092E;"
- latin:keyLabelFlags="followKeyLetterRatio" />
- <!-- U+090B: "ऋ" DEVANAGARI LETTER VOCALIC R -->
- <Key latin:keySpec="&#x090B;" />
- <!-- U+0950: "ॐ" DEVANAGARI OM -->
- <Key latin:keySpec="&#x0950;" />
- <!-- Because the font rendering system prior to API version 16 can't automatically
- render dotted circle for incomplete combining letter of some scripts, different
- set of Key definitions are needed based on the API version. -->
- <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_au" />
- <Key latin:keyStyle="baseKeyDevanagariVowelSignAu" />
- <!-- U+0926/U+094D/U+092F: "द्य" DEVANAGARI LETTER DA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER YA -->
- <Key
- latin:keySpec="&#x0926;&#x094D;&#x092F;"
- latin:keyLabelFlags="followKeyLetterRatio" />
- </case>
- <default>
- <!-- U+0936: "श" DEVANAGARI LETTER SHA -->
- <Key latin:keySpec="&#x0936;" />
- <!-- U+0939: "ह" DEVANAGARI LETTER HA -->
- <Key latin:keySpec="&#x0939;" />
- <!-- U+0905: "अ" DEVANAGARI LETTER A -->
- <Key latin:keySpec="&#x0905;" />
- <!-- U+0916: "ख" DEVANAGARI LETTER KHA -->
- <Key latin:keySpec="&#x0916;" />
- <!-- U+0926: "द" DEVANAGARI LETTER DA -->
- <Key latin:keySpec="&#x0926;" />
- <!-- U+0932: "ल" DEVANAGARI LETTER LA -->
- <Key latin:keySpec="&#x0932;" />
- </default>
- </switch>
-</merge>
diff --git a/java/res/xml/rowkeys_nepali_traditional3_right3.xml b/java/res/xml/rowkeys_nepali_traditional3_right3.xml
deleted file mode 100644
index 4db438d81..000000000
--- a/java/res/xml/rowkeys_nepali_traditional3_right3.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-/*
-**
-** Copyright 2013, 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.
-*/
--->
-
-<merge xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin">
- <switch>
- <case latin:keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted">
- <!-- Because the font rendering system prior to API version 16 can't automatically
- render dotted circle for incomplete combining letter of some scripts, different
- set of Key definitions are needed based on the API version. -->
- <include latin:keyboardLayout="@xml/keystyle_devanagari_sign_anusvara" />
- <Key latin:keyStyle="baseKeyDevanagariSignAnusvara" />
- <!-- U+0919: "ङ" DEVANAGARI LETTER NGA -->
- <Key latin:keySpec="&#x0919;" />
- <!-- Because the font rendering system prior to API version 16 can't automatically
- render dotted circle for incomplete combining letter of some scripts, different
- set of Key definitions are needed based on the API version. -->
- <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_ai" />
- <Key latin:keyStyle="baseKeyDevanagariVowelSignAi" />
- </case>
- <default>
- <!-- Because the font rendering system prior to API version 16 can't automatically
- render dotted circle for incomplete combining letter of some scripts, different
- set of Key definitions are needed based on the API version. -->
- <include latin:keyboardLayout="@xml/keystyle_devanagari_vowel_sign_e" />
- <Key latin:keyStyle="baseKeyDevanagariVowelSignE" />
- <!-- U+0964: "।" DEVANAGARI DANDA -->
- <Key latin:keySpec="&#x0964;" />
- <!-- U+0930: "र" DEVANAGARI LETTER RA
- U+0930/U+0941: "रु" DEVANAGARI LETTER RA/DEVANAGARI VOWEL SIGN U -->
- <Key
- latin:keySpec="&#x0930;"
- latin:moreKeys="&#x0930;&#x0941;" />
- </default>
- </switch>
-</merge>
diff --git a/java/res/xml/rows_nepali_romanized.xml b/java/res/xml/rows_nepali_romanized.xml
index daca3ee86..26737ec8a 100644
--- a/java/res/xml/rows_nepali_romanized.xml
+++ b/java/res/xml/rows_nepali_romanized.xml
@@ -33,16 +33,18 @@
<include latin:keyboardLayout="@xml/rowkeys_nepali_romanized2" />
</Row>
<Row
- latin:keyWidth="8.711%p"
+ latin:keyWidth="8.75%p"
latin:keyLabelFlags="fontNormal"
>
<Key
latin:keyStyle="shiftKeyStyle"
- latin:keyWidth="10.8%p" />
+ latin:keyWidth="15%p"
+ latin:visualInsetsRight="1%p" />
<include latin:keyboardLayout="@xml/rowkeys_nepali_romanized3" />
<Key
latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="fillRight" />
+ latin:keyWidth="fillRight"
+ latin:visualInsetsLeft="1%p" />
</Row>
<include latin:keyboardLayout="@xml/row_qwerty4" />
</merge>
diff --git a/java/res/xml/rows_nepali_traditional.xml b/java/res/xml/rows_nepali_traditional.xml
index edcc73a20..e2e710ce8 100644
--- a/java/res/xml/rows_nepali_traditional.xml
+++ b/java/res/xml/rows_nepali_traditional.xml
@@ -40,8 +40,7 @@
<Key
latin:keyStyle="shiftKeyStyle"
latin:keyWidth="10.8%p" />
- <include latin:keyboardLayout="@xml/rowkeys_nepali_traditional3_left6" />
- <include latin:keyboardLayout="@xml/rowkeys_nepali_traditional3_right3" />
+ <include latin:keyboardLayout="@xml/rowkeys_nepali_traditional3" />
<Key
latin:keyStyle="deleteKeyStyle"
latin:keyWidth="fillRight" />
diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java
index 85dfea4e7..d35c8fae1 100644
--- a/java/src/com/android/inputmethod/keyboard/Keyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java
@@ -108,10 +108,9 @@ public class Keyboard {
mAltCodeKeysWhileTyping = Collections.unmodifiableList(params.mAltCodeKeysWhileTyping);
mIconsSet = params.mIconsSet;
- mProximityInfo = new ProximityInfo(params.mId.mLocale.toString(),
- params.GRID_WIDTH, params.GRID_HEIGHT, mOccupiedWidth, mOccupiedHeight,
- mMostCommonKeyWidth, mMostCommonKeyHeight, mSortedKeys,
- params.mTouchPositionCorrection);
+ mProximityInfo = new ProximityInfo(params.GRID_WIDTH, params.GRID_HEIGHT,
+ mOccupiedWidth, mOccupiedHeight, mMostCommonKeyWidth, mMostCommonKeyHeight,
+ mSortedKeys, params.mTouchPositionCorrection);
mProximityCharsCorrectionEnabled = params.mProximityCharsCorrectionEnabled;
}
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
index 246d11bac..7f2957fff 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
@@ -254,8 +254,9 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
}
public void onToggleEmojiKeyboard() {
- if (mKeyboardLayoutSet == null || !isShowingEmojiPalettes()) {
- mLatinIME.startShowingInputView();
+ final boolean needsToLoadKeyboard = (mKeyboardLayoutSet == null);
+ if (needsToLoadKeyboard || !isShowingEmojiPalettes()) {
+ mLatinIME.startShowingInputView(needsToLoadKeyboard);
setEmojiKeyboard();
} else {
mLatinIME.stopShowingInputView();
diff --git a/java/src/com/android/inputmethod/keyboard/ProximityInfo.java b/java/src/com/android/inputmethod/keyboard/ProximityInfo.java
index c19cd671a..9c5abcd71 100644
--- a/java/src/com/android/inputmethod/keyboard/ProximityInfo.java
+++ b/java/src/com/android/inputmethod/keyboard/ProximityInfo.java
@@ -52,18 +52,11 @@ public class ProximityInfo {
private final int mMostCommonKeyHeight;
private final List<Key> mSortedKeys;
private final List<Key>[] mGridNeighbors;
- private final String mLocaleStr;
@SuppressWarnings("unchecked")
- ProximityInfo(final String localeStr, final int gridWidth, final int gridHeight,
- final int minWidth, final int height, final int mostCommonKeyWidth,
- final int mostCommonKeyHeight, final List<Key> sortedKeys,
+ ProximityInfo(final int gridWidth, final int gridHeight, final int minWidth, final int height,
+ final int mostCommonKeyWidth, final int mostCommonKeyHeight, final List<Key> sortedKeys,
final TouchPositionCorrection touchPositionCorrection) {
- if (TextUtils.isEmpty(localeStr)) {
- mLocaleStr = "";
- } else {
- mLocaleStr = localeStr;
- }
mGridWidth = gridWidth;
mGridHeight = gridHeight;
mGridSize = mGridWidth * mGridHeight;
@@ -89,11 +82,10 @@ public class ProximityInfo {
}
// TODO: Stop passing proximityCharsArray
- private static native long setProximityInfoNative(String locale,
- int displayWidth, int displayHeight, int gridWidth, int gridHeight,
- int mostCommonKeyWidth, int mostCommonKeyHeight, int[] proximityCharsArray,
- int keyCount, int[] keyXCoordinates, int[] keyYCoordinates, int[] keyWidths,
- int[] keyHeights, int[] keyCharCodes, float[] sweetSpotCenterXs,
+ private static native long setProximityInfoNative(int displayWidth, int displayHeight,
+ int gridWidth, int gridHeight, int mostCommonKeyWidth, int mostCommonKeyHeight,
+ int[] proximityCharsArray, int keyCount, int[] keyXCoordinates, int[] keyYCoordinates,
+ int[] keyWidths, int[] keyHeights, int[] keyCharCodes, float[] sweetSpotCenterXs,
float[] sweetSpotCenterYs, float[] sweetSpotRadii);
private static native void releaseProximityInfoNative(long nativeProximityInfo);
@@ -221,10 +213,10 @@ public class ProximityInfo {
}
// TODO: Stop passing proximityCharsArray
- return setProximityInfoNative(mLocaleStr, mKeyboardMinWidth, mKeyboardHeight,
- mGridWidth, mGridHeight, mMostCommonKeyWidth, mMostCommonKeyHeight,
- proximityCharsArray, keyCount, keyXCoordinates, keyYCoordinates, keyWidths,
- keyHeights, keyCharCodes, sweetSpotCenterXs, sweetSpotCenterYs, sweetSpotRadii);
+ return setProximityInfoNative(mKeyboardMinWidth, mKeyboardHeight, mGridWidth, mGridHeight,
+ mMostCommonKeyWidth, mMostCommonKeyHeight, proximityCharsArray, keyCount,
+ keyXCoordinates, keyYCoordinates, keyWidths, keyHeights, keyCharCodes,
+ sweetSpotCenterXs, sweetSpotCenterYs, sweetSpotRadii);
}
public long getNativeProximityInfo() {
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
index 978194a3b..a81d7ea2a 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsTable.java
@@ -136,37 +136,37 @@ public final class KeyboardTextsTable {
/* 50: 5 */ "additional_morekeys_symbols_8",
/* 51: 5 */ "additional_morekeys_symbols_9",
/* 52: 5 */ "additional_morekeys_symbols_0",
- /* 53: 4 */ "morekeys_nordic_row2_11",
- /* 54: 4 */ "morekeys_punctuation",
- /* 55: 4 */ "keyspec_tablet_comma",
- /* 56: 4 */ "morekeys_tablet_period",
- /* 57: 3 */ "keyspec_swiss_row1_11",
- /* 58: 3 */ "keyspec_swiss_row2_10",
- /* 59: 3 */ "keyspec_swiss_row2_11",
- /* 60: 3 */ "morekeys_swiss_row1_11",
- /* 61: 3 */ "morekeys_swiss_row2_10",
- /* 62: 3 */ "morekeys_swiss_row2_11",
- /* 63: 3 */ "morekeys_star",
- /* 64: 3 */ "keyspec_left_parenthesis",
- /* 65: 3 */ "keyspec_right_parenthesis",
- /* 66: 3 */ "keyspec_left_square_bracket",
- /* 67: 3 */ "keyspec_right_square_bracket",
- /* 68: 3 */ "keyspec_left_curly_bracket",
- /* 69: 3 */ "keyspec_right_curly_bracket",
- /* 70: 3 */ "keyspec_less_than",
- /* 71: 3 */ "keyspec_greater_than",
- /* 72: 3 */ "keyspec_less_than_equal",
- /* 73: 3 */ "keyspec_greater_than_equal",
- /* 74: 3 */ "keyspec_left_double_angle_quote",
- /* 75: 3 */ "keyspec_right_double_angle_quote",
- /* 76: 3 */ "keyspec_left_single_angle_quote",
- /* 77: 3 */ "keyspec_right_single_angle_quote",
- /* 78: 3 */ "keyspec_comma",
- /* 79: 3 */ "morekeys_tablet_comma",
- /* 80: 3 */ "keyspec_period",
- /* 81: 3 */ "keyhintlabel_period",
- /* 82: 3 */ "morekeys_period",
- /* 83: 3 */ "keyspec_tablet_period",
+ /* 53: 5 */ "morekeys_tablet_period",
+ /* 54: 4 */ "morekeys_nordic_row2_11",
+ /* 55: 4 */ "morekeys_punctuation",
+ /* 56: 4 */ "keyspec_tablet_comma",
+ /* 57: 4 */ "keyspec_period",
+ /* 58: 4 */ "morekeys_period",
+ /* 59: 4 */ "keyspec_tablet_period",
+ /* 60: 3 */ "keyspec_swiss_row1_11",
+ /* 61: 3 */ "keyspec_swiss_row2_10",
+ /* 62: 3 */ "keyspec_swiss_row2_11",
+ /* 63: 3 */ "morekeys_swiss_row1_11",
+ /* 64: 3 */ "morekeys_swiss_row2_10",
+ /* 65: 3 */ "morekeys_swiss_row2_11",
+ /* 66: 3 */ "morekeys_star",
+ /* 67: 3 */ "keyspec_left_parenthesis",
+ /* 68: 3 */ "keyspec_right_parenthesis",
+ /* 69: 3 */ "keyspec_left_square_bracket",
+ /* 70: 3 */ "keyspec_right_square_bracket",
+ /* 71: 3 */ "keyspec_left_curly_bracket",
+ /* 72: 3 */ "keyspec_right_curly_bracket",
+ /* 73: 3 */ "keyspec_less_than",
+ /* 74: 3 */ "keyspec_greater_than",
+ /* 75: 3 */ "keyspec_less_than_equal",
+ /* 76: 3 */ "keyspec_greater_than_equal",
+ /* 77: 3 */ "keyspec_left_double_angle_quote",
+ /* 78: 3 */ "keyspec_right_double_angle_quote",
+ /* 79: 3 */ "keyspec_left_single_angle_quote",
+ /* 80: 3 */ "keyspec_right_single_angle_quote",
+ /* 81: 3 */ "keyspec_comma",
+ /* 82: 3 */ "morekeys_tablet_comma",
+ /* 83: 3 */ "keyhintlabel_period",
/* 84: 3 */ "morekeys_question",
/* 85: 2 */ "morekeys_h",
/* 86: 2 */ "morekeys_w",
@@ -298,11 +298,16 @@ public final class KeyboardTextsTable {
// Label for "switch to symbols" key.
/* keylabel_to_symbol */ "?123",
/* additional_morekeys_symbols_1 ~ */
- EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
- /* ~ morekeys_nordic_row2_11 */
+ EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
+ /* ~ additional_morekeys_symbols_0 */
+ /* morekeys_tablet_period */ "!text/morekeys_tablet_punctuation",
+ /* morekeys_nordic_row2_11 */ EMPTY,
/* morekeys_punctuation */ "!autoColumnOrder!8,\\,,?,!,#,!text/keyspec_right_parenthesis,!text/keyspec_left_parenthesis,/,;,',@,:,-,\",+,\\%,&",
/* keyspec_tablet_comma */ ",",
- /* morekeys_tablet_period */ "!text/morekeys_tablet_punctuation",
+ // Period key
+ /* keyspec_period */ ".",
+ /* morekeys_period */ "!text/morekeys_punctuation",
+ /* keyspec_tablet_period */ ".",
/* keyspec_swiss_row1_11 ~ */
EMPTY, EMPTY, EMPTY, EMPTY, EMPTY, EMPTY,
/* ~ morekeys_swiss_row2_11 */
@@ -335,11 +340,7 @@ public final class KeyboardTextsTable {
// Comma key
/* keyspec_comma */ ",",
/* morekeys_tablet_comma */ EMPTY,
- // Period key
- /* keyspec_period */ ".",
/* keyhintlabel_period */ EMPTY,
- /* morekeys_period */ "!text/morekeys_punctuation",
- /* keyspec_tablet_period */ ".",
// U+00BF: "¿" INVERTED QUESTION MARK
/* morekeys_question */ "\u00BF",
/* morekeys_h ~ */
@@ -587,15 +588,17 @@ public final class KeyboardTextsTable {
// U+066B: "٫" ARABIC DECIMAL SEPARATOR
// U+066C: "٬" ARABIC THOUSANDS SEPARATOR
/* additional_morekeys_symbols_0 */ "0,\u066B,\u066C",
+ /* morekeys_tablet_period */ "!text/morekeys_arabic_diacritics",
/* morekeys_nordic_row2_11 */ null,
/* morekeys_punctuation */ null,
// U+061F: "؟" ARABIC QUESTION MARK
// U+060C: "،" ARABIC COMMA
// U+061B: "؛" ARABIC SEMICOLON
/* keyspec_tablet_comma */ "\u060C",
- /* morekeys_tablet_period */ "!text/morekeys_arabic_diacritics",
- /* keyspec_swiss_row1_11 ~ */
- null, null, null, null, null, null,
+ /* keyspec_period */ null,
+ /* morekeys_period */ "!text/morekeys_arabic_diacritics",
+ /* keyspec_tablet_period ~ */
+ null, null, null, null, null, null, null,
/* ~ morekeys_swiss_row2_11 */
// U+2605: "★" BLACK STAR
// U+066D: "٭" ARABIC FIVE POINTED STAR
@@ -623,11 +626,8 @@ public final class KeyboardTextsTable {
// U+060C: "،" ARABIC COMMA
/* keyspec_comma */ "\u060C",
/* morekeys_tablet_comma */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,\",\'",
- /* keyspec_period */ null,
// U+0651: "ّ" ARABIC SHADDA
/* keyhintlabel_period */ "\u0651",
- /* morekeys_period */ "!text/morekeys_arabic_diacritics",
- /* keyspec_tablet_period */ null,
// U+00BF: "¿" INVERTED QUESTION MARK
/* morekeys_question */ "?,\u00BF",
/* morekeys_h ~ */
@@ -877,14 +877,14 @@ public final class KeyboardTextsTable {
/* morekeys_g ~ */
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,
/* ~ morekeys_nordic_row2_11 */
// U+00B7: "·" MIDDLE DOT
/* morekeys_punctuation */ "!autoColumnOrder!9,\\,,?,!,\u00B7,#,),(,/,;,',@,:,-,\",+,\\%,&",
/* keyspec_tablet_comma ~ */
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,
/* ~ keyspec_south_slavic_row3_8 */
/* morekeys_tablet_punctuation */ "!autoColumnOrder!8,\\,,',\u00B7,#,),(,/,;,@,:,-,\",+,\\%,&",
// U+00E7: "ç" LATIN SMALL LETTER C WITH CEDILLA
@@ -1038,8 +1038,8 @@ public final class KeyboardTextsTable {
/* morekeys_nordic_row2_10 */ "\u00E4",
/* keyspec_east_slavic_row1_9 ~ */
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,
- /* ~ additional_morekeys_symbols_0 */
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ /* ~ morekeys_tablet_period */
// U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
/* morekeys_nordic_row2_11 */ "\u00F6",
};
@@ -1096,8 +1096,8 @@ public final class KeyboardTextsTable {
/* morekeys_r ~ */
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,
- /* ~ morekeys_tablet_period */
+ null, null, null, null, null, null, null, null, null, null,
+ /* ~ keyspec_tablet_period */
// U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
/* keyspec_swiss_row1_11 */ "\u00FC",
// U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
@@ -1378,7 +1378,7 @@ public final class KeyboardTextsTable {
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,
/* ~ morekeys_nordic_row2_11 */
// U+00A1: "¡" INVERTED EXCLAMATION MARK
// U+00BF: "¿" INVERTED QUESTION MARK
@@ -1597,6 +1597,7 @@ public final class KeyboardTextsTable {
// U+066B: "٫" ARABIC DECIMAL SEPARATOR
// U+066C: "٬" ARABIC THOUSANDS SEPARATOR
/* additional_morekeys_symbols_0 */ "0,\u066B,\u066C",
+ /* morekeys_tablet_period */ "!text/morekeys_arabic_diacritics",
/* morekeys_nordic_row2_11 */ null,
/* morekeys_punctuation */ null,
// U+060C: "،" ARABIC COMMA
@@ -1605,9 +1606,10 @@ public final class KeyboardTextsTable {
// U+00AB: "«" LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
// U+00BB: "»" RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
/* keyspec_tablet_comma */ "\u060C",
- /* morekeys_tablet_period */ "!text/morekeys_arabic_diacritics",
- /* keyspec_swiss_row1_11 ~ */
- null, null, null, null, null, null,
+ /* keyspec_period */ null,
+ /* morekeys_period */ "!text/morekeys_arabic_diacritics",
+ /* keyspec_tablet_period ~ */
+ null, null, null, null, null, null, null,
/* ~ morekeys_swiss_row2_11 */
// U+2605: "★" BLACK STAR
// U+066D: "٭" ARABIC FIVE POINTED STAR
@@ -1629,11 +1631,8 @@ public final class KeyboardTextsTable {
// U+060C: "،" ARABIC COMMA
/* keyspec_comma */ "\u060C",
/* morekeys_tablet_comma */ "!fixedColumnOrder!4,:,!,\u061F,\u061B,-,!text/keyspec_left_double_angle_quote,!text/keyspec_right_double_angle_quote",
- /* keyspec_period */ null,
// U+064B: "ً" ARABIC FATHATAN
/* keyhintlabel_period */ "\u064B",
- /* morekeys_period */ "!text/morekeys_arabic_diacritics",
- /* keyspec_tablet_period */ null,
// U+00BF: "¿" INVERTED QUESTION MARK
/* morekeys_question */ "?,\u00BF",
/* morekeys_h ~ */
@@ -1737,8 +1736,8 @@ public final class KeyboardTextsTable {
/* morekeys_nordic_row2_10 */ "\u00F8",
/* keyspec_east_slavic_row1_9 ~ */
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,
- /* ~ additional_morekeys_symbols_0 */
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ /* ~ morekeys_tablet_period */
// U+00E6: "æ" LATIN SMALL LETTER AE
/* morekeys_nordic_row2_11 */ "\u00E6",
};
@@ -1800,8 +1799,9 @@ public final class KeyboardTextsTable {
/* morekeys_z ~ */
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,
- /* ~ morekeys_tablet_period */
+ null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null, null,
+ /* ~ keyspec_tablet_period */
// U+00E8: "è" LATIN SMALL LETTER E WITH GRAVE
/* keyspec_swiss_row1_11 */ "\u00E8",
// U+00E9: "é" LATIN SMALL LETTER E WITH ACUTE
@@ -1921,17 +1921,12 @@ public final class KeyboardTextsTable {
/* additional_morekeys_symbols_8 */ "8",
/* additional_morekeys_symbols_9 */ "9",
/* additional_morekeys_symbols_0 */ "0",
+ /* morekeys_tablet_period */ "!autoColumnOrder!8,\\,,.,',#,),(,/,;,@,:,-,\",+,\\%,&",
/* morekeys_nordic_row2_11 ~ */
null, null, null,
/* ~ keyspec_tablet_comma */
- /* morekeys_tablet_period */ "!autoColumnOrder!8,\\,,.,',#,),(,/,;,@,:,-,\",+,\\%,&",
- /* keyspec_swiss_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,
- /* ~ morekeys_tablet_comma */
// U+0964: "।" DEVANAGARI DANDA
/* keyspec_period */ "\u0964",
- /* keyhintlabel_period */ null,
/* morekeys_period */ "!autoColumnOrder!9,\\,,.,?,!,#,),(,/,;,',@,:,-,\",+,\\%,&",
/* keyspec_tablet_period */ "\u0964",
};
@@ -2065,8 +2060,10 @@ public final class KeyboardTextsTable {
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,
- /* ~ morekeys_nordic_row2_11 */
+ null, null, null,
+ /* ~ additional_morekeys_symbols_0 */
+ /* morekeys_tablet_period */ "!text/morekeys_punctuation",
+ /* morekeys_nordic_row2_11 */ null,
// U+055E: "՞" ARMENIAN QUESTION MARK
// U+055C: "՜" ARMENIAN EXCLAMATION MARK
// U+055A: "՚" ARMENIAN APOSTROPHE
@@ -2079,7 +2076,10 @@ public final class KeyboardTextsTable {
// U+055F: "՟" ARMENIAN ABBREVIATION MARK
/* morekeys_punctuation */ "!autoColumnOrder!8,\\,,\u055E,\u055C,.,\u055A,\u0559,?,!,\u055D,\u055B,\u058A,\u00BB,\u00AB,\u055F,;,:",
/* keyspec_tablet_comma */ "\u055D",
- /* morekeys_tablet_period */ "!text/morekeys_punctuation",
+ // U+0589: "։" ARMENIAN FULL STOP
+ /* keyspec_period */ "\u0589",
+ /* morekeys_period */ null,
+ /* keyspec_tablet_period */ "\u0589",
/* keyspec_swiss_row1_11 ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null,
@@ -2091,11 +2091,7 @@ public final class KeyboardTextsTable {
// U+055D: "՝" ARMENIAN COMMA
/* keyspec_comma */ "\u055D",
/* morekeys_tablet_comma */ null,
- // U+0589: "։" ARMENIAN FULL STOP
- /* keyspec_period */ "\u0589",
/* keyhintlabel_period */ null,
- /* morekeys_period */ null,
- /* keyspec_tablet_period */ "\u0589",
// U+055E: "՞" ARMENIAN QUESTION MARK
// U+00BF: "¿" INVERTED QUESTION MARK
/* morekeys_question */ "\u055E,\u00BF",
@@ -2216,8 +2212,8 @@ public final class KeyboardTextsTable {
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,
- /* ~ morekeys_tablet_period */
+ null, null, null, null, null, null, null, null, null,
+ /* ~ keyspec_tablet_period */
// U+00FC: "ü" LATIN SMALL LETTER U WITH DIAERESIS
/* keyspec_swiss_row1_11 */ "\u00FC",
// U+00F6: "ö" LATIN SMALL LETTER O WITH DIAERESIS
@@ -2254,7 +2250,7 @@ public final class KeyboardTextsTable {
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,
/* ~ morekeys_swiss_row2_11 */
// U+2605: "★" BLACK STAR
/* morekeys_star */ "\u2605",
@@ -2284,7 +2280,7 @@ public final class KeyboardTextsTable {
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,
/* ~ morekeys_currency_dollar */
// U+00B1: "±" PLUS-MINUS SIGN
// U+FB29: "﬩" HEBREW LETTER ALTERNATIVE PLUS SIGN
@@ -2799,21 +2795,21 @@ public final class KeyboardTextsTable {
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,
/* ~ morekeys_nordic_row2_11 */
/* morekeys_punctuation */ "!autoColumnOrder!9,\u104A,.,?,!,#,),(,/,;,...,',@,:,-,\",+,\\%,&",
// U+104A: "၊" MYANMAR SIGN LITTLE SECTION
// U+104B: "။" MYANMAR SIGN SECTION
/* keyspec_tablet_comma */ "\u104A",
- /* morekeys_tablet_period ~ */
+ /* keyspec_period */ "\u104B",
+ /* morekeys_period */ null,
+ /* keyspec_tablet_period */ "\u104B",
+ /* keyspec_swiss_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,
/* ~ keyspec_comma */
/* morekeys_tablet_comma */ "\\,",
- /* keyspec_period */ "\u104B",
/* keyhintlabel_period */ "\u104A",
- /* morekeys_period */ null,
- /* keyspec_tablet_period */ "\u104B",
/* morekeys_question ~ */
null, null, null, null, null, null, null, null, null, null, null, null, null,
/* ~ keyspec_south_slavic_row3_8 */
@@ -2873,8 +2869,8 @@ public final class KeyboardTextsTable {
/* morekeys_nordic_row2_10 */ "\u00F6",
/* keyspec_east_slavic_row1_9 ~ */
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,
- /* ~ additional_morekeys_symbols_0 */
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ /* ~ morekeys_tablet_period */
// U+00E4: "ä" LATIN SMALL LETTER A WITH DIAERESIS
/* morekeys_nordic_row2_11 */ "\u00E4",
};
@@ -2930,6 +2926,14 @@ public final class KeyboardTextsTable {
/* additional_morekeys_symbols_8 */ "8",
/* additional_morekeys_symbols_9 */ "9",
/* additional_morekeys_symbols_0 */ "0",
+ /* morekeys_tablet_period */ "!autoColumnOrder!8,.,\\,,',#,),(,/,;,@,:,-,\",+,\\%,&",
+ /* morekeys_nordic_row2_11 ~ */
+ null, null, null,
+ /* ~ keyspec_tablet_comma */
+ // U+0964: "।" DEVANAGARI DANDA
+ /* keyspec_period */ "\u0964",
+ /* morekeys_period */ "!autoColumnOrder!9,.,\\,,?,!,#,),(,/,;,',@,:,-,\",+,\\%,&",
+ /* keyspec_tablet_period */ "\u0964",
};
/* Locale nl: Dutch */
@@ -3510,8 +3514,8 @@ public final class KeyboardTextsTable {
/* morekeys_nordic_row2_10 */ "\u00F8,\u0153",
/* keyspec_east_slavic_row1_9 ~ */
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,
- /* ~ additional_morekeys_symbols_0 */
+ null, null, null, null, null, null, null, null, null, null, null, null,
+ /* ~ morekeys_tablet_period */
// U+00E6: "æ" LATIN SMALL LETTER AE
/* morekeys_nordic_row2_11 */ "\u00E6",
};
@@ -4153,25 +4157,25 @@ public final class KeyboardTextsTable {
"bn_IN" , TEXTS_bn_IN, /* 2/ 12 Bengali (India) */
"ca" , TEXTS_ca, /* 11/ 99 Catalan */
"cs" , TEXTS_cs, /* 17/ 21 Czech */
- "da" , TEXTS_da, /* 19/ 54 Danish */
- "de" , TEXTS_de, /* 16/ 63 German */
+ "da" , TEXTS_da, /* 19/ 55 Danish */
+ "de" , TEXTS_de, /* 16/ 66 German */
"el" , TEXTS_el, /* 1/ 5 Greek */
"en" , TEXTS_en, /* 8/ 10 English */
"eo" , TEXTS_eo, /* 26/126 Esperanto */
- "es" , TEXTS_es, /* 8/ 55 Spanish */
+ "es" , TEXTS_es, /* 8/ 56 Spanish */
"et_EE" , TEXTS_et_EE, /* 22/ 27 Estonian (Estonia) */
"eu_ES" , TEXTS_eu_ES, /* 7/ 8 Basque (Spain) */
"fa" , TEXTS_fa, /* 58/133 Persian */
- "fi" , TEXTS_fi, /* 10/ 54 Finnish */
- "fr" , TEXTS_fr, /* 13/ 63 French */
+ "fi" , TEXTS_fi, /* 10/ 55 Finnish */
+ "fr" , TEXTS_fr, /* 13/ 66 French */
"gl_ES" , TEXTS_gl_ES, /* 7/ 8 Gallegan (Spain) */
- "hi" , TEXTS_hi, /* 27/ 84 Hindi */
+ "hi" , TEXTS_hi, /* 27/ 60 Hindi */
"hi_ZZ" , TEXTS_hi_ZZ, /* 9/118 Hindi (ZZ) */
"hr" , TEXTS_hr, /* 9/ 20 Croatian */
"hu" , TEXTS_hu, /* 9/ 20 Hungarian */
"hy_AM" , TEXTS_hy_AM, /* 9/134 Armenian (Armenia) */
"is" , TEXTS_is, /* 10/ 16 Icelandic */
- "it" , TEXTS_it, /* 11/ 63 Italian */
+ "it" , TEXTS_it, /* 11/ 66 Italian */
"iw" , TEXTS_iw, /* 20/131 Hebrew */
"ka_GE" , TEXTS_ka_GE, /* 3/ 11 Georgian (Georgia) */
"kk" , TEXTS_kk, /* 15/129 Kazakh */
@@ -4186,8 +4190,8 @@ public final class KeyboardTextsTable {
"mn_MN" , TEXTS_mn_MN, /* 2/ 12 Mongolian (Mongolia) */
"mr_IN" , TEXTS_mr_IN, /* 23/ 53 Marathi (India) */
"my_MM" , TEXTS_my_MM, /* 8/ 98 Burmese (Myanmar) */
- "nb" , TEXTS_nb, /* 11/ 54 Norwegian Bokmål */
- "ne_NP" , TEXTS_ne_NP, /* 23/ 53 Nepali (Nepal) */
+ "nb" , TEXTS_nb, /* 11/ 55 Norwegian Bokmål */
+ "ne_NP" , TEXTS_ne_NP, /* 27/ 60 Nepali (Nepal) */
"nl" , TEXTS_nl, /* 9/ 13 Dutch */
"pl" , TEXTS_pl, /* 10/ 17 Polish */
"pt" , TEXTS_pt, /* 6/ 8 Portuguese */
@@ -4199,7 +4203,7 @@ public final class KeyboardTextsTable {
"sl" , TEXTS_sl, /* 8/ 20 Slovenian */
"sr" , TEXTS_sr, /* 11/ 97 Serbian */
"sr_ZZ" , TEXTS_sr_ZZ, /* 14/118 Serbian (ZZ) */
- "sv" , TEXTS_sv, /* 21/ 54 Swedish */
+ "sv" , TEXTS_sv, /* 21/ 55 Swedish */
"sw" , TEXTS_sw, /* 9/ 18 Swahili */
"ta_IN" , TEXTS_ta_IN, /* 2/ 12 Tamil (India) */
"ta_LK" , TEXTS_ta_LK, /* 2/ 12 Tamil (Sri Lanka) */
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 861a8903e..be2efb2dc 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -733,6 +733,7 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
public void setInputView(final View view) {
super.setInputView(view);
mInputView = view;
+ updateSoftInputWindowLayoutParameters();
mSuggestionStripView = (SuggestionStripView)view.findViewById(R.id.suggestion_strip_view);
if (hasSuggestionStripView()) {
mSuggestionStripView.setListener(this, view);
@@ -1147,6 +1148,10 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
@Override
public void onComputeInsets(final InputMethodService.Insets outInsets) {
super.onComputeInsets(outInsets);
+ // This method may be called before {@link #setInputView(View)}.
+ if (mInputView == null) {
+ return;
+ }
final SettingsValues settingsValues = mSettings.getCurrent();
final View visibleKeyboardView = mKeyboardSwitcher.getVisibleKeyboardView();
if (visibleKeyboardView == null || !hasSuggestionStripView()) {
@@ -1181,12 +1186,15 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
outInsets.visibleTopInsets = visibleTopY;
}
- public void startShowingInputView() {
+ public void startShowingInputView(final boolean needsToLoadKeyboard) {
mIsExecutingStartShowingInputView = true;
// This {@link #showWindow(boolean)} will eventually call back
// {@link #onEvaluateInputViewShown()}.
showWindow(true /* showInput */);
mIsExecutingStartShowingInputView = false;
+ if (needsToLoadKeyboard) {
+ loadKeyboard();
+ }
}
public void stopShowingInputView() {
@@ -1194,6 +1202,14 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
}
@Override
+ public boolean onShowInputRequested(final int flags, final boolean configChange) {
+ if (Settings.getInstance().getCurrent().mHasHardwareKeyboard) {
+ return true;
+ }
+ return super.onShowInputRequested(flags, configChange);
+ }
+
+ @Override
public boolean onEvaluateInputViewShown() {
if (mIsExecutingStartShowingInputView) {
return true;
@@ -1223,8 +1239,14 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
@Override
public void updateFullscreenMode() {
+ super.updateFullscreenMode();
+ mInputLogic.onUpdateFullscreenMode(isFullscreenMode());
+ updateSoftInputWindowLayoutParameters();
+ }
+
+ private void updateSoftInputWindowLayoutParameters() {
// Override layout parameters to expand {@link SoftInputWindow} to the entire screen.
- // See {@link InputMethodService#setinputView(View) and
+ // See {@link InputMethodService#setinputView(View)} and
// {@link SoftInputWindow#updateWidthHeight(WindowManager.LayoutParams)}.
final Window window = getWindow().getWindow();
ViewLayoutUtils.updateLayoutHeightOf(window, LayoutParams.MATCH_PARENT);
@@ -1243,8 +1265,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
ViewLayoutUtils.updateLayoutGravityOf(inputArea, Gravity.BOTTOM);
ViewLayoutUtils.updateLayoutHeightOf(mInputView, layoutHeight);
}
- super.updateFullscreenMode();
- mInputLogic.onUpdateFullscreenMode(isFullscreenMode());
}
private int getCurrentAutoCapsState() {
diff --git a/java/src/com/android/inputmethod/latin/makedict/WordProperty.java b/java/src/com/android/inputmethod/latin/makedict/WordProperty.java
index 46705f9db..a180d060e 100644
--- a/java/src/com/android/inputmethod/latin/makedict/WordProperty.java
+++ b/java/src/com/android/inputmethod/latin/makedict/WordProperty.java
@@ -54,11 +54,15 @@ public final class WordProperty implements Comparable<WordProperty> {
mWord = word;
mProbabilityInfo = probabilityInfo;
mShortcutTargets = shortcutTargets;
- mNgrams = new ArrayList<>();
- final NgramContext ngramContext = new NgramContext(new WordInfo(mWord));
- if (bigrams != null) {
- for (final WeightedString bigramTarget : bigrams) {
- mNgrams.add(new NgramProperty(bigramTarget, ngramContext));
+ if (null == bigrams) {
+ mNgrams = null;
+ } else {
+ mNgrams = new ArrayList<>();
+ final NgramContext ngramContext = new NgramContext(new WordInfo(mWord));
+ if (bigrams != null) {
+ for (final WeightedString bigramTarget : bigrams) {
+ mNgrams.add(new NgramProperty(bigramTarget, ngramContext));
+ }
}
}
mIsBeginningOfSentence = false;
@@ -87,7 +91,7 @@ public final class WordProperty implements Comparable<WordProperty> {
mWord = StringUtils.getStringFromNullTerminatedCodePointArray(codePoints);
mProbabilityInfo = createProbabilityInfoFromArray(probabilityInfo);
mShortcutTargets = new ArrayList<>();
- mNgrams = new ArrayList<>();
+ final ArrayList<NgramProperty> ngrams = new ArrayList<>();
mIsBeginningOfSentence = isBeginningOfSentence;
mIsNotAWord = isNotAWord;
mIsBlacklistEntry = isBlacklisted;
@@ -104,8 +108,9 @@ public final class WordProperty implements Comparable<WordProperty> {
final WeightedString ngramTarget = new WeightedString(ngramTargetString,
createProbabilityInfoFromArray(bigramProbabilityInfo.get(i)));
// TODO: Support n-gram.
- mNgrams.add(new NgramProperty(ngramTarget, ngramContext));
+ ngrams.add(new NgramProperty(ngramTarget, ngramContext));
}
+ mNgrams = ngrams.isEmpty() ? null : ngrams;
final int shortcutTargetCount = shortcutTargets.size();
for (int i = 0; i < shortcutTargetCount; i++) {
@@ -118,6 +123,9 @@ public final class WordProperty implements Comparable<WordProperty> {
// TODO: Remove
public ArrayList<WeightedString> getBigrams() {
+ if (null == mNgrams) {
+ return null;
+ }
final ArrayList<WeightedString> bigrams = new ArrayList<>();
for (final NgramProperty ngram : mNgrams) {
if (ngram.mNgramContext.getPrevWordCount() == 1) {
@@ -167,11 +175,18 @@ public final class WordProperty implements Comparable<WordProperty> {
if (!(o instanceof WordProperty)) return false;
WordProperty w = (WordProperty)o;
return mProbabilityInfo.equals(w.mProbabilityInfo) && mWord.equals(w.mWord)
- && mShortcutTargets.equals(w.mShortcutTargets) && mNgrams.equals(w.mNgrams)
+ && mShortcutTargets.equals(w.mShortcutTargets) && equals(mNgrams, w.mNgrams)
&& mIsNotAWord == w.mIsNotAWord && mIsBlacklistEntry == w.mIsBlacklistEntry
&& mHasNgrams == w.mHasNgrams && mHasShortcuts && w.mHasNgrams;
}
+ private <T> boolean equals(final ArrayList<T> a, final ArrayList<T> b) {
+ if (null == a) {
+ return null == b;
+ }
+ return a.equals(b);
+ }
+
@Override
public int hashCode() {
if (mHashCode == 0) {
diff --git a/native/jni/Android.mk b/native/jni/Android.mk
index 3a2073f03..6003a6f64 100644
--- a/native/jni/Android.mk
+++ b/native/jni/Android.mk
@@ -48,7 +48,7 @@ LOCAL_SRC_FILES := \
ifeq ($(FLAG_DO_PROFILE), true)
$(warning Making profiling version of native library)
- LOCAL_CFLAGS += -DFLAG_DO_PROFILE -funwind-tables -fno-inline
+ LOCAL_CFLAGS += -DFLAG_DO_PROFILE -funwind-tables
else # FLAG_DO_PROFILE
ifeq ($(FLAG_DBG), true)
$(warning Making debug version of native library)
diff --git a/native/jni/com_android_inputmethod_keyboard_ProximityInfo.cpp b/native/jni/com_android_inputmethod_keyboard_ProximityInfo.cpp
index f88d37ec9..80419b335 100644
--- a/native/jni/com_android_inputmethod_keyboard_ProximityInfo.cpp
+++ b/native/jni/com_android_inputmethod_keyboard_ProximityInfo.cpp
@@ -25,13 +25,13 @@
namespace latinime {
-static jlong latinime_Keyboard_setProximityInfo(JNIEnv *env, jclass clazz, jstring localeJStr,
+static jlong latinime_Keyboard_setProximityInfo(JNIEnv *env, jclass clazz,
jint displayWidth, jint displayHeight, jint gridWidth, jint gridHeight,
jint mostCommonkeyWidth, jint mostCommonkeyHeight, jintArray proximityChars, jint keyCount,
jintArray keyXCoordinates, jintArray keyYCoordinates, jintArray keyWidths,
jintArray keyHeights, jintArray keyCharCodes, jfloatArray sweetSpotCenterXs,
jfloatArray sweetSpotCenterYs, jfloatArray sweetSpotRadii) {
- ProximityInfo *proximityInfo = new ProximityInfo(env, localeJStr, displayWidth, displayHeight,
+ ProximityInfo *proximityInfo = new ProximityInfo(env, displayWidth, displayHeight,
gridWidth, gridHeight, mostCommonkeyWidth, mostCommonkeyHeight, proximityChars,
keyCount, keyXCoordinates, keyYCoordinates, keyWidths, keyHeights, keyCharCodes,
sweetSpotCenterXs, sweetSpotCenterYs, sweetSpotRadii);
@@ -46,7 +46,7 @@ static void latinime_Keyboard_release(JNIEnv *env, jclass clazz, jlong proximity
static const JNINativeMethod sMethods[] = {
{
const_cast<char *>("setProximityInfoNative"),
- const_cast<char *>("(Ljava/lang/String;IIIIII[II[I[I[I[I[I[F[F[F)J"),
+ const_cast<char *>("(IIIIII[II[I[I[I[I[I[F[F[F)J"),
reinterpret_cast<void *>(latinime_Keyboard_setProximityInfo)
},
{
diff --git a/native/jni/src/suggest/core/layout/additional_proximity_chars.cpp b/native/jni/src/suggest/core/layout/additional_proximity_chars.cpp
index 34b8b37b0..8b39f7da5 100644
--- a/native/jni/src/suggest/core/layout/additional_proximity_chars.cpp
+++ b/native/jni/src/suggest/core/layout/additional_proximity_chars.cpp
@@ -19,7 +19,7 @@
namespace latinime {
// TODO: Stop using hardcoded additional proximity characters.
// TODO: Have proximity character informations in each language's binary dictionary.
-const char *AdditionalProximityChars::LOCALE_EN_US = "en";
+const int AdditionalProximityChars::LOCALE_EN_US[LOCALE_EN_US_SIZE] = { 'e', 'n' };
const int AdditionalProximityChars::EN_US_ADDITIONAL_A[EN_US_ADDITIONAL_A_SIZE] = {
'e', 'i', 'o', 'u'
diff --git a/native/jni/src/suggest/core/layout/additional_proximity_chars.h b/native/jni/src/suggest/core/layout/additional_proximity_chars.h
index a88fd6cea..2260be9bd 100644
--- a/native/jni/src/suggest/core/layout/additional_proximity_chars.h
+++ b/native/jni/src/suggest/core/layout/additional_proximity_chars.h
@@ -18,6 +18,7 @@
#define LATINIME_ADDITIONAL_PROXIMITY_CHARS_H
#include <cstring>
+#include <vector>
#include "defines.h"
@@ -26,7 +27,8 @@ namespace latinime {
class AdditionalProximityChars {
private:
DISALLOW_IMPLICIT_CONSTRUCTORS(AdditionalProximityChars);
- static const char *LOCALE_EN_US;
+ static const int LOCALE_EN_US_SIZE = 2;
+ static const int LOCALE_EN_US[LOCALE_EN_US_SIZE];
static const int EN_US_ADDITIONAL_A_SIZE = 4;
static const int EN_US_ADDITIONAL_A[];
static const int EN_US_ADDITIONAL_E_SIZE = 4;
@@ -38,15 +40,22 @@ class AdditionalProximityChars {
static const int EN_US_ADDITIONAL_U_SIZE = 4;
static const int EN_US_ADDITIONAL_U[];
- AK_FORCE_INLINE static bool isEnLocale(const char *localeStr) {
- const size_t LOCALE_EN_US_SIZE = strlen(LOCALE_EN_US);
- return localeStr && strlen(localeStr) >= LOCALE_EN_US_SIZE
- && strncmp(localeStr, LOCALE_EN_US, LOCALE_EN_US_SIZE) == 0;
+ AK_FORCE_INLINE static bool isEnLocale(const std::vector<int> *locale) {
+ const int NCHARS = NELEMS(LOCALE_EN_US);
+ if (locale->size() < NCHARS) {
+ return false;
+ }
+ for (int i = 0; i < NCHARS; ++i) {
+ if ((*locale)[i] != LOCALE_EN_US[i]) {
+ return false;
+ }
+ }
+ return true;
}
public:
- static int getAdditionalCharsSize(const char *const localeStr, const int c) {
- if (!isEnLocale(localeStr)) {
+ static int getAdditionalCharsSize(const std::vector<int> *locale, const int c) {
+ if (!isEnLocale(locale)) {
return 0;
}
switch (c) {
@@ -65,8 +74,8 @@ class AdditionalProximityChars {
}
}
- static const int *getAdditionalChars(const char *const localeStr, const int c) {
- if (!isEnLocale(localeStr)) {
+ static const int *getAdditionalChars(const std::vector<int> *locale, const int c) {
+ if (!isEnLocale(locale)) {
return 0;
}
switch (c) {
diff --git a/native/jni/src/suggest/core/layout/proximity_info.cpp b/native/jni/src/suggest/core/layout/proximity_info.cpp
index 4c75a188e..933a5e145 100644
--- a/native/jni/src/suggest/core/layout/proximity_info.cpp
+++ b/native/jni/src/suggest/core/layout/proximity_info.cpp
@@ -49,13 +49,13 @@ static AK_FORCE_INLINE void safeGetOrFillZeroFloatArrayRegion(JNIEnv *env, jfloa
}
}
-ProximityInfo::ProximityInfo(JNIEnv *env, const jstring localeJStr,
- const int keyboardWidth, const int keyboardHeight, const int gridWidth,
- const int gridHeight, const int mostCommonKeyWidth, const int mostCommonKeyHeight,
- const jintArray proximityChars, const int keyCount, const jintArray keyXCoordinates,
- const jintArray keyYCoordinates, const jintArray keyWidths, const jintArray keyHeights,
- const jintArray keyCharCodes, const jfloatArray sweetSpotCenterXs,
- const jfloatArray sweetSpotCenterYs, const jfloatArray sweetSpotRadii)
+ProximityInfo::ProximityInfo(JNIEnv *env, const int keyboardWidth, const int keyboardHeight,
+ const int gridWidth, const int gridHeight, const int mostCommonKeyWidth,
+ const int mostCommonKeyHeight, const jintArray proximityChars, const int keyCount,
+ const jintArray keyXCoordinates, const jintArray keyYCoordinates,
+ const jintArray keyWidths, const jintArray keyHeights, const jintArray keyCharCodes,
+ const jfloatArray sweetSpotCenterXs, const jfloatArray sweetSpotCenterYs,
+ const jfloatArray sweetSpotRadii)
: GRID_WIDTH(gridWidth), GRID_HEIGHT(gridHeight), MOST_COMMON_KEY_WIDTH(mostCommonKeyWidth),
MOST_COMMON_KEY_WIDTH_SQUARE(mostCommonKeyWidth * mostCommonKeyWidth),
NORMALIZED_SQUARED_MOST_COMMON_KEY_HYPOTENUSE(1.0f +
@@ -82,13 +82,6 @@ ProximityInfo::ProximityInfo(JNIEnv *env, const jstring localeJStr,
if (DEBUG_PROXIMITY_INFO) {
AKLOGI("Create proximity info array %d", proximityCharsLength);
}
- const jsize localeCStrUtf8Length = env->GetStringUTFLength(localeJStr);
- if (localeCStrUtf8Length >= MAX_LOCALE_STRING_LENGTH) {
- AKLOGI("Locale string length too long: length=%d", localeCStrUtf8Length);
- ASSERT(false);
- }
- memset(mLocaleStr, 0, sizeof(mLocaleStr));
- env->GetStringUTFRegion(localeJStr, 0, env->GetStringLength(localeJStr), mLocaleStr);
safeGetOrFillZeroIntArrayRegion(env, proximityChars, proximityCharsLength,
mProximityCharsArray);
safeGetOrFillZeroIntArrayRegion(env, keyXCoordinates, KEY_COUNT, mKeyXCoordinates);
diff --git a/native/jni/src/suggest/core/layout/proximity_info.h b/native/jni/src/suggest/core/layout/proximity_info.h
index d4e453736..f7c907697 100644
--- a/native/jni/src/suggest/core/layout/proximity_info.h
+++ b/native/jni/src/suggest/core/layout/proximity_info.h
@@ -18,6 +18,7 @@
#define LATINIME_PROXIMITY_INFO_H
#include <unordered_map>
+#include <vector>
#include "defines.h"
#include "jni.h"
@@ -27,9 +28,9 @@ namespace latinime {
class ProximityInfo {
public:
- ProximityInfo(JNIEnv *env, const jstring localeJStr,
- const int keyboardWidth, const int keyboardHeight, const int gridWidth,
- const int gridHeight, const int mostCommonKeyWidth, const int mostCommonKeyHeight,
+ ProximityInfo(JNIEnv *env, const int keyboardWidth, const int keyboardHeight,
+ const int gridWidth, const int gridHeight,
+ const int mostCommonKeyWidth, const int mostCommonKeyHeight,
const jintArray proximityChars, const int keyCount, const jintArray keyXCoordinates,
const jintArray keyYCoordinates, const jintArray keyWidths, const jintArray keyHeights,
const jintArray keyCharCodes, const jfloatArray sweetSpotCenterXs,
@@ -71,11 +72,11 @@ class ProximityInfo {
AK_FORCE_INLINE void initializeProximities(const int *const inputCodes,
const int *const inputXCoordinates, const int *const inputYCoordinates,
- const int inputSize, int *allInputCodes) const {
+ const int inputSize, int *allInputCodes, const std::vector<int> *locale) const {
ProximityInfoUtils::initializeProximities(inputCodes, inputXCoordinates, inputYCoordinates,
inputSize, mKeyXCoordinates, mKeyYCoordinates, mKeyWidths, mKeyHeights,
mProximityCharsArray, CELL_HEIGHT, CELL_WIDTH, GRID_WIDTH, MOST_COMMON_KEY_WIDTH,
- KEY_COUNT, mLocaleStr, &mLowerCodePointToKeyMap, allInputCodes);
+ KEY_COUNT, locale, &mLowerCodePointToKeyMap, allInputCodes);
}
AK_FORCE_INLINE int getKeyIndexOf(const int c) const {
@@ -103,9 +104,6 @@ class ProximityInfo {
const int KEYBOARD_HEIGHT;
const float KEYBOARD_HYPOTENUSE;
const bool HAS_TOUCH_POSITION_CORRECTION_DATA;
- // Assuming locale strings such as en_US, sr-Latn etc.
- static const int MAX_LOCALE_STRING_LENGTH = 10;
- char mLocaleStr[MAX_LOCALE_STRING_LENGTH];
int *mProximityCharsArray;
int mKeyXCoordinates[MAX_KEY_COUNT_IN_A_KEYBOARD];
int mKeyYCoordinates[MAX_KEY_COUNT_IN_A_KEYBOARD];
diff --git a/native/jni/src/suggest/core/layout/proximity_info_state.cpp b/native/jni/src/suggest/core/layout/proximity_info_state.cpp
index 91469e26d..d43a0026a 100644
--- a/native/jni/src/suggest/core/layout/proximity_info_state.cpp
+++ b/native/jni/src/suggest/core/layout/proximity_info_state.cpp
@@ -42,7 +42,7 @@ int ProximityInfoState::getPrimaryOriginalCodePointAt(const int index) const {
void ProximityInfoState::initInputParams(const int pointerId, const float maxPointToKeyLength,
const ProximityInfo *proximityInfo, const int *const inputCodes, const int inputSize,
const int *const xCoordinates, const int *const yCoordinates, const int *const times,
- const int *const pointerIds, const bool isGeometric) {
+ const int *const pointerIds, const bool isGeometric, const std::vector<int> *locale) {
ASSERT(isGeometric || (inputSize < MAX_WORD_LENGTH));
mIsContinuousSuggestionPossible = (mHasBeenUpdatedByGeometricInput != isGeometric) ?
false : ProximityInfoStateUtils::checkAndReturnIsContinuousSuggestionPossible(
@@ -66,7 +66,7 @@ void ProximityInfoState::initInputParams(const int pointerId, const float maxPoi
if (!isGeometric && pointerId == 0) {
mProximityInfo->initializeProximities(inputCodes, xCoordinates, yCoordinates,
- inputSize, mInputProximities);
+ inputSize, mInputProximities, locale);
}
///////////////////////
diff --git a/native/jni/src/suggest/core/layout/proximity_info_state.h b/native/jni/src/suggest/core/layout/proximity_info_state.h
index e6180fe17..a2d663544 100644
--- a/native/jni/src/suggest/core/layout/proximity_info_state.h
+++ b/native/jni/src/suggest/core/layout/proximity_info_state.h
@@ -37,7 +37,8 @@ class ProximityInfoState {
void initInputParams(const int pointerId, const float maxPointToKeyLength,
const ProximityInfo *proximityInfo, const int *const inputCodes,
const int inputSize, const int *xCoordinates, const int *yCoordinates,
- const int *const times, const int *const pointerIds, const bool isGeometric);
+ const int *const times, const int *const pointerIds, const bool isGeometric,
+ const std::vector<int> *locale);
/////////////////////////////////////////
// Defined here //
diff --git a/native/jni/src/suggest/core/layout/proximity_info_utils.h b/native/jni/src/suggest/core/layout/proximity_info_utils.h
index 178aada2d..79d0615b8 100644
--- a/native/jni/src/suggest/core/layout/proximity_info_utils.h
+++ b/native/jni/src/suggest/core/layout/proximity_info_utils.h
@@ -19,6 +19,7 @@
#include <cmath>
#include <unordered_map>
+#include <vector>
#include "defines.h"
#include "suggest/core/layout/additional_proximity_chars.h"
@@ -51,7 +52,7 @@ class ProximityInfoUtils {
const int *const keyYCoordinates, const int *const keyWidths, const int *keyHeights,
const int *const proximityCharsArray, const int cellHeight, const int cellWidth,
const int gridWidth, const int mostCommonKeyWidth, const int keyCount,
- const char *const localeStr,
+ const std::vector<int> *locale,
const std::unordered_map<int, int> *const codeToKeyMap, int *inputProximities) {
// Initialize
// - mInputCodes
@@ -64,7 +65,7 @@ class ProximityInfoUtils {
int *proximities = &inputProximities[i * MAX_PROXIMITY_CHARS_SIZE];
calculateProximities(keyXCoordinates, keyYCoordinates, keyWidths, keyHeights,
proximityCharsArray, cellHeight, cellWidth, gridWidth, mostCommonKeyWidth,
- keyCount, x, y, primaryKey, localeStr, codeToKeyMap, proximities);
+ keyCount, x, y, primaryKey, locale, codeToKeyMap, proximities);
}
if (DEBUG_PROXIMITY_CHARS) {
@@ -143,7 +144,7 @@ class ProximityInfoUtils {
const int *const keyYCoordinates, const int *const keyWidths, const int *keyHeights,
const int *const proximityCharsArray, const int cellHeight, const int cellWidth,
const int gridWidth, const int mostCommonKeyWidth, const int keyCount,
- const int x, const int y, const int primaryKey, const char *const localeStr,
+ const int x, const int y, const int primaryKey, const std::vector<int> *locale,
const std::unordered_map<int, int> *const codeToKeyMap, int *proximities) {
const int mostCommonKeyWidthSquare = mostCommonKeyWidth * mostCommonKeyWidth;
int insertPos = 0;
@@ -177,7 +178,7 @@ class ProximityInfoUtils {
}
}
const int additionalProximitySize =
- AdditionalProximityChars::getAdditionalCharsSize(localeStr, primaryKey);
+ AdditionalProximityChars::getAdditionalCharsSize(locale, primaryKey);
if (additionalProximitySize > 0) {
proximities[insertPos++] = ADDITIONAL_PROXIMITY_CHAR_DELIMITER_CODE;
if (insertPos >= MAX_PROXIMITY_CHARS_SIZE) {
@@ -188,7 +189,7 @@ class ProximityInfoUtils {
}
const int *additionalProximityChars =
- AdditionalProximityChars::getAdditionalChars(localeStr, primaryKey);
+ AdditionalProximityChars::getAdditionalChars(locale, primaryKey);
for (int j = 0; j < additionalProximitySize; ++j) {
const int ac = additionalProximityChars[j];
int k = 0;
diff --git a/native/jni/src/suggest/core/session/dic_traverse_session.cpp b/native/jni/src/suggest/core/session/dic_traverse_session.cpp
index 4d7505a55..b4d01d0f0 100644
--- a/native/jni/src/suggest/core/session/dic_traverse_session.cpp
+++ b/native/jni/src/suggest/core/session/dic_traverse_session.cpp
@@ -69,8 +69,12 @@ void DicTraverseSession::initializeProximityInfoStates(const int *const inputCod
for (int i = 0; i < maxPointerCount; ++i) {
mProximityInfoStates[i].initInputParams(i, maxSpatialDistance, getProximityInfo(),
inputCodePoints, inputSize, inputXs, inputYs, times, pointerIds,
- maxPointerCount == MAX_POINTER_COUNT_G
- /* TODO: this is a hack. fix proximity info state */);
+ // Right now the line below is trying to figure out whether this is a gesture by
+ // looking at the pointer count and assuming whatever is above the cutoff is
+ // a gesture and whatever is below is type. This is hacky and incorrect, we
+ // should pass the correct information instead.
+ maxPointerCount == MAX_POINTER_COUNT_G,
+ getDictionaryStructurePolicy()->getHeaderStructurePolicy()->getLocale());
mInputSize += mProximityInfoStates[i].size();
}
}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/NepaliRomanized.java b/tests/src/com/android/inputmethod/keyboard/layout/NepaliRomanized.java
index 640b63dd6..299cb61b2 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/NepaliRomanized.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/NepaliRomanized.java
@@ -33,26 +33,17 @@ public final class NepaliRomanized extends LayoutBase {
private static final String LAYOUT_NAME = "nepali_romanized";
public NepaliRomanized(final Locale locale) {
- super(new NepaliRomanizedCustomizer(locale), HindiSymbols.class, SymbolsShifted.class);
+ super(new NepaliCustomizer(locale), HindiSymbols.class, SymbolsShifted.class);
}
@Override
public String getName() { return LAYOUT_NAME; }
- private static class NepaliRomanizedCustomizer extends NepaliCustomizer {
- NepaliRomanizedCustomizer(final Locale locale) { super(locale); }
-
- @Override
- public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
- return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS;
- }
- }
-
@Override
- ExpectedKey[][] getCommonAlphabetLayout(boolean isPhone) { return ALPHABET_COMMON; }
+ ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) { return ALPHABET_COMMON; }
@Override
- ExpectedKey[][] getCommonAlphabetShiftLayout(boolean isPhone, final int elementId) {
+ ExpectedKey[][] getCommonAlphabetShiftLayout(final boolean isPhone, final int elementId) {
if (elementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED) {
return getCommonAlphabetLayout(isPhone);
}
@@ -118,11 +109,9 @@ public final class NepaliRomanized extends LayoutBase {
// U+0928: "न" DEVANAGARI LETTER NA
// U+092E: "म" DEVANAGARI LETTER MA
"\u0937", "\u0921", "\u091A", "\u0935", "\u092C", "\u0928", "\u092E",
- // U+0964: "।" DEVANAGARI DANDA
- // U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA
- key("\u0964", moreKey("\u093D")),
// U+094D: "्" DEVANAGARI SIGN VIRAMA
- key(SIGN_VIRAMA, "\u094D"))
+ // U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA
+ key(SIGN_VIRAMA, "\u094D", moreKey("\u093D")))
.build();
private static final ExpectedKey[][] ALPHABET_SHIFTED_COMMON = new ExpectedKeyboardBuilder()
@@ -172,8 +161,6 @@ public final class NepaliRomanized extends LayoutBase {
// U+0902: "ं" DEVANAGARI SIGN ANUSVARA
key(SIGN_ANUSVARA, "\u0902"),
// U+0919: "ङ" DEVANAGARI LETTER NGA
- "\u0919",
- // U+094D: "्" DEVANAGARI SIGN VIRAMA
- key(SIGN_VIRAMA, "\u094D"))
+ "\u0919")
.build();
}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/NepaliTraditional.java b/tests/src/com/android/inputmethod/keyboard/layout/NepaliTraditional.java
index 17e226f77..0a2bea342 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/NepaliTraditional.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/NepaliTraditional.java
@@ -43,82 +43,20 @@ public final class NepaliTraditional extends LayoutBase {
NepaliTraditionalCustomizer(final Locale locale) { super(locale); }
@Override
- public ExpectedKey[] getRightShiftKeys(final boolean isPhone) { return EMPTY_KEYS; }
-
- @Override
- public ExpectedKey[] getKeysRightToSpacebar(final boolean isPhone) {
- if (isPhone) {
- // U+094D: "्" DEVANAGARI SIGN VIRAMA
- return joinKeys(key(SIGN_VIRAMA, "\u094D", PHONE_PUNCTUATION_MORE_KEYS));
- }
- return super.getKeysRightToSpacebar(isPhone);
+ public ExpectedKey[] getRightShiftKeys(final boolean isPhone) {
+ return isPhone ? EMPTY_KEYS : EXCLAMATION_AND_QUESTION_MARKS;
}
}
@Override
- ExpectedKey[][] getCommonAlphabetLayout(boolean isPhone) {
- final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(ALPHABET_COMMON);
- if (isPhone) {
- builder.addKeysOnTheRightOfRow(3,
- // U+0947: "े" DEVANAGARI VOWEL SIGN E
- // U+0903: "ः‍" DEVANAGARI SIGN VISARGA
- // U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA
- key(VOWEL_SIGN_E, "\u0947", joinMoreKeys(
- moreKey(SIGN_VISARGA, "\u0903"), "\u093D")),
- // U+0964: "।" DEVANAGARI DANDA
- "\u0964",
- // U+0930: "र" DEVANAGARI LETTER RA
- // U+0930/U+0941: "रु" DEVANAGARI LETTER RA/DEVANAGARI VOWEL SIGN U
- key("\u0930", moreKey("\u0930\u0941")));
- } else {
- builder.addKeysOnTheRightOfRow(3,
- // U+0903: "ः" DEVANAGARI SIGN VISARGA
- // U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA
- key(SIGN_VISARGA, "\u0903", moreKey("\u093D")),
- // U+0947: "े" DEVANAGARI VOWEL SIGN E
- key(VOWEL_SIGN_E, "\u0947"),
- // U+0964: "।" DEVANAGARI DANDA
- "\u0964",
- // U+0930: "र" DEVANAGARI LETTER RA
- key("\u0930", moreKey("!")),
- // U+094D: "्" DEVANAGARI SIGN VIRAMA
- key(SIGN_VIRAMA, "\u094D", moreKey("?")));
- }
- return builder.build();
- }
+ ExpectedKey[][] getCommonAlphabetLayout(final boolean isPhone) { return ALPHABET_COMMON; }
@Override
- ExpectedKey[][] getCommonAlphabetShiftLayout(boolean isPhone, final int elementId) {
+ ExpectedKey[][] getCommonAlphabetShiftLayout(final boolean isPhone, final int elementId) {
if (elementId == KeyboardId.ELEMENT_ALPHABET_AUTOMATIC_SHIFTED) {
return getCommonAlphabetLayout(isPhone);
}
- final ExpectedKeyboardBuilder builder = new ExpectedKeyboardBuilder(
- ALPHABET_SHIFTED_COMMON);
- if (isPhone) {
- builder.addKeysOnTheRightOfRow(3,
- // U+0902: "ं" DEVANAGARI SIGN ANUSVARA
- key(SIGN_ANUSVARA, "\u0902"),
- // U+0919: "ङ" DEVANAGARI LETTER NGA
- "\u0919",
- // U+0948: "ै" DEVANAGARI VOWEL SIGN AI
- // U+0936/U+094D/U+0930:
- // "श्र" DEVANAGARI LETTER SHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA
- key(VOWEL_SIGN_AI, "\u0948", moreKey("\u0936\u094D\u0930")));
- } else {
- builder.addKeysOnTheRightOfRow(3,
- // U+0902: "ं" DEVANAGARI SIGN ANUSVARA
- key(SIGN_ANUSVARA, "\u0902"),
- // U+0919: "ङ" DEVANAGARI LETTER NGA
- "\u0919",
- // U+0948: "ै" DEVANAGARI VOWEL SIGN AI
- // U+0936/U+094D/U+0930:
- // "श्र" DEVANAGARI LETTER SHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA
- key(VOWEL_SIGN_AI, "\u0948", moreKey("\u0936\u094D\u0930")),
- // U+0930/U+0941: "रु" DEVANAGARI LETTER RA/DEVANAGARI VOWEL SIGN U
- key("\u0930\u0941", moreKey("!")),
- "?");
- }
- return builder.build();
+ return ALPHABET_SHIFTED_COMMON;
}
private static final ExpectedKey[][] ALPHABET_COMMON = new ExpectedKeyboardBuilder()
@@ -181,7 +119,17 @@ public final class NepaliTraditional extends LayoutBase {
// U+0916: "ख" DEVANAGARI LETTER KHA
// U+0926: "द" DEVANAGARI LETTER DA
// U+0932: "ल" DEVANAGARI LETTER LA
- "\u0936", "\u0939", "\u0905", "\u0916", "\u0926", "\u0932")
+ "\u0936", "\u0939", "\u0905", "\u0916", "\u0926", "\u0932",
+ // U+0947: "े" DEVANAGARI VOWEL SIGN E
+ // U+0903: "ः‍" DEVANAGARI SIGN VISARGA
+ // U+093D: "ऽ" DEVANAGARI SIGN AVAGRAHA
+ key(VOWEL_SIGN_E, "\u0947", joinMoreKeys(
+ moreKey(SIGN_VISARGA, "\u0903"), "\u093D")),
+ // U+094D: "्" DEVANAGARI SIGN VIRAMA
+ key(SIGN_VIRAMA, "\u094D"),
+ // U+0930: "र" DEVANAGARI LETTER RA
+ // U+0930/U+0941: "रु" DEVANAGARI LETTER RA/DEVANAGARI VOWEL SIGN U
+ key("\u0930", moreKey("\u0930\u0941")))
.build();
private static final ExpectedKey[][] ALPHABET_SHIFTED_COMMON = new ExpectedKeyboardBuilder()
@@ -264,6 +212,14 @@ public final class NepaliTraditional extends LayoutBase {
key(VOWEL_SIGN_AU, "\u094C"),
// U+0926/U+094D/U+092F:
// "द्य" DEVANAGARI LETTER DA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER YA
- "\u0926\u094D\u092F")
+ "\u0926\u094D\u092F",
+ // U+0902: "ं" DEVANAGARI SIGN ANUSVARA
+ key(SIGN_ANUSVARA, "\u0902"),
+ // U+0919: "ङ" DEVANAGARI LETTER NGA
+ "\u0919",
+ // U+0948: "ै" DEVANAGARI VOWEL SIGN AI
+ // U+0936/U+094D/U+0930:
+ // "श्र" DEVANAGARI LETTER SHA/DEVANAGARI SIGN VIRAMA/DEVANAGARI LETTER RA
+ key(VOWEL_SIGN_AI, "\u0948", moreKey("\u0936\u094D\u0930")))
.build();
}
diff --git a/tests/src/com/android/inputmethod/keyboard/layout/customizer/NepaliCustomizer.java b/tests/src/com/android/inputmethod/keyboard/layout/customizer/NepaliCustomizer.java
index 7a00d80a0..264322f54 100644
--- a/tests/src/com/android/inputmethod/keyboard/layout/customizer/NepaliCustomizer.java
+++ b/tests/src/com/android/inputmethod/keyboard/layout/customizer/NepaliCustomizer.java
@@ -38,8 +38,30 @@ public class NepaliCustomizer extends DevanagariCustomizer {
return joinKeys(LANGUAGE_SWITCH_KEY, SPACE_KEY, key(ZWNJ_KEY, ZWJ_KEY));
}
+ @Override
+ public ExpectedKey[] getKeysRightToSpacebar(final boolean isPhone) {
+ // U+0964: "।" DEVANAGARI DANDA
+ final ExpectedKey periodKey = key("\u0964", getPunctuationMoreKeys(isPhone));
+ return joinKeys(periodKey);
+ }
+
+ @Override
+ public ExpectedKey[] getPunctuationMoreKeys(final boolean isPhone) {
+ return isPhone ? NEPALI_PHONE_PUNCTUATION_MORE_KEYS
+ : NEPALI_TABLET_PUNCTUATION_MORE_KEYS;
+ }
+
// U+0930/U+0941/U+002E "रु." NEPALESE RUPEE SIGN
private static final ExpectedKey CURRENCY_NEPALI = key("\u0930\u0941\u002E",
Symbols.DOLLAR_SIGN, Symbols.CENT_SIGN, Symbols.EURO_SIGN, Symbols.POUND_SIGN,
Symbols.YEN_SIGN, Symbols.PESO_SIGN);
+
+ // Punctuation more keys for phone form factor.
+ private static final ExpectedKey[] NEPALI_PHONE_PUNCTUATION_MORE_KEYS = joinKeys(
+ ".", ",", "?", "!", "#", ")", "(", "/", ";",
+ "'", "@", ":", "-", "\"", "+", "%", "&");
+ // Punctuation more keys for tablet form factor.
+ private static final ExpectedKey[] NEPALI_TABLET_PUNCTUATION_MORE_KEYS = joinKeys(
+ ".", ",", "'", "#", ")", "(", "/", ";",
+ "@", ":", "-", "\"", "+", "%", "&");
}
diff --git a/tests/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderEncoderTests.java b/tests/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderEncoderTests.java
index df137377c..a3e36ee69 100644
--- a/tests/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderEncoderTests.java
+++ b/tests/src/com/android/inputmethod/latin/makedict/BinaryDictDecoderEncoderTests.java
@@ -715,11 +715,13 @@ public class BinaryDictDecoderEncoderTests extends AndroidTestCase {
}
assertTrue(shortcutList.isEmpty());
}
- for (final WeightedString bigramTarget : wordProperty.getBigrams()) {
- final String word1 = bigramTarget.mWord;
- final Pair<String, String> bigram = new Pair<>(word0, word1);
- assertTrue(bigramSet.contains(bigram));
- bigramSet.remove(bigram);
+ if (wordProperty.mHasNgrams) {
+ for (final WeightedString bigramTarget : wordProperty.getBigrams()) {
+ final String word1 = bigramTarget.mWord;
+ final Pair<String, String> bigram = new Pair<>(word0, word1);
+ assertTrue(bigramSet.contains(bigram));
+ bigramSet.remove(bigram);
+ }
}
token = result.mNextToken;
} while (token != 0);
diff --git a/tools/make-keyboard-text/res/values-ne-rNP/donottranslate-more-keys.xml b/tools/make-keyboard-text/res/values-ne-rNP/donottranslate-more-keys.xml
index 97c50d1b8..56b594f3a 100644
--- a/tools/make-keyboard-text/res/values-ne-rNP/donottranslate-more-keys.xml
+++ b/tools/make-keyboard-text/res/values-ne-rNP/donottranslate-more-keys.xml
@@ -57,4 +57,9 @@
<string name="additional_morekeys_symbols_0">0</string>
<!-- U+0930/U+0941/U+002E "रु." NEPALESE RUPEE SIGN -->
<string name="keyspec_currency">&#x0930;&#x0941;&#x002E;</string>
+ <!-- U+0964: "।" DEVANAGARI DANDA -->
+ <string name="keyspec_period">&#x0964;</string>
+ <string name="keyspec_tablet_period">&#x0964;</string>
+ <string name="morekeys_period">"!autoColumnOrder!9,.,\\,,?,!,#,),(,/,;,',@,:,-,\",+,\\%,&amp;"</string>
+ <string name="morekeys_tablet_period">"!autoColumnOrder!8,.,\\,,',#,),(,/,;,@,:,-,\",+,\\%,&amp;"</string>
</resources>