aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/res/values-iw-sw600dp/config-spacing-and-punctuations.xml25
-rw-r--r--java/res/values-iw/config-spacing-and-punctuations.xml25
-rw-r--r--java/res/values-sw600dp/config-spacing-and-punctuations.xml2
-rw-r--r--java/res/values/config-spacing-and-punctuations.xml2
-rw-r--r--java/res/xml-sw600dp/keys_pcqwerty2_right3.xml2
-rw-r--r--java/res/xml-sw600dp/keys_pcqwerty3_right2.xml2
-rw-r--r--java/res/xml-sw600dp/keys_pcqwerty4_right3.xml2
-rw-r--r--java/res/xml-sw600dp/rowkeys_pcqwerty1.xml177
-rw-r--r--java/res/xml-sw600dp/rows_pcqwerty.xml15
-rw-r--r--java/res/xml/keys_pcqwerty2_right3.xml2
-rw-r--r--java/res/xml/keys_pcqwerty3_right2.xml2
-rw-r--r--java/res/xml/keys_pcqwerty4_right3.xml2
-rw-r--r--java/res/xml/rowkeys_pcqwerty1.xml125
-rw-r--r--java/res/xml/rows_pcqwerty.xml15
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java2
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java15
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java31
-rw-r--r--java/src/com/android/inputmethod/latin/BinaryDictionary.java8
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java19
-rw-r--r--java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java39
-rw-r--r--java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java5
21 files changed, 277 insertions, 240 deletions
diff --git a/java/res/values-iw-sw600dp/config-spacing-and-punctuations.xml b/java/res/values-iw-sw600dp/config-spacing-and-punctuations.xml
new file mode 100644
index 000000000..b562b18db
--- /dev/null
+++ b/java/res/values-iw-sw600dp/config-spacing-and-punctuations.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- The all letters need to be mirrored are found at
+ http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
+ <!-- Symbols that are suggested between words -->
+ <string name="suggested_punctuations" translatable="false">:,;,\",(|),)|(,\',-,/,@,_</string>
+</resources>
diff --git a/java/res/values-iw/config-spacing-and-punctuations.xml b/java/res/values-iw/config-spacing-and-punctuations.xml
new file mode 100644
index 000000000..9a9e6ee7a
--- /dev/null
+++ b/java/res/values-iw/config-spacing-and-punctuations.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2014, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+** http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <!-- The all letters need to be mirrored are found at
+ http://www.unicode.org/Public/6.1.0/ucd/BidiMirroring.txt -->
+ <!-- Symbols that are suggested between words -->
+ <string name="suggested_punctuations" translatable="false">!,?,\\,,:,;,\",(|),)|(,\',-,/,@,_</string>
+</resources>
diff --git a/java/res/values-sw600dp/config-spacing-and-punctuations.xml b/java/res/values-sw600dp/config-spacing-and-punctuations.xml
index 9c12cf49a..4d19412a3 100644
--- a/java/res/values-sw600dp/config-spacing-and-punctuations.xml
+++ b/java/res/values-sw600dp/config-spacing-and-punctuations.xml
@@ -19,5 +19,5 @@
-->
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<!-- Symbols that are suggested between words -->
- <string name="suggested_punctuations" translatable="false">:,;,\",!text/keyspec_left_parenthesis,!text/keyspec_right_parenthesis,\',-,/,@,_</string>
+ <string name="suggested_punctuations" translatable="false">:,;,\",(,),\',-,/,@,_</string>
</resources>
diff --git a/java/res/values/config-spacing-and-punctuations.xml b/java/res/values/config-spacing-and-punctuations.xml
index 1dd2e1f6b..ad5663d9b 100644
--- a/java/res/values/config-spacing-and-punctuations.xml
+++ b/java/res/values/config-spacing-and-punctuations.xml
@@ -21,7 +21,7 @@
<!-- TODO: these settings depend on the language. They should be put either in the dictionary
header, or in the subtype maybe? -->
<!-- Symbols that are suggested between words -->
- <string name="suggested_punctuations" translatable="false">!,?,\\,,:,;,\",!text/keyspec_left_parenthesis,!text/keyspec_right_parenthesis,\',-,/,@,_</string>
+ <string name="suggested_punctuations" translatable="false">!,?,\\,,:,;,\",(,),\',-,/,@,_</string>
<!-- Symbols that are normally preceded by a space (used to add an auto-space before these) -->
<string name="symbols_preceded_by_space" translatable="false">([{&amp;</string>
<!-- Symbols that are normally followed by a space (used to add an auto-space after these) -->
diff --git a/java/res/xml-sw600dp/keys_pcqwerty2_right3.xml b/java/res/xml-sw600dp/keys_pcqwerty2_right3.xml
index ab99ec574..76ac6bbdd 100644
--- a/java/res/xml-sw600dp/keys_pcqwerty2_right3.xml
+++ b/java/res/xml-sw600dp/keys_pcqwerty2_right3.xml
@@ -23,7 +23,7 @@
>
<switch>
<case
- latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+ latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
>
<Key
latin:keySpec="["
diff --git a/java/res/xml-sw600dp/keys_pcqwerty3_right2.xml b/java/res/xml-sw600dp/keys_pcqwerty3_right2.xml
index 54433964f..f18fb507c 100644
--- a/java/res/xml-sw600dp/keys_pcqwerty3_right2.xml
+++ b/java/res/xml-sw600dp/keys_pcqwerty3_right2.xml
@@ -23,7 +23,7 @@
>
<switch>
<case
- latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+ latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
>
<Key
latin:keySpec=";"
diff --git a/java/res/xml-sw600dp/keys_pcqwerty4_right3.xml b/java/res/xml-sw600dp/keys_pcqwerty4_right3.xml
index c95ca2ee7..ff1a2c85c 100644
--- a/java/res/xml-sw600dp/keys_pcqwerty4_right3.xml
+++ b/java/res/xml-sw600dp/keys_pcqwerty4_right3.xml
@@ -23,7 +23,7 @@
>
<switch>
<case
- latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+ latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
>
<Key
latin:keySpec=","
diff --git a/java/res/xml-sw600dp/rowkeys_pcqwerty1.xml b/java/res/xml-sw600dp/rowkeys_pcqwerty1.xml
index 5389e2201..5c7506ea6 100644
--- a/java/res/xml-sw600dp/rowkeys_pcqwerty1.xml
+++ b/java/res/xml-sw600dp/rowkeys_pcqwerty1.xml
@@ -21,87 +21,98 @@
<merge
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
- <Key
- latin:keySpec="`"
- latin:keyHintLabel="~"
- latin:additionalMoreKeys="~"
- latin:keyStyle="hasShiftedLetterHintStyle" />
- <Key
- latin:keySpec="1"
- latin:keyHintLabel="!"
- latin:additionalMoreKeys="!"
- latin:keyStyle="hasShiftedLetterHintStyle"
- latin:moreKeys="!text/more_keys_for_exclamation,!text/more_keys_for_symbols_1" />
- <Key
- latin:keySpec="2"
- latin:keyHintLabel="\@"
- latin:additionalMoreKeys="\@"
- latin:keyStyle="hasShiftedLetterHintStyle"
- latin:moreKeys="!text/more_keys_for_symbols_2" />
- <Key
- latin:keySpec="3"
- latin:keyHintLabel="\#"
- latin:additionalMoreKeys="\#"
- latin:keyStyle="hasShiftedLetterHintStyle"
- latin:moreKeys="!text/more_keys_for_symbols_3" />
- <Key
- latin:keySpec="4"
- latin:keyHintLabel="$"
- latin:additionalMoreKeys="$"
- latin:keyStyle="hasShiftedLetterHintStyle"
- latin:moreKeys="!text/more_keys_for_symbols_4" />
- <Key
- latin:keySpec="5"
- latin:keyHintLabel="%"
- latin:additionalMoreKeys="\\%"
- latin:keyStyle="hasShiftedLetterHintStyle"
- latin:moreKeys="!text/more_keys_for_symbols_5" />
- <Key
- latin:keySpec="6"
- latin:keyHintLabel="^"
- latin:additionalMoreKeys="^"
- latin:keyStyle="hasShiftedLetterHintStyle"
- latin:moreKeys="!text/more_keys_for_symbols_6" />
- <Key
- latin:keySpec="7"
- latin:keyHintLabel="&amp;"
- latin:additionalMoreKeys="&amp;"
- latin:keyStyle="hasShiftedLetterHintStyle"
- latin:moreKeys="!text/more_keys_for_symbols_7" />
- <Key
- latin:keySpec="8"
- latin:keyHintLabel="*"
- latin:additionalMoreKeys="*"
- latin:keyStyle="hasShiftedLetterHintStyle"
- latin:moreKeys="!text/more_keys_for_symbols_8" />
- <Key
- latin:keySpec="9"
- latin:keyHintLabel="("
- latin:additionalMoreKeys="("
- latin:keyStyle="hasShiftedLetterHintStyle"
- latin:moreKeys="!text/more_keys_for_symbols_9" />
- <Key
- latin:keySpec="0"
- latin:keyHintLabel=")"
- latin:additionalMoreKeys=")"
- latin:keyStyle="hasShiftedLetterHintStyle"
- latin:moreKeys="!text/more_keys_for_symbols_0" />
- <!-- U+2013: "–" EN DASH
- U+2014: "—" EM DASH
- U+00B7: "·" MIDDLE DOT -->
- <Key
- latin:keySpec="-"
- latin:keyHintLabel="_"
- latin:additionalMoreKeys="_"
- latin:keyStyle="hasShiftedLetterHintStyle"
- latin:moreKeys="&#x2013;,&#x2014;,&#x00B7;" />
- <!-- U+221E: "∞" INFINITY
- U+2260: "≠" NOT EQUAL TO
- U+2248: "≈" ALMOST EQUAL TO -->
- <Key
- latin:keySpec="="
- latin:keyHintLabel="+"
- latin:additionalMoreKeys="+"
- latin:keyStyle="hasShiftedLetterHintStyle"
- latin:moreKeys="&#x221E;,&#x2260;,&#x2248;" />
+ <switch>
+ <case
+ latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
+ >
+ <Key
+ latin:keySpec="`"
+ latin:keyHintLabel="~"
+ latin:additionalMoreKeys="~"
+ latin:keyStyle="hasShiftedLetterHintStyle" />
+ <Key
+ latin:keySpec="1"
+ latin:keyHintLabel="!"
+ latin:additionalMoreKeys="!"
+ latin:keyStyle="hasShiftedLetterHintStyle"
+ latin:moreKeys="!text/more_keys_for_exclamation,!text/more_keys_for_symbols_1" />
+ <Key
+ latin:keySpec="2"
+ latin:keyHintLabel="\@"
+ latin:additionalMoreKeys="\@"
+ latin:keyStyle="hasShiftedLetterHintStyle"
+ latin:moreKeys="!text/more_keys_for_symbols_2" />
+ <Key
+ latin:keySpec="3"
+ latin:keyHintLabel="\#"
+ latin:additionalMoreKeys="\#"
+ latin:keyStyle="hasShiftedLetterHintStyle"
+ latin:moreKeys="!text/more_keys_for_symbols_3" />
+ <Key
+ latin:keySpec="4"
+ latin:keyHintLabel="$"
+ latin:additionalMoreKeys="$"
+ latin:keyStyle="hasShiftedLetterHintStyle"
+ latin:moreKeys="!text/more_keys_for_symbols_4" />
+ <Key
+ latin:keySpec="5"
+ latin:keyHintLabel="%"
+ latin:additionalMoreKeys="\\%"
+ latin:keyStyle="hasShiftedLetterHintStyle"
+ latin:moreKeys="!text/more_keys_for_symbols_5" />
+ <Key
+ latin:keySpec="6"
+ latin:keyHintLabel="^"
+ latin:additionalMoreKeys="^"
+ latin:keyStyle="hasShiftedLetterHintStyle"
+ latin:moreKeys="!text/more_keys_for_symbols_6" />
+ <Key
+ latin:keySpec="7"
+ latin:keyHintLabel="&amp;"
+ latin:additionalMoreKeys="&amp;"
+ latin:keyStyle="hasShiftedLetterHintStyle"
+ latin:moreKeys="!text/more_keys_for_symbols_7" />
+ <Key
+ latin:keySpec="8"
+ latin:keyHintLabel="*"
+ latin:additionalMoreKeys="*"
+ latin:keyStyle="hasShiftedLetterHintStyle"
+ latin:moreKeys="!text/more_keys_for_symbols_8" />
+ <Key
+ latin:keySpec="9"
+ latin:keyHintLabel="("
+ latin:additionalMoreKeys="("
+ latin:keyStyle="hasShiftedLetterHintStyle"
+ latin:moreKeys="!text/more_keys_for_symbols_9" />
+ <Key
+ latin:keySpec="0"
+ latin:keyHintLabel=")"
+ latin:additionalMoreKeys=")"
+ latin:keyStyle="hasShiftedLetterHintStyle"
+ latin:moreKeys="!text/more_keys_for_symbols_0" />
+ <!-- U+2013: "–" EN DASH
+ U+2014: "—" EM DASH
+ U+00B7: "·" MIDDLE DOT -->
+ <Key
+ latin:keySpec="-"
+ latin:keyHintLabel="_"
+ latin:additionalMoreKeys="_"
+ latin:keyStyle="hasShiftedLetterHintStyle"
+ latin:moreKeys="&#x2013;,&#x2014;,&#x00B7;" />
+ <!-- U+221E: "∞" INFINITY
+ U+2260: "≠" NOT EQUAL TO
+ U+2248: "≈" ALMOST EQUAL TO -->
+ <Key
+ latin:keySpec="="
+ latin:keyHintLabel="+"
+ latin:additionalMoreKeys="+"
+ latin:keyStyle="hasShiftedLetterHintStyle"
+ latin:moreKeys="&#x221E;,&#x2260;,&#x2248;" />
+ </case>
+ <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted" -->
+ <default>
+ <include
+ latin:keyboardLayout="@xml/rowkeys_pcqwerty1_shift" />
+ </default>
+ </switch>
</merge>
diff --git a/java/res/xml-sw600dp/rows_pcqwerty.xml b/java/res/xml-sw600dp/rows_pcqwerty.xml
index b503d839d..73b7e473e 100644
--- a/java/res/xml-sw600dp/rows_pcqwerty.xml
+++ b/java/res/xml-sw600dp/rows_pcqwerty.xml
@@ -26,19 +26,8 @@
<Row
latin:keyWidth="7.0%p"
>
- <switch>
- <case
- latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
- >
- <include
- latin:keyboardLayout="@xml/rowkeys_pcqwerty1" />
- </case>
- <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" -->
- <default>
- <include
- latin:keyboardLayout="@xml/rowkeys_pcqwerty1_shift" />
- </default>
- </switch>
+ <include
+ latin:keyboardLayout="@xml/rowkeys_pcqwerty1" />
<Key
latin:keyStyle="deleteKeyStyle"
latin:keyWidth="fillRight" />
diff --git a/java/res/xml/keys_pcqwerty2_right3.xml b/java/res/xml/keys_pcqwerty2_right3.xml
index 9e62b09c2..b188cffab 100644
--- a/java/res/xml/keys_pcqwerty2_right3.xml
+++ b/java/res/xml/keys_pcqwerty2_right3.xml
@@ -23,7 +23,7 @@
>
<switch>
<case
- latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+ latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
>
<Key
latin:keySpec="["
diff --git a/java/res/xml/keys_pcqwerty3_right2.xml b/java/res/xml/keys_pcqwerty3_right2.xml
index d889216c0..8a1f60fae 100644
--- a/java/res/xml/keys_pcqwerty3_right2.xml
+++ b/java/res/xml/keys_pcqwerty3_right2.xml
@@ -23,7 +23,7 @@
>
<switch>
<case
- latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+ latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
>
<Key
latin:keySpec=";"
diff --git a/java/res/xml/keys_pcqwerty4_right3.xml b/java/res/xml/keys_pcqwerty4_right3.xml
index f32d80908..6beba2041 100644
--- a/java/res/xml/keys_pcqwerty4_right3.xml
+++ b/java/res/xml/keys_pcqwerty4_right3.xml
@@ -23,7 +23,7 @@
>
<switch>
<case
- latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
+ latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
>
<Key
latin:keySpec=","
diff --git a/java/res/xml/rowkeys_pcqwerty1.xml b/java/res/xml/rowkeys_pcqwerty1.xml
index fdb50729b..36957335e 100644
--- a/java/res/xml/rowkeys_pcqwerty1.xml
+++ b/java/res/xml/rowkeys_pcqwerty1.xml
@@ -21,61 +21,72 @@
<merge
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
- <Key
- latin:keySpec="`"
- latin:additionalMoreKeys="~" />
- <Key
- latin:keySpec="1"
- latin:additionalMoreKeys="!,!text/more_keys_for_exclamation"
- latin:moreKeys="!text/more_keys_for_symbols_1" />
- <Key
- latin:keySpec="2"
- latin:additionalMoreKeys="\@"
- latin:moreKeys="!text/more_keys_for_symbols_2" />
- <Key
- latin:keySpec="3"
- latin:additionalMoreKeys="\#"
- latin:moreKeys="!text/more_keys_for_symbols_3" />
- <Key
- latin:keySpec="4"
- latin:additionalMoreKeys="$"
- latin:moreKeys="!text/more_keys_for_symbols_4" />
- <Key
- latin:keySpec="5"
- latin:additionalMoreKeys="\\%"
- latin:moreKeys="!text/more_keys_for_symbols_5" />
- <Key
- latin:keySpec="6"
- latin:additionalMoreKeys="^"
- latin:moreKeys="!text/more_keys_for_symbols_6" />
- <Key
- latin:keySpec="7"
- latin:additionalMoreKeys="&amp;"
- latin:moreKeys="!text/more_keys_for_symbols_7" />
- <Key
- latin:keySpec="8"
- latin:additionalMoreKeys="*"
- latin:moreKeys="!text/more_keys_for_symbols_8" />
- <Key
- latin:keySpec="9"
- latin:additionalMoreKeys="("
- latin:moreKeys="!text/more_keys_for_symbols_9" />
- <Key
- latin:keySpec="0"
- latin:additionalMoreKeys=")"
- latin:moreKeys="!text/more_keys_for_symbols_0" />
- <!-- U+2013: "–" EN DASH
- U+2014: "—" EM DASH
- U+00B7: "·" MIDDLE DOT -->
- <Key
- latin:keySpec="-"
- latin:additionalMoreKeys="_"
- latin:moreKeys="&#x2013;,&#x2014;,&#x00B7;" />
- <!-- U+221E: "∞" INFINITY
- U+2260: "≠" NOT EQUAL TO
- U+2248: "≈" ALMOST EQUAL TO -->
- <Key
- latin:keySpec="="
- latin:additionalMoreKeys="+"
- latin:moreKeys="!fixedColumnOrder!4,&#x221E;,&#x2260;,&#x2248;,%" />
+ <switch>
+ <case
+ latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted|alphabetShiftLocked"
+ >
+ <Key
+ latin:keySpec="`"
+ latin:additionalMoreKeys="~" />
+ <Key
+ latin:keySpec="1"
+ latin:additionalMoreKeys="!,!text/more_keys_for_exclamation"
+ latin:moreKeys="!text/more_keys_for_symbols_1" />
+ <Key
+ latin:keySpec="2"
+ latin:additionalMoreKeys="\@"
+ latin:moreKeys="!text/more_keys_for_symbols_2" />
+ <Key
+ latin:keySpec="3"
+ latin:additionalMoreKeys="\#"
+ latin:moreKeys="!text/more_keys_for_symbols_3" />
+ <Key
+ latin:keySpec="4"
+ latin:additionalMoreKeys="$"
+ latin:moreKeys="!text/more_keys_for_symbols_4" />
+ <Key
+ latin:keySpec="5"
+ latin:additionalMoreKeys="\\%"
+ latin:moreKeys="!text/more_keys_for_symbols_5" />
+ <Key
+ latin:keySpec="6"
+ latin:additionalMoreKeys="^"
+ latin:moreKeys="!text/more_keys_for_symbols_6" />
+ <Key
+ latin:keySpec="7"
+ latin:additionalMoreKeys="&amp;"
+ latin:moreKeys="!text/more_keys_for_symbols_7" />
+ <Key
+ latin:keySpec="8"
+ latin:additionalMoreKeys="*"
+ latin:moreKeys="!text/more_keys_for_symbols_8" />
+ <Key
+ latin:keySpec="9"
+ latin:additionalMoreKeys="("
+ latin:moreKeys="!text/more_keys_for_symbols_9" />
+ <Key
+ latin:keySpec="0"
+ latin:additionalMoreKeys=")"
+ latin:moreKeys="!text/more_keys_for_symbols_0" />
+ <!-- U+2013: "–" EN DASH
+ U+2014: "—" EM DASH
+ U+00B7: "·" MIDDLE DOT -->
+ <Key
+ latin:keySpec="-"
+ latin:additionalMoreKeys="_"
+ latin:moreKeys="&#x2013;,&#x2014;,&#x00B7;" />
+ <!-- U+221E: "∞" INFINITY
+ U+2260: "≠" NOT EQUAL TO
+ U+2248: "≈" ALMOST EQUAL TO -->
+ <Key
+ latin:keySpec="="
+ latin:additionalMoreKeys="+"
+ latin:moreKeys="!fixedColumnOrder!4,&#x221E;,&#x2260;,&#x2248;,%" />
+ </case>
+ <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLockShifted" -->
+ <default>
+ <include
+ latin:keyboardLayout="@xml/rowkeys_pcqwerty1_shift" />
+ </default>
+ </switch>
</merge>
diff --git a/java/res/xml/rows_pcqwerty.xml b/java/res/xml/rows_pcqwerty.xml
index 884698963..a5ed74518 100644
--- a/java/res/xml/rows_pcqwerty.xml
+++ b/java/res/xml/rows_pcqwerty.xml
@@ -26,19 +26,8 @@
<Row
latin:keyWidth="7.692%p"
>
- <switch>
- <case
- latin:keyboardLayoutSetElement="alphabet|alphabetAutomaticShifted"
- >
- <include
- latin:keyboardLayout="@xml/rowkeys_pcqwerty1" />
- </case>
- <!-- keyboardLayoutSetElement="alphabetManualShifted|alphabetShiftLocked|alphabetShiftLockShifted" -->
- <default>
- <include
- latin:keyboardLayout="@xml/rowkeys_pcqwerty1_shift" />
- </default>
- </switch>
+ <include
+ latin:keyboardLayout="@xml/rowkeys_pcqwerty1" />
</Row>
<Row
latin:keyWidth="7.692%p"
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
index 66cb9e35d..2dfde9434 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java
@@ -163,7 +163,7 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions {
mCurrentSettingsValues = settingsValues;
try {
mState.onLoadKeyboard();
- mKeyboardTextsSet.setLocale(mSubtypeSwitcher.getCurrentSubtypeLocale());
+ mKeyboardTextsSet.setLocale(mSubtypeSwitcher.getCurrentSubtypeLocale(), mThemeContext);
} catch (KeyboardLayoutSetException e) {
Log.w(TAG, "loading keyboard failed: " + e.mKeyboardId, e.getCause());
LatinImeLogger.logOnException(e.mKeyboardId.toString(), e.getCause());
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
index 81a8e7196..dfe0df04c 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java
@@ -34,7 +34,6 @@ import com.android.inputmethod.keyboard.KeyboardId;
import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.R;
import com.android.inputmethod.latin.utils.ResourceUtils;
-import com.android.inputmethod.latin.utils.RunInLocale;
import com.android.inputmethod.latin.utils.StringUtils;
import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
import com.android.inputmethod.latin.utils.XmlParseUtils;
@@ -45,7 +44,6 @@ import org.xmlpull.v1.XmlPullParserException;
import java.io.IOException;
import java.util.Arrays;
-import java.util.Locale;
/**
* Keyboard Building helper.
@@ -278,18 +276,7 @@ public class KeyboardBuilder<KP extends KeyboardParams> {
params.mThemeId = keyboardAttr.getInt(R.styleable.Keyboard_themeId, 0);
params.mIconsSet.loadIcons(keyboardAttr);
- final Locale locale = params.mId.mLocale;
- params.mTextsSet.setLocale(locale);
- final RunInLocale<Void> job = new RunInLocale<Void>() {
- @Override
- protected Void job(final Resources res) {
- params.mTextsSet.loadStringResources(mContext);
- return null;
- }
- };
- // Null means the current system locale.
- job.runInLocale(mResources,
- SubtypeLocaleUtils.isNoLanguage(params.mId.mSubtype) ? null : locale);
+ params.mTextsSet.setLocale(params.mId.mLocale, mContext);
final int resourceId = keyboardAttr.getResourceId(
R.styleable.Keyboard_touchPositionCorrectionData, 0);
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
index 976038c10..044cd119e 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardTextsSet.java
@@ -23,6 +23,8 @@ import android.text.TextUtils;
import com.android.inputmethod.annotations.UsedForTesting;
import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.utils.CollectionUtils;
+import com.android.inputmethod.latin.utils.RunInLocale;
+import com.android.inputmethod.latin.utils.SubtypeLocaleUtils;
import java.util.HashMap;
import java.util.Locale;
@@ -38,23 +40,29 @@ public final class KeyboardTextsSet {
// Resource name to text map.
private HashMap<String, String> mResourceNameToTextsMap = CollectionUtils.newHashMap();
- public void setLocale(final Locale locale) {
+ public void setLocale(final Locale locale, final Context context) {
final String language = locale.getLanguage();
mTextsTable = KeyboardTextsTable.getTextsTable(language);
- }
-
- public void loadStringResources(final Context context) {
+ final Resources res = context.getResources();
final int referenceId = context.getApplicationInfo().labelRes;
- loadStringResourcesInternal(context, RESOURCE_NAMES, referenceId);
+ final String resourcePackageName = res.getResourcePackageName(referenceId);
+ final RunInLocale<Void> job = new RunInLocale<Void>() {
+ @Override
+ protected Void job(final Resources resource) {
+ loadStringResourcesInternal(res, RESOURCE_NAMES, resourcePackageName);
+ return null;
+ }
+ };
+ // Null means the current system locale.
+ job.runInLocale(res,
+ SubtypeLocaleUtils.NO_LANGUAGE.equals(locale.toString()) ? null : locale);
}
@UsedForTesting
- void loadStringResourcesInternal(final Context context, final String[] resourceNames,
- final int referenceId) {
- final Resources res = context.getResources();
- final String packageName = res.getResourcePackageName(referenceId);
+ void loadStringResourcesInternal(final Resources res, final String[] resourceNames,
+ final String resourcePackageName) {
for (final String resName : resourceNames) {
- final int resId = res.getIdentifier(resName, "string", packageName);
+ final int resId = res.getIdentifier(resName, "string", resourcePackageName);
mResourceNameToTextsMap.put(resName, res.getString(resId));
}
}
@@ -77,6 +85,7 @@ public final class KeyboardTextsSet {
return size;
}
+ // TODO: Resolve text reference when creating {@link KeyboardTextsTable} class.
public String resolveTextReference(final String rawText) {
if (TextUtils.isEmpty(rawText)) {
return null;
@@ -127,7 +136,7 @@ public final class KeyboardTextsSet {
// These texts' name should be aligned with the @string/<name> in
// values*/strings-action-keys.xml.
- private static final String[] RESOURCE_NAMES = {
+ static final String[] RESOURCE_NAMES = {
// Labels for action.
"label_go_key",
"label_send_key",
diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionary.java b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
index 544fd0319..0aa34e82e 100644
--- a/java/src/com/android/inputmethod/latin/BinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/BinaryDictionary.java
@@ -161,9 +161,9 @@ public final class BinaryDictionary extends Dictionary {
private static native int getNextWordNative(long dict, int token, int[] outCodePoints);
private static native void getSuggestionsNative(long dict, long proximityInfo,
long traverseSession, int[] xCoordinates, int[] yCoordinates, int[] times,
- int[] pointerIds, int[] inputCodePoints, int inputSize, int commitPoint,
- int[] suggestOptions, int[] prevWordCodePointArray, int[] outputSuggestionCount,
- int[] outputCodePoints, int[] outputScores, int[] outputIndices, int[] outputTypes,
+ int[] pointerIds, int[] inputCodePoints, int inputSize, int[] suggestOptions,
+ int[] prevWordCodePointArray, int[] outputSuggestionCount, int[] outputCodePoints,
+ int[] outputScores, int[] outputIndices, int[] outputTypes,
int[] outputAutoCommitFirstWordConfidence);
private static native void addUnigramWordNative(long dict, int[] word, int probability,
int[] shortcutTarget, int shortcutProbability, boolean isNotAWord,
@@ -262,7 +262,7 @@ public final class BinaryDictionary extends Dictionary {
getSuggestionsNative(mNativeDict, proximityInfo.getNativeProximityInfo(),
getTraverseSession(sessionId).getSession(), ips.getXCoordinates(),
ips.getYCoordinates(), ips.getTimes(), ips.getPointerIds(), mInputCodePoints,
- inputSize, 0 /* commitPoint */, mNativeSuggestOptions.getOptions(),
+ inputSize, mNativeSuggestOptions.getOptions(),
prevWordCodePointArray, mOutputSuggestionCount, mOutputCodePoints, mOutputScores,
mSpaceIndices, mOutputTypes, mOutputAutoCommitFirstWordConfidence);
final int count = mOutputSuggestionCount[0];
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 714ef0af3..38e386493 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -169,7 +169,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
private int mDelayUpdateSuggestions;
private int mDelayUpdateShiftState;
- private long mDoubleSpacePeriodTimerStart;
public UIHandler(final LatinIME ownerInstance) {
super(ownerInstance);
@@ -283,10 +282,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
sendMessageDelayed(obtainMessage(MSG_UPDATE_SHIFT_STATE), mDelayUpdateShiftState);
}
- public void cancelUpdateShiftState() {
- removeMessages(MSG_UPDATE_SHIFT_STATE);
- }
-
@UsedForTesting
public void removeAllMessages() {
for (int i = 0; i <= MSG_LAST; ++i) {
@@ -314,19 +309,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
obtainMessage(MSG_ON_END_BATCH_INPUT, suggestedWords).sendToTarget();
}
- public void startDoubleSpacePeriodTimer() {
- mDoubleSpacePeriodTimerStart = SystemClock.uptimeMillis();
- }
-
- public void cancelDoubleSpacePeriodTimer() {
- mDoubleSpacePeriodTimerStart = 0;
- }
-
- public boolean isAcceptingDoubleSpacePeriod() {
- return SystemClock.uptimeMillis() - mDoubleSpacePeriodTimerStart
- < getOwnerInstance().mSettings.getCurrent().mDoubleSpacePeriodTimeout;
- }
-
// Working variables for the following methods.
private boolean mIsOrientationChanging;
private boolean mPendingSuccessiveImsCallback;
@@ -882,7 +864,6 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
setNeutralSuggestionStrip();
mHandler.cancelUpdateSuggestionStrip();
- mHandler.cancelDoubleSpacePeriodTimer();
mainKeyboardView.setMainDictionaryAvailability(null != suggest
? suggest.mDictionaryFacilitator.hasMainDictionary() : false);
diff --git a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
index 62c752ef2..36b30eabe 100644
--- a/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
+++ b/java/src/com/android/inputmethod/latin/inputlogic/InputLogic.java
@@ -95,6 +95,7 @@ public final class InputLogic {
// TODO: This boolean is persistent state and causes large side effects at unexpected times.
// Find a way to remove it for readability.
private boolean mIsAutoCorrectionIndicatorOn;
+ private long mDoubleSpacePeriodCountdownStart;
public InputLogic(final LatinIME latinIME,
final SuggestionStripViewAccessor suggestionStripViewAccessor) {
@@ -137,6 +138,7 @@ public final class InputLogic {
// In some cases (namely, after rotation of the device) editorInfo.initialSelStart is lying
// so we try using some heuristics to find out about these and fix them.
mConnection.tryFixLyingCursorPosition();
+ cancelDoubleSpacePeriodCountdown();
mInputLogicHandler = new InputLogicHandler(mLatinIME, this);
}
@@ -406,7 +408,7 @@ public final class InputLogic {
// TODO: Consolidate the double-space period timer, mLastKeyTime, and the space state.
if (event.mCodePoint != Constants.CODE_SPACE) {
- handler.cancelDoubleSpacePeriodTimer();
+ cancelDoubleSpacePeriodCountdown();
}
boolean didAutoCorrect = false;
@@ -847,7 +849,7 @@ public final class InputLogic {
if (Constants.CODE_SPACE == codePoint) {
if (inputTransaction.mSettingsValues.isSuggestionsRequested()) {
- if (maybeDoubleSpacePeriod(inputTransaction.mSettingsValues, handler)) {
+ if (maybeDoubleSpacePeriod(inputTransaction)) {
inputTransaction.requireShiftUpdate(InputTransaction.SHIFT_UPDATE_NOW);
mSpaceState = SpaceState.DOUBLE;
} else if (!mSuggestedWords.isPunctuationSuggestions()) {
@@ -855,7 +857,7 @@ public final class InputLogic {
}
}
- handler.startDoubleSpacePeriodTimer();
+ startDoubleSpacePeriodCountdown(inputTransaction);
handler.postUpdateSuggestionStrip();
} else {
if (swapWeakSpace) {
@@ -952,7 +954,7 @@ public final class InputLogic {
return;
}
if (SpaceState.DOUBLE == inputTransaction.mSpaceState) {
- handler.cancelDoubleSpacePeriodTimer();
+ cancelDoubleSpacePeriodCountdown();
if (mConnection.revertDoubleSpacePeriod()) {
// No need to reset mSpaceState, it has already be done (that's why we
// receive it as a parameter)
@@ -1100,6 +1102,19 @@ public final class InputLogic {
return false;
}
+ public void startDoubleSpacePeriodCountdown(final InputTransaction inputTransaction) {
+ mDoubleSpacePeriodCountdownStart = inputTransaction.mTimestamp;
+ }
+
+ public void cancelDoubleSpacePeriodCountdown() {
+ mDoubleSpacePeriodCountdownStart = 0;
+ }
+
+ public boolean isDoubleSpacePeriodCountdownActive(final InputTransaction inputTransaction) {
+ return inputTransaction.mTimestamp - mDoubleSpacePeriodCountdownStart
+ < inputTransaction.mSettingsValues.mDoubleSpacePeriodTimeout;
+ }
+
/**
* Apply the double-space-to-period transformation if applicable.
*
@@ -1112,14 +1127,12 @@ public final class InputLogic {
* method applies the transformation and returns true. Otherwise, it does nothing and
* returns false.
*
- * @param settingsValues the current values of the settings.
+ * @param inputTransaction The transaction in progress.
* @return true if we applied the double-space-to-period transformation, false otherwise.
*/
- private boolean maybeDoubleSpacePeriod(final SettingsValues settingsValues,
- // TODO: remove this argument
- final LatinIME.UIHandler handler) {
- if (!settingsValues.mUseDoubleSpacePeriod) return false;
- if (!handler.isAcceptingDoubleSpacePeriod()) return false;
+ private boolean maybeDoubleSpacePeriod(final InputTransaction inputTransaction) {
+ if (!inputTransaction.mSettingsValues.mUseDoubleSpacePeriod) return false;
+ if (!isDoubleSpacePeriodCountdownActive(inputTransaction)) return false;
// We only do this when we see two spaces and an accepted code point before the cursor.
// The code point may be a surrogate pair but the two spaces may not, so we need 4 chars.
final CharSequence lastThree = mConnection.getTextBeforeCursor(4, 0);
@@ -1135,10 +1148,10 @@ public final class InputLogic {
Character.isSurrogatePair(lastThree.charAt(0), lastThree.charAt(1)) ?
Character.codePointAt(lastThree, 0) : lastThree.charAt(length - 3);
if (canBeFollowedByDoubleSpacePeriod(firstCodePoint)) {
- handler.cancelDoubleSpacePeriodTimer();
+ cancelDoubleSpacePeriodCountdown();
mConnection.deleteSurroundingText(2, 0);
- final String textToInsert =
- settingsValues.mSpacingAndPunctuations.mSentenceSeparatorAndSpace;
+ final String textToInsert = inputTransaction.mSettingsValues.mSpacingAndPunctuations
+ .mSentenceSeparatorAndSpace;
mConnection.commitText(textToInsert, 1);
if (ProductionFlag.USES_DEVELOPMENT_ONLY_DIAGNOSTICS) {
ResearchLogger.latinIME_maybeDoubleSpacePeriod(textToInsert,
diff --git a/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java b/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java
index 5954758aa..796921f71 100644
--- a/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java
+++ b/java/src/com/android/inputmethod/latin/settings/SpacingAndPunctuations.java
@@ -18,7 +18,6 @@ package com.android.inputmethod.latin.settings;
import android.content.res.Resources;
-import com.android.inputmethod.keyboard.internal.KeyboardTextsSet;
import com.android.inputmethod.keyboard.internal.MoreKeySpec;
import com.android.inputmethod.latin.Constants;
import com.android.inputmethod.latin.PunctuationSuggestions;
@@ -61,10 +60,8 @@ public final class SpacingAndPunctuations {
// English variants. German rules (not "German typography") also have small gotchas.
mUsesAmericanTypography = Locale.ENGLISH.getLanguage().equals(locale.getLanguage());
mUsesGermanRules = Locale.GERMAN.getLanguage().equals(locale.getLanguage());
- final KeyboardTextsSet textsSet = new KeyboardTextsSet();
- textsSet.setLocale(locale);
final String[] suggestPuncsSpec = MoreKeySpec.splitKeySpecs(
- textsSet.resolveTextReference(res.getString(R.string.suggested_punctuations)));
+ res.getString(R.string.suggested_punctuations));
mSuggestPuncList = PunctuationSuggestions.newPunctuationSuggestions(suggestPuncsSpec);
}