aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
Diffstat (limited to 'java')
-rw-r--r--java/res/xml-bg/keyboard_set.xml42
-rw-r--r--java/res/xml-sw600dp/kbd_rows_bulgarian.xml138
-rw-r--r--java/res/xml-sw768dp/kbd_rows_bulgarian.xml122
-rw-r--r--java/res/xml/kbd_bulgarian.xml26
-rw-r--r--java/res/xml/kbd_rows_bulgarian.xml128
-rw-r--r--java/res/xml/method.xml10
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/MoreKeySpecParser.java47
7 files changed, 493 insertions, 20 deletions
diff --git a/java/res/xml-bg/keyboard_set.xml b/java/res/xml-bg/keyboard_set.xml
new file mode 100644
index 000000000..a789de630
--- /dev/null
+++ b/java/res/xml-bg/keyboard_set.xml
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, 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.
+*/
+-->
+
+<KeyboardSet
+ xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+ latin:keyboardLocale="bg">
+ <Element
+ latin:elementName="alphabet"
+ latin:elementKeyboard="@xml/kbd_bulgarian" />
+ <Element
+ latin:elementName="symbols"
+ latin:elementKeyboard="@xml/kbd_symbols" />
+ <Element
+ latin:elementName="symbolsShift"
+ latin:elementKeyboard="@xml/kbd_symbols_shift" />
+ <Element
+ latin:elementName="phone"
+ latin:elementKeyboard="@xml/kbd_phone" />
+ <Element
+ latin:elementName="phoneShift"
+ latin:elementKeyboard="@xml/kbd_phone_shift" />
+ <Element
+ latin:elementName="number"
+ latin:elementKeyboard="@xml/kbd_number" />
+</KeyboardSet>
diff --git a/java/res/xml-sw600dp/kbd_rows_bulgarian.xml b/java/res/xml-sw600dp/kbd_rows_bulgarian.xml
new file mode 100644
index 000000000..746398d49
--- /dev/null
+++ b/java/res/xml-sw600dp/kbd_rows_bulgarian.xml
@@ -0,0 +1,138 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, 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="7.692%p"
+ >
+ <Key
+ latin:keyLabel="ч" />
+ <Key
+ latin:keyLabel="ш" />
+ <Key
+ latin:keyLabel="е" />
+ <Key
+ latin:keyLabel="р" />
+ <Key
+ latin:keyLabel="т" />
+ <Key
+ latin:keyLabel="ъ" />
+ <Key
+ latin:keyLabel="у" />
+ <Key
+ latin:keyLabel="и"
+ latin:moreKeys="ѝ" />
+ <Key
+ latin:keyLabel="о" />
+ <Key
+ latin:keyLabel="п" />
+ <Key
+ latin:keyLabel="я" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyWidth="fillBoth" />
+ </Row>
+ <Row
+ latin:keyWidth="7.692%p"
+ >
+ <Key
+ latin:keyLabel="а"
+ latin:keyXPos="4.000%p" />
+ <Key
+ latin:keyLabel="с" />
+ <Key
+ latin:keyLabel="д" />
+ <Key
+ latin:keyLabel="ф" />
+ <Key
+ latin:keyLabel="г" />
+ <Key
+ latin:keyLabel="х" />
+ <Key
+ latin:keyLabel="й" />
+ <Key
+ latin:keyLabel="к" />
+ <Key
+ latin:keyLabel="л" />
+ <Key
+ latin:keyLabel="щ" />
+ <Key
+ latin:keyLabel="ь" />
+ <Key
+ latin:keyStyle="returnKeyStyle"
+ latin:keyWidth="fillBoth" />
+ </Row>
+ <Row
+ latin:keyWidth="7.692%p"
+ >
+ <Key
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyWidth="10.000%p" />
+ <Key
+ latin:keyLabel="з" />
+ <Key
+ latin:keyLabel="ж" />
+ <Key
+ latin:keyLabel="ц" />
+ <Key
+ latin:keyLabel="в" />
+ <Key
+ latin:keyLabel="б" />
+ <Key
+ latin:keyLabel="н" />
+ <Key
+ latin:keyLabel="м" />
+ <Key
+ latin:keyLabel="ю" />
+ <switch>
+ <case
+ latin:mode="email"
+ >
+ <Key
+ latin:keyLabel="," />
+ <Key
+ latin:keyLabel="." />
+ </case>
+ <default>
+ <Key
+ latin:keyLabel=","
+ latin:keyLabelFlags="hasUppercaseLetter"
+ latin:keyHintLabel="!"
+ latin:moreKeys="!" />
+ <Key
+ latin:keyLabel="."
+ latin:keyLabelFlags="hasUppercaseLetter"
+ latin:keyHintLabel="\?"
+ latin:moreKeys="\?" />
+ </default>
+ </switch>
+ <Spacer
+ latin:keyXPos="-10.000%p"
+ latin:keyWidth="0%p" />
+ <include
+ latin:keyboardLayout="@xml/kbd_row3_smiley" />
+ </Row>
+ <include
+ latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+</merge>
diff --git a/java/res/xml-sw768dp/kbd_rows_bulgarian.xml b/java/res/xml-sw768dp/kbd_rows_bulgarian.xml
new file mode 100644
index 000000000..42b3da525
--- /dev/null
+++ b/java/res/xml-sw768dp/kbd_rows_bulgarian.xml
@@ -0,0 +1,122 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, 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="7.333%p"
+ >
+ <Key
+ latin:keyStyle="tabKeyStyle"
+ latin:keyLabelFlags="alignLeft" />
+ <Key
+ latin:keyLabel="ч" />
+ <Key
+ latin:keyLabel="ш" />
+ <Key
+ latin:keyLabel="е" />
+ <Key
+ latin:keyLabel="р" />
+ <Key
+ latin:keyLabel="т" />
+ <Key
+ latin:keyLabel="ъ" />
+ <Key
+ latin:keyLabel="у" />
+ <Key
+ latin:keyLabel="и"
+ latin:moreKeys="ѝ" />
+ <Key
+ latin:keyLabel="о" />
+ <Key
+ latin:keyLabel="п" />
+ <Key
+ latin:keyLabel="я" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyWidth="fillBoth" />
+ </Row>
+ <Row
+ latin:keyWidth="7.194%p"
+ >
+ <Key
+ latin:keyStyle="toSymbolKeyStyle"
+ latin:keyLabelFlags="alignLeft"
+ latin:keyWidth="9.375%p" />
+ <Key
+ latin:keyLabel="а" />
+ <Key
+ latin:keyLabel="с" />
+ <Key
+ latin:keyLabel="д" />
+ <Key
+ latin:keyLabel="ф" />
+ <Key
+ latin:keyLabel="г" />
+ <Key
+ latin:keyLabel="х" />
+ <Key
+ latin:keyLabel="й" />
+ <Key
+ latin:keyLabel="к" />
+ <Key
+ latin:keyLabel="л" />
+ <Key
+ latin:keyLabel="щ" />
+ <Key
+ latin:keyLabel="ь" />
+ <Key
+ latin:keyStyle="returnKeyStyle"
+ latin:keyWidth="fillBoth" />
+ </Row>
+ <Row
+ latin:keyWidth="7.125%p"
+ >
+ <Key
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyWidth="14.375%p" />
+ <Key
+ latin:keyLabel="з" />
+ <Key
+ latin:keyLabel="ж" />
+ <Key
+ latin:keyLabel="ц" />
+ <Key
+ latin:keyLabel="в" />
+ <Key
+ latin:keyLabel="б" />
+ <Key
+ latin:keyLabel="н" />
+ <Key
+ latin:keyLabel="м" />
+ <Key
+ latin:keyLabel="ю" />
+ <include
+ latin:keyboardLayout="@xml/kbd_row3_comma_period" />
+ <Key
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyWidth="fillBoth" />
+ </Row>
+ <include
+ latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+</merge>
diff --git a/java/res/xml/kbd_bulgarian.xml b/java/res/xml/kbd_bulgarian.xml
new file mode 100644
index 000000000..f11438322
--- /dev/null
+++ b/java/res/xml/kbd_bulgarian.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, 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"
+>
+ <include
+ latin:keyboardLayout="@xml/kbd_rows_bulgarian" />
+</Keyboard>
diff --git a/java/res/xml/kbd_rows_bulgarian.xml b/java/res/xml/kbd_rows_bulgarian.xml
new file mode 100644
index 000000000..7b18361a9
--- /dev/null
+++ b/java/res/xml/kbd_rows_bulgarian.xml
@@ -0,0 +1,128 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2012, 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="9.091%p"
+ >
+ <Key
+ latin:keyLabel="ч"
+ latin:keyHintLabel="1"
+ latin:moreKeys="1" />
+ <Key
+ latin:keyLabel="ш"
+ latin:keyHintLabel="2"
+ latin:moreKeys="2" />
+ <Key
+ latin:keyLabel="е"
+ latin:keyHintLabel="3"
+ latin:moreKeys="3" />
+ <Key
+ latin:keyLabel="р"
+ latin:keyHintLabel="4"
+ latin:moreKeys="4" />
+ <Key
+ latin:keyLabel="т"
+ latin:keyHintLabel="5"
+ latin:moreKeys="5" />
+ <Key
+ latin:keyLabel="ъ"
+ latin:keyHintLabel="6"
+ latin:moreKeys="6" />
+ <Key
+ latin:keyLabel="у"
+ latin:keyHintLabel="7"
+ latin:moreKeys="7" />
+ <Key
+ latin:keyLabel="и"
+ latin:keyHintLabel="8"
+ latin:moreKeys="8,ѝ" />
+ <Key
+ latin:keyLabel="о"
+ latin:keyHintLabel="9"
+ latin:moreKeys="9" />
+ <Key
+ latin:keyLabel="п"
+ latin:keyHintLabel="0"
+ latin:moreKeys="0" />
+ <Key
+ latin:keyLabel="я"
+ latin:keyWidth="fillRight" />
+ </Row>
+ <Row
+ latin:keyWidth="9.091%p"
+ >
+ <Key
+ latin:keyLabel="а" />
+ <Key
+ latin:keyLabel="с" />
+ <Key
+ latin:keyLabel="д" />
+ <Key
+ latin:keyLabel="ф" />
+ <Key
+ latin:keyLabel="г" />
+ <Key
+ latin:keyLabel="х" />
+ <Key
+ latin:keyLabel="й" />
+ <Key
+ latin:keyLabel="к" />
+ <Key
+ latin:keyLabel="л" />
+ <Key
+ latin:keyLabel="щ" />
+ <Key
+ latin:keyLabel="ь"
+ latin:keyWidth="fillRight" />
+ </Row>
+ <Row
+ latin:keyWidth="9.091%p"
+ >
+ <Key
+ latin:keyStyle="shiftKeyStyle"
+ latin:keyWidth="13.636%p" />
+ <Key
+ latin:keyLabel="з" />
+ <Key
+ latin:keyLabel="ж" />
+ <Key
+ latin:keyLabel="ц" />
+ <Key
+ latin:keyLabel="в" />
+ <Key
+ latin:keyLabel="б" />
+ <Key
+ latin:keyLabel="н" />
+ <Key
+ latin:keyLabel="м" />
+ <Key
+ latin:keyLabel="ю" />
+ <Key
+ latin:keyStyle="deleteKeyStyle"
+ latin:keyWidth="fillRight" />
+ </Row>
+ <include
+ latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+</merge>
diff --git a/java/res/xml/method.xml b/java/res/xml/method.xml
index 6c827363c..650f91b9b 100644
--- a/java/res/xml/method.xml
+++ b/java/res/xml/method.xml
@@ -20,8 +20,8 @@
<!-- The attributes in this XML file provide configuration information -->
<!-- for the Input Method Manager. -->
-<!-- Keyboard: en_US, en_GB, ar, be, cs, da, de, de(QWERTY), es, es_US, et, fi, fr, fr_CA, fr_CH,
- hr, hu, it, iw, ky, lt, lv, nb, nl, pl, pt, ro, ru, sk, sl, sr, sv, tr, uk, vi -->
+<!-- Keyboard: en_US, en_GB, ar, be, bg, cs, da, de, de(QWERTY), es, es_US, et, fi, fr, fr_CA,
+ fr_CH, hr, hu, it, iw, ky, lt, lv, nb, nl, pl, pt, ro, ru, sk, sl, sr, sv, tr, uk, vi -->
<!-- TODO: use <lang>_keyboard icon instead of a common keyboard icon. -->
<!-- If IME doesn't have an applicable subtype, the first subtype will be used as a default
subtype.-->
@@ -54,6 +54,12 @@
/>
<subtype android:icon="@drawable/ic_subtype_keyboard"
android:label="@string/subtype_generic"
+ android:imeSubtypeLocale="bg"
+ android:imeSubtypeMode="keyboard"
+ android:imeSubtypeExtraValue="SupportTouchPositionCorrection"
+ />
+ <subtype android:icon="@drawable/ic_subtype_keyboard"
+ android:label="@string/subtype_generic"
android:imeSubtypeLocale="cs"
android:imeSubtypeMode="keyboard"
android:imeSubtypeExtraValue="AsciiCapable,SupportTouchPositionCorrection"
diff --git a/java/src/com/android/inputmethod/keyboard/internal/MoreKeySpecParser.java b/java/src/com/android/inputmethod/keyboard/internal/MoreKeySpecParser.java
index 93be31ed9..c7d226d6e 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/MoreKeySpecParser.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/MoreKeySpecParser.java
@@ -53,8 +53,9 @@ public class MoreKeySpecParser {
private static boolean hasIcon(String moreKeySpec) {
if (moreKeySpec.startsWith(PREFIX_ICON)) {
final int end = indexOfLabelEnd(moreKeySpec, 0);
- if (end > 0)
+ if (end > 0) {
return true;
+ }
throw new MoreKeySpecParserError("outputText or code not specified: " + moreKeySpec);
}
return false;
@@ -70,8 +71,9 @@ public class MoreKeySpecParser {
}
private static String parseEscape(String text) {
- if (text.indexOf(ESCAPE) < 0)
+ if (text.indexOf(ESCAPE) < 0) {
return text;
+ }
final int length = text.length();
final StringBuilder sb = new StringBuilder();
for (int pos = 0; pos < length; pos++) {
@@ -88,8 +90,9 @@ public class MoreKeySpecParser {
private static int indexOfLabelEnd(String moreKeySpec, int start) {
if (moreKeySpec.indexOf(ESCAPE, start) < 0) {
final int end = moreKeySpec.indexOf(LABEL_END, start);
- if (end == 0)
+ if (end == 0) {
throw new MoreKeySpecParserError(LABEL_END + " at " + start + ": " + moreKeySpec);
+ }
return end;
}
final int length = moreKeySpec.length();
@@ -105,55 +108,62 @@ public class MoreKeySpecParser {
}
public static String getLabel(String moreKeySpec) {
- if (hasIcon(moreKeySpec))
+ if (hasIcon(moreKeySpec)) {
return null;
+ }
final int end = indexOfLabelEnd(moreKeySpec, 0);
final String label = (end > 0) ? parseEscape(moreKeySpec.substring(0, end))
: parseEscape(moreKeySpec);
- if (TextUtils.isEmpty(label))
+ if (TextUtils.isEmpty(label)) {
throw new MoreKeySpecParserError("Empty label: " + moreKeySpec);
+ }
return label;
}
public static String getOutputText(String moreKeySpec) {
- if (hasCode(moreKeySpec))
+ if (hasCode(moreKeySpec)) {
return null;
+ }
final int end = indexOfLabelEnd(moreKeySpec, 0);
if (end > 0) {
- if (indexOfLabelEnd(moreKeySpec, end + 1) >= 0)
+ if (indexOfLabelEnd(moreKeySpec, end + 1) >= 0) {
throw new MoreKeySpecParserError("Multiple " + LABEL_END + ": "
+ moreKeySpec);
+ }
final String outputText = parseEscape(moreKeySpec.substring(end + LABEL_END.length()));
- if (!TextUtils.isEmpty(outputText))
+ if (!TextUtils.isEmpty(outputText)) {
return outputText;
+ }
throw new MoreKeySpecParserError("Empty outputText: " + moreKeySpec);
}
final String label = getLabel(moreKeySpec);
- if (label == null)
+ if (label == null) {
throw new MoreKeySpecParserError("Empty label: " + moreKeySpec);
+ }
// Code is automatically generated for one letter label. See {@link getCode()}.
- if (label.length() == 1)
- return null;
- return label;
+ return (label.length() == 1) ? null : label;
}
public static int getCode(Resources res, String moreKeySpec) {
if (hasCode(moreKeySpec)) {
final int end = indexOfLabelEnd(moreKeySpec, 0);
- if (indexOfLabelEnd(moreKeySpec, end + 1) >= 0)
+ if (indexOfLabelEnd(moreKeySpec, end + 1) >= 0) {
throw new MoreKeySpecParserError("Multiple " + LABEL_END + ": " + moreKeySpec);
+ }
final int resId = getResourceId(res,
moreKeySpec.substring(end + LABEL_END.length() + PREFIX_AT.length()));
final int code = res.getInteger(resId);
return code;
}
- if (indexOfLabelEnd(moreKeySpec, 0) > 0)
- return Keyboard.CODE_UNSPECIFIED;
+ if (indexOfLabelEnd(moreKeySpec, 0) > 0) {
+ return Keyboard.CODE_OUTPUT_TEXT;
+ }
final String label = getLabel(moreKeySpec);
// Code is automatically generated for one letter label.
- if (label != null && label.length() == 1)
+ if (label != null && label.length() == 1) {
return label.charAt(0);
- return Keyboard.CODE_UNSPECIFIED;
+ }
+ return Keyboard.CODE_OUTPUT_TEXT;
}
public static int getIconId(String moreKeySpec) {
@@ -173,8 +183,9 @@ public class MoreKeySpecParser {
private static int getResourceId(Resources res, String name) {
String packageName = res.getResourcePackageName(R.string.english_ime_name);
int resId = res.getIdentifier(name, null, packageName);
- if (resId == 0)
+ if (resId == 0) {
throw new MoreKeySpecParserError("Unknown resource: " + name);
+ }
return resId;
}