aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2011-07-24 16:35:54 -0700
committerTadashi G. Takaoka <takaoka@google.com>2011-07-24 18:40:46 -0700
commit7139335dcd84209285c028f5d83cb72bfbf1a966 (patch)
treeee9240a4829c98b688817eb431dcd4cd606194b0
parentbdf37898117f6322c4d48874e1b7ef1937eae696 (diff)
downloadlatinime-7139335dcd84209285c028f5d83cb72bfbf1a966.tar.gz
latinime-7139335dcd84209285c028f5d83cb72bfbf1a966.tar.xz
latinime-7139335dcd84209285c028f5d83cb72bfbf1a966.zip
Swap parenthesis-like character code on RTL keyboard
Bug: 5047217 Change-Id: I1b88484825f5c035401cf083522bf95bbee30edb
-rw-r--r--java/res/values/attrs.xml2
-rw-r--r--java/res/xml-ar/kbd_symbols.xml27
-rw-r--r--java/res/xml-ar/kbd_symbols_shift.xml27
-rw-r--r--java/res/xml-iw/kbd_symbols.xml27
-rw-r--r--java/res/xml-iw/kbd_symbols_shift.xml27
-rw-r--r--java/res/xml-sw600dp/kbd_rows_symbols.xml (renamed from java/res/xml-sw600dp/kbd_symbols.xml)4
-rw-r--r--java/res/xml-sw600dp/kbd_rows_symbols_shift.xml (renamed from java/res/xml-sw600dp/kbd_symbols_shift.xml)4
-rw-r--r--java/res/xml-sw768dp/kbd_rows_symbols.xml (renamed from java/res/xml-sw768dp/kbd_symbols.xml)6
-rw-r--r--java/res/xml-sw768dp/kbd_rows_symbols_shift.xml (renamed from java/res/xml-sw768dp/kbd_symbols_shift.xml)6
-rw-r--r--java/res/xml/kbd_rows_symbols.xml130
-rw-r--r--java/res/xml/kbd_rows_symbols_shift.xml125
-rw-r--r--java/res/xml/kbd_symbols.xml119
-rw-r--r--java/res/xml/kbd_symbols_shift.xml113
-rw-r--r--java/src/com/android/inputmethod/keyboard/Key.java40
-rw-r--r--java/src/com/android/inputmethod/keyboard/Keyboard.java11
-rw-r--r--java/src/com/android/inputmethod/keyboard/MiniKeyboard.java2
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardParser.java3
17 files changed, 448 insertions, 225 deletions
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 4c3ea83ed..e503d98a4 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -150,6 +150,8 @@
<attr name="popupKeyboardTemplate" format="reference" />
<!-- Locale of the keyboard layout -->
<attr name="keyboardLocale" format="string" />
+ <!-- True if the keyboard is Right-To-Left -->
+ <attr name="isRtlKeyboard" format="boolean" />
<!-- Icon set for key top and key preview. -->
<attr name="iconShiftKey" format="reference" />
<attr name="iconToSymbolKey" format="reference" />
diff --git a/java/res/xml-ar/kbd_symbols.xml b/java/res/xml-ar/kbd_symbols.xml
new file mode 100644
index 000000000..9e5c255d0
--- /dev/null
+++ b/java/res/xml-ar/kbd_symbols.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, 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.
+*/
+-->
+
+<Keyboard
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+ latin:isRtlKeyboard="true"
+>
+ <include
+ latin:keyboardLayout="@xml/kbd_rows_symbols" />
+</Keyboard>
diff --git a/java/res/xml-ar/kbd_symbols_shift.xml b/java/res/xml-ar/kbd_symbols_shift.xml
new file mode 100644
index 000000000..934e6f849
--- /dev/null
+++ b/java/res/xml-ar/kbd_symbols_shift.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, 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.
+*/
+-->
+
+<Keyboard
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+ latin:isRtlKeyboard="true"
+>
+ <include
+ latin:keyboardLayout="@xml/kbd_rows_symbols_shift" />
+</Keyboard>
diff --git a/java/res/xml-iw/kbd_symbols.xml b/java/res/xml-iw/kbd_symbols.xml
new file mode 100644
index 000000000..9e5c255d0
--- /dev/null
+++ b/java/res/xml-iw/kbd_symbols.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, 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.
+*/
+-->
+
+<Keyboard
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+ latin:isRtlKeyboard="true"
+>
+ <include
+ latin:keyboardLayout="@xml/kbd_rows_symbols" />
+</Keyboard>
diff --git a/java/res/xml-iw/kbd_symbols_shift.xml b/java/res/xml-iw/kbd_symbols_shift.xml
new file mode 100644
index 000000000..934e6f849
--- /dev/null
+++ b/java/res/xml-iw/kbd_symbols_shift.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, 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.
+*/
+-->
+
+<Keyboard
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+ latin:isRtlKeyboard="true"
+>
+ <include
+ latin:keyboardLayout="@xml/kbd_rows_symbols_shift" />
+</Keyboard>
diff --git a/java/res/xml-sw600dp/kbd_symbols.xml b/java/res/xml-sw600dp/kbd_rows_symbols.xml
index fc89cd3c5..9982f4575 100644
--- a/java/res/xml-sw600dp/kbd_symbols.xml
+++ b/java/res/xml-sw600dp/kbd_rows_symbols.xml
@@ -18,7 +18,7 @@
*/
-->
-<Keyboard
+<merge
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
<include
@@ -170,4 +170,4 @@
<include
latin:keyboardLayout="@xml/kbd_qwerty_f2" />
</Row>
-</Keyboard>
+</merge>
diff --git a/java/res/xml-sw600dp/kbd_symbols_shift.xml b/java/res/xml-sw600dp/kbd_rows_symbols_shift.xml
index 99b78a435..ac4b93fa4 100644
--- a/java/res/xml-sw600dp/kbd_symbols_shift.xml
+++ b/java/res/xml-sw600dp/kbd_rows_symbols_shift.xml
@@ -18,7 +18,7 @@
*/
-->
-<Keyboard
+<merge
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
<include
@@ -147,4 +147,4 @@
<include
latin:keyboardLayout="@xml/kbd_qwerty_f2" />
</Row>
-</Keyboard>
+</merge>
diff --git a/java/res/xml-sw768dp/kbd_symbols.xml b/java/res/xml-sw768dp/kbd_rows_symbols.xml
index ba0715cd4..1d5bd9d15 100644
--- a/java/res/xml-sw768dp/kbd_symbols.xml
+++ b/java/res/xml-sw768dp/kbd_rows_symbols.xml
@@ -2,7 +2,7 @@
<!--
/*
**
-** Copyright 2010, The Android Open Source Project
+** Copyright 2011, 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.
@@ -18,7 +18,7 @@
*/
-->
-<Keyboard
+<merge
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
<include
@@ -189,4 +189,4 @@
</case>
</switch>
</Row>
-</Keyboard>
+</merge>
diff --git a/java/res/xml-sw768dp/kbd_symbols_shift.xml b/java/res/xml-sw768dp/kbd_rows_symbols_shift.xml
index 1ddd64be3..2219bdc92 100644
--- a/java/res/xml-sw768dp/kbd_symbols_shift.xml
+++ b/java/res/xml-sw768dp/kbd_rows_symbols_shift.xml
@@ -2,7 +2,7 @@
<!--
/*
**
-** Copyright 2010, The Android Open Source Project
+** Copyright 2011, 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.
@@ -18,7 +18,7 @@
*/
-->
-<Keyboard
+<merge
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
>
<include
@@ -164,4 +164,4 @@
</case>
</switch>
</Row>
-</Keyboard>
+</merge>
diff --git a/java/res/xml/kbd_rows_symbols.xml b/java/res/xml/kbd_rows_symbols.xml
new file mode 100644
index 000000000..a8eeb3b91
--- /dev/null
+++ b/java/res/xml/kbd_rows_symbols.xml
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2011, 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"
+>
+ <include
+ latin:keyboardLayout="@xml/kbd_key_styles" />
+ <include
+ latin:keyboardLayout="@xml/kbd_currency_key_styles" />
+ <Row
+ latin:keyWidth="10%p"
+ >
+ <Key
+ latin:keyLabel="@string/keylabel_for_symbols_1"
+ latin:popupCharacters="@string/alternates_for_symbols_1" />
+ <Key
+ latin:keyLabel="@string/keylabel_for_symbols_2"
+ latin:popupCharacters="@string/alternates_for_symbols_2" />
+ <Key
+ latin:keyLabel="@string/keylabel_for_symbols_3"
+ latin:popupCharacters="@string/alternates_for_symbols_3" />
+ <Key
+ latin:keyLabel="@string/keylabel_for_symbols_4"
+ latin:popupCharacters="@string/alternates_for_symbols_4" />
+ <Key
+ latin:keyLabel="@string/keylabel_for_symbols_5"
+ latin:popupCharacters="@string/alternates_for_symbols_5" />
+ <Key
+ latin:keyLabel="@string/keylabel_for_symbols_6"
+ latin:popupCharacters="@string/alternates_for_symbols_6" />
+ <Key
+ latin:keyLabel="@string/keylabel_for_symbols_7"
+ latin:popupCharacters="@string/alternates_for_symbols_7" />
+ <Key
+ latin:keyLabel="@string/keylabel_for_symbols_8"
+ latin:popupCharacters="@string/alternates_for_symbols_8" />
+ <Key
+ latin:keyLabel="@string/keylabel_for_symbols_9"
+ latin:popupCharacters="@string/alternates_for_symbols_9" />
+ <Key
+ latin:keyLabel="@string/keylabel_for_symbols_0"
+ latin:popupCharacters="@string/alternates_for_symbols_0"
+ latin:keyWidth="fillRight" />
+ </Row>
+ <Row
+ latin:keyWidth="10%p"
+ >
+ <Key
+ latin:keyLabel="\@" />
+ <Key
+ latin:keyLabel="\#" />
+ <Key
+ latin:keyStyle="currencyKeyStyle" />
+ <Key
+ latin:keyLabel="@string/keylabel_for_symbols_percent"
+ latin:popupCharacters="@string/alternates_for_symbols_percent" />
+ <Key
+ latin:keyLabel="&amp;" />
+ <Key
+ latin:keyLabel="*"
+ latin:popupCharacters="†,‡,★" />
+ <Key
+ latin:keyLabel="-"
+ latin:popupCharacters="_,–,—" />
+ <Key
+ latin:keyLabel="+"
+ latin:popupCharacters="±" />
+ <Key
+ latin:keyLabel="("
+ latin:popupCharacters="[,{,&lt;" />
+ <Key
+ latin:keyLabel=")"
+ latin:popupCharacters="],},&gt;"
+ latin:keyWidth="fillRight" />
+ </Row>
+ <Row
+ latin:keyWidth="10%p"
+ >
+ <Key
+ latin:keyStyle="altKeyStyle"
+ latin:keyWidth="15%p"
+ latin:visualInsetsRight="1%p" />
+ <Key
+ latin:keyLabel="!"
+ latin:popupCharacters="¡" />
+ <!-- Note: DroidSans doesn't have double-high-reversed-quotation '\u201f' glyph. -->
+ <!-- latin:popupCharacters="“,”,„,‟,«,»" -->
+ <Key
+ latin:keyLabel="&quot;"
+ latin:popupCharacters="“,”,«,»"
+ latin:maxPopupKeyboardColumn="6" />
+ <Key
+ latin:keyLabel="\'"
+ latin:popupCharacters="‘,’,‚,‛" />
+ <Key
+ latin:keyLabel=":" />
+ <Key
+ latin:keyLabel="@string/keylabel_for_symbols_semicolon"
+ latin:popupCharacters="@string/alternates_for_symbols_semicolon" />
+ <Key
+ latin:keyLabel="/" />
+ <Key
+ latin:keyLabel="@string/keylabel_for_symbols_question"
+ latin:popupCharacters="@string/alternates_for_symbols_question" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyWidth="fillRight"
+ latin:visualInsetsLeft="1%p" />
+ </Row>
+ <include
+ latin:keyboardLayout="@xml/kbd_symbols_row4" />
+</merge>
diff --git a/java/res/xml/kbd_rows_symbols_shift.xml b/java/res/xml/kbd_rows_symbols_shift.xml
new file mode 100644
index 000000000..0706cbc78
--- /dev/null
+++ b/java/res/xml/kbd_rows_symbols_shift.xml
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2008, 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"
+>
+ <include
+ latin:keyboardLayout="@xml/kbd_key_styles" />
+ <Row
+ latin:keyWidth="10%p"
+ >
+ <Key
+ latin:keyLabel="~" />
+ <Key
+ latin:keyLabel="`" />
+ <Key
+ latin:keyLabel="|" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="•"
+ latin:popupCharacters="♪,♥,♠,♦,♣" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="√" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="π"
+ latin:popupCharacters="Π" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="÷" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="×" />
+ <Key
+ latin:keyLabel="{" />
+ <Key
+ latin:keyLabel="}"
+ latin:keyWidth="fillRight" />
+ </Row>
+ <Row
+ latin:keyWidth="10%p"
+ >
+ <Key
+ latin:keyStyle="nonSpecialBackgroundTabKeyStyle" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="£" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="¢" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="€" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="°"
+ latin:popupCharacters="′,″" />
+ <Key
+ latin:keyLabel="^"
+ latin:popupCharacters="↑,↓,←,→" />
+ <Key
+ latin:keyLabel="_" />
+ <Key
+ latin:keyLabel="="
+ latin:popupCharacters="≠,≈,∞" />
+ <Key
+ latin:keyLabel="[" />
+ <Key
+ latin:keyLabel="]"
+ latin:keyWidth="fillRight" />
+ </Row>
+ <Row
+ latin:keyWidth="10%p"
+ >
+ <Key
+ latin:keyStyle="altKeyStyle"
+ latin:keyWidth="15%p"
+ latin:visualInsetsRight="1%p" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="™" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="®" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="©" />
+ <Key
+ latin:keyStyle="nonPasswordSymbolKeyStyle"
+ latin:keyLabel="¶"
+ latin:popupCharacters="§" />
+ <Key
+ latin:keyLabel="\\" />
+ <Key
+ latin:keyLabel="&lt;"
+ latin:popupCharacters="≤,«,‹" />
+ <Key
+ latin:keyLabel="&gt;"
+ latin:popupCharacters="≥,»,›" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyWidth="fillRight"
+ latin:visualInsetsLeft="1%p" />
+ </Row>
+ <include
+ latin:keyboardLayout="@xml/kbd_symbols_shift_row4" />
+</merge>
diff --git a/java/res/xml/kbd_symbols.xml b/java/res/xml/kbd_symbols.xml
index 7bb8d0200..737f684a7 100644
--- a/java/res/xml/kbd_symbols.xml
+++ b/java/res/xml/kbd_symbols.xml
@@ -1,125 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
-/*
+/*
**
** Copyright 2008, 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
+** 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
+** 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
+** 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.
*/
-->
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyWidth="10%p"
>
<include
- latin:keyboardLayout="@xml/kbd_key_styles" />
- <include
- latin:keyboardLayout="@xml/kbd_currency_key_styles" />
- <Row>
- <Key
- latin:keyLabel="@string/keylabel_for_symbols_1"
- latin:popupCharacters="@string/alternates_for_symbols_1" />
- <Key
- latin:keyLabel="@string/keylabel_for_symbols_2"
- latin:popupCharacters="@string/alternates_for_symbols_2" />
- <Key
- latin:keyLabel="@string/keylabel_for_symbols_3"
- latin:popupCharacters="@string/alternates_for_symbols_3" />
- <Key
- latin:keyLabel="@string/keylabel_for_symbols_4"
- latin:popupCharacters="@string/alternates_for_symbols_4" />
- <Key
- latin:keyLabel="@string/keylabel_for_symbols_5"
- latin:popupCharacters="@string/alternates_for_symbols_5" />
- <Key
- latin:keyLabel="@string/keylabel_for_symbols_6"
- latin:popupCharacters="@string/alternates_for_symbols_6" />
- <Key
- latin:keyLabel="@string/keylabel_for_symbols_7"
- latin:popupCharacters="@string/alternates_for_symbols_7" />
- <Key
- latin:keyLabel="@string/keylabel_for_symbols_8"
- latin:popupCharacters="@string/alternates_for_symbols_8" />
- <Key
- latin:keyLabel="@string/keylabel_for_symbols_9"
- latin:popupCharacters="@string/alternates_for_symbols_9" />
- <Key
- latin:keyLabel="@string/keylabel_for_symbols_0"
- latin:popupCharacters="@string/alternates_for_symbols_0"
- latin:keyWidth="fillRight" />
- </Row>
- <Row>
- <Key
- latin:keyLabel="\@" />
- <Key
- latin:keyLabel="\#" />
- <Key
- latin:keyStyle="currencyKeyStyle" />
- <Key
- latin:keyLabel="@string/keylabel_for_symbols_percent"
- latin:popupCharacters="@string/alternates_for_symbols_percent" />
- <Key
- latin:keyLabel="&amp;" />
- <Key
- latin:keyLabel="*"
- latin:popupCharacters="†,‡,★" />
- <Key
- latin:keyLabel="-"
- latin:popupCharacters="_,–,—" />
- <Key
- latin:keyLabel="+"
- latin:popupCharacters="±" />
- <Key
- latin:keyLabel="("
- latin:popupCharacters="[,{,&lt;" />
- <Key
- latin:keyLabel=")"
- latin:popupCharacters="],},&gt;"
- latin:keyWidth="fillRight" />
- </Row>
- <Row>
- <Key
- latin:keyStyle="altKeyStyle"
- latin:keyWidth="15%p"
- latin:visualInsetsRight="1%p" />
- <Key
- latin:keyLabel="!"
- latin:popupCharacters="¡" />
- <!-- Note: DroidSans doesn't have double-high-reversed-quotation '\u201f' glyph. -->
- <!-- latin:popupCharacters="“,”,„,‟,«,»" -->
- <Key
- latin:keyLabel="&quot;"
- latin:popupCharacters="“,”,«,»"
- latin:maxPopupKeyboardColumn="6" />
- <Key
- latin:keyLabel="\'"
- latin:popupCharacters="‘,’,‚,‛" />
- <Key
- latin:keyLabel=":" />
- <Key
- latin:keyLabel="@string/keylabel_for_symbols_semicolon"
- latin:popupCharacters="@string/alternates_for_symbols_semicolon" />
- <Key
- latin:keyLabel="/" />
- <Key
- latin:keyLabel="@string/keylabel_for_symbols_question"
- latin:popupCharacters="@string/alternates_for_symbols_question" />
- <Key
- latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="fillRight"
- latin:visualInsetsLeft="1%p" />
- </Row>
- <include
- latin:keyboardLayout="@xml/kbd_symbols_row4" />
+ latin:keyboardLayout="@xml/kbd_rows_symbols" />
</Keyboard>
diff --git a/java/res/xml/kbd_symbols_shift.xml b/java/res/xml/kbd_symbols_shift.xml
index 61fbec2df..9c163d694 100644
--- a/java/res/xml/kbd_symbols_shift.xml
+++ b/java/res/xml/kbd_symbols_shift.xml
@@ -1,119 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
-/*
+/*
**
** Copyright 2008, 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
+** 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
+** 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
+** 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.
*/
-->
<Keyboard
xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
- latin:keyWidth="10%p"
>
<include
- latin:keyboardLayout="@xml/kbd_key_styles" />
- <Row>
- <Key
- latin:keyLabel="~" />
- <Key
- latin:keyLabel="`" />
- <Key
- latin:keyLabel="|" />
- <Key
- latin:keyStyle="nonPasswordSymbolKeyStyle"
- latin:keyLabel="•"
- latin:popupCharacters="♪,♥,♠,♦,♣" />
- <Key
- latin:keyStyle="nonPasswordSymbolKeyStyle"
- latin:keyLabel="√" />
- <Key
- latin:keyStyle="nonPasswordSymbolKeyStyle"
- latin:keyLabel="π"
- latin:popupCharacters="Π" />
- <Key
- latin:keyStyle="nonPasswordSymbolKeyStyle"
- latin:keyLabel="÷" />
- <Key
- latin:keyStyle="nonPasswordSymbolKeyStyle"
- latin:keyLabel="×" />
- <Key
- latin:keyLabel="{" />
- <Key
- latin:keyLabel="}"
- latin:keyWidth="fillRight" />
- </Row>
- <Row>
- <Key
- latin:keyStyle="nonSpecialBackgroundTabKeyStyle" />
- <Key
- latin:keyStyle="nonPasswordSymbolKeyStyle"
- latin:keyLabel="£" />
- <Key
- latin:keyStyle="nonPasswordSymbolKeyStyle"
- latin:keyLabel="¢" />
- <Key
- latin:keyStyle="nonPasswordSymbolKeyStyle"
- latin:keyLabel="€" />
- <Key
- latin:keyStyle="nonPasswordSymbolKeyStyle"
- latin:keyLabel="°"
- latin:popupCharacters="′,″" />
- <Key
- latin:keyLabel="^"
- latin:popupCharacters="↑,↓,←,→" />
- <Key
- latin:keyLabel="_" />
- <Key
- latin:keyLabel="="
- latin:popupCharacters="≠,≈,∞" />
- <Key
- latin:keyLabel="[" />
- <Key
- latin:keyLabel="]"
- latin:keyWidth="fillRight" />
- </Row>
- <Row>
- <Key
- latin:keyStyle="altKeyStyle"
- latin:keyWidth="15%p"
- latin:visualInsetsRight="1%p" />
- <Key
- latin:keyStyle="nonPasswordSymbolKeyStyle"
- latin:keyLabel="™" />
- <Key
- latin:keyStyle="nonPasswordSymbolKeyStyle"
- latin:keyLabel="®" />
- <Key
- latin:keyStyle="nonPasswordSymbolKeyStyle"
- latin:keyLabel="©" />
- <Key
- latin:keyStyle="nonPasswordSymbolKeyStyle"
- latin:keyLabel="¶"
- latin:popupCharacters="§" />
- <Key
- latin:keyLabel="\\" />
- <Key
- latin:keyLabel="&lt;"
- latin:popupCharacters="≤,«,‹" />
- <Key
- latin:keyLabel="&gt;"
- latin:popupCharacters="≥,»,›" />
- <Key
- latin:keyStyle="deleteKeyStyle"
- latin:keyWidth="fillRight"
- latin:visualInsetsLeft="1%p" />
- </Row>
- <include latin:keyboardLayout="@xml/kbd_symbols_shift_row4" />
+ latin:keyboardLayout="@xml/kbd_rows_symbols_shift" />
</Keyboard>
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index 33ab511a5..8b8930a86 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -34,6 +34,8 @@ import com.android.inputmethod.keyboard.internal.Row;
import com.android.inputmethod.latin.R;
import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
/**
* Class for describing the position and characteristics of a single key in the keyboard.
@@ -153,6 +155,38 @@ public class Key {
android.R.attr.state_pressed
};
+ // RTL parenthesis character swapping map.
+ private static final Map<Integer, Integer> sRtlParenthesisMap = new HashMap<Integer, Integer>();
+
+ static {
+ addRtlParenthesisPair('(', ')');
+ addRtlParenthesisPair('[', ']');
+ addRtlParenthesisPair('{', '}');
+ addRtlParenthesisPair('<', '>');
+ // \u00ab: LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ // \u00bb: RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ addRtlParenthesisPair('\u00ab', '\u00bb');
+ // \u2039: SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ // \u203a: SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ addRtlParenthesisPair('\u2039', '\u203a');
+ // \u2264: LESS-THAN OR EQUAL TO
+ // \u2265: GREATER-THAN OR EQUAL TO
+ addRtlParenthesisPair('\u2264', '\u2265');
+ }
+
+ private static void addRtlParenthesisPair(int left, int right) {
+ sRtlParenthesisMap.put(left, right);
+ sRtlParenthesisMap.put(right, left);
+ }
+
+ private static int getRtlParenthesisCode(int code) {
+ if (sRtlParenthesisMap.containsKey(code)) {
+ return sRtlParenthesisMap.get(code);
+ } else {
+ return code;
+ }
+ }
+
/**
* This constructor is being used only for key in popup mini keyboard.
*/
@@ -174,7 +208,8 @@ public class Key {
final String popupSpecification = popupCharacter.toString();
mLabel = PopupCharactersParser.getLabel(popupSpecification);
mOutputText = PopupCharactersParser.getOutputText(popupSpecification);
- mCode = PopupCharactersParser.getCode(res, popupSpecification);
+ final int code = PopupCharactersParser.getCode(res, popupSpecification);
+ mCode = keyboard.isRtlKeyboard() ? getRtlParenthesisCode(code) : code;
mIcon = keyboard.mIconsSet.getIcon(PopupCharactersParser.getIconId(popupSpecification));
// Horizontal gap is divided equally to both sides of the key.
mX = x + mGap / 2;
@@ -298,7 +333,8 @@ public class Key {
final int code = style.getInt(keyAttr, R.styleable.Keyboard_Key_code,
Keyboard.CODE_UNSPECIFIED);
if (code == Keyboard.CODE_UNSPECIFIED && !TextUtils.isEmpty(mLabel)) {
- mCode = mLabel.charAt(0);
+ final int firstChar = mLabel.charAt(0);
+ mCode = mKeyboard.isRtlKeyboard() ? getRtlParenthesisCode(firstChar) : firstChar;
} else if (code != Keyboard.CODE_UNSPECIFIED) {
mCode = code;
} else {
diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java
index d4a23aa15..19847c5ec 100644
--- a/java/src/com/android/inputmethod/keyboard/Keyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java
@@ -110,6 +110,9 @@ public class Keyboard {
/** Maximum column for popup keyboard */
private int mMaxPopupColumn;
+ /** True if Right-To-Left keyboard */
+ private boolean mIsRtlKeyboard;
+
/** List of shift keys in this keyboard and its icons and state */
private final List<Key> mShiftKeys = new ArrayList<Key>();
private final HashMap<Key, Drawable> mShiftedIcons = new HashMap<Key, Drawable>();
@@ -257,6 +260,14 @@ public class Keyboard {
mKeyboardHeight = height;
}
+ public boolean isRtlKeyboard() {
+ return mIsRtlKeyboard;
+ }
+
+ public void setRtlKeyboard(boolean isRtl) {
+ mIsRtlKeyboard = isRtl;
+ }
+
public int getPopupKeyboardResId() {
return mPopupKeyboardResId;
}
diff --git a/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java b/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java
index 44f9f195c..95e32755e 100644
--- a/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java
@@ -34,6 +34,8 @@ public class MiniKeyboard extends Keyboard {
// revert the above hacks and uncomment the following lines.
//setHorizontalGap(parentKeyboard.getHorizontalGap());
//setVerticalGap(parentKeyboard.getVerticalGap());
+
+ setRtlKeyboard(parentKeyboard.isRtlKeyboard());
}
public void setDefaultCoordX(int pos) {
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardParser.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardParser.java
index 6f7349915..8eae2bb42 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardParser.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardParser.java
@@ -222,8 +222,9 @@ public class KeyboardParser {
final int height = Math.max(
Math.min(keyboardHeight, maxKeyboardHeight), minKeyboardHeight);
-
keyboard.setKeyboardHeight(height);
+ keyboard.setRtlKeyboard(keyboardAttr.getBoolean(
+ R.styleable.Keyboard_isRtlKeyboard, false));
keyboard.setKeyWidth(getDimensionOrFraction(keyboardAttr,
R.styleable.Keyboard_keyWidth, displayWidth, displayWidth / 10));
keyboard.setRowHeight(getDimensionOrFraction(keyboardAttr,