aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2012-03-05 11:39:07 +0900
committerTadashi G. Takaoka <takaoka@google.com>2012-03-05 14:22:52 +0900
commite491be6e8690ffb8359887838fa12d5873346be5 (patch)
tree3612d6f703b6b328460e271bc318a8f3940ee464
parent04bc787ce7ab0e6abd1eb6a6e75464bfaed5d626 (diff)
downloadlatinime-e491be6e8690ffb8359887838fa12d5873346be5.tar.gz
latinime-e491be6e8690ffb8359887838fa12d5873346be5.tar.xz
latinime-e491be6e8690ffb8359887838fa12d5873346be5.zip
Support embedded more key
This is a followup change to Ie10b3e0b. Change-Id: I1f91d96e32357b83bd0546537d561d638b6ff0c6
-rw-r--r--java/res/xml/key_styles_number.xml7
-rw-r--r--java/res/xml/rows_number_normal.xml6
-rw-r--r--java/res/xml/rows_phone.xml6
-rw-r--r--java/src/com/android/inputmethod/keyboard/Key.java9
-rw-r--r--java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java10
5 files changed, 21 insertions, 17 deletions
diff --git a/java/res/xml/key_styles_number.xml b/java/res/xml/key_styles_number.xml
index 3627836b9..1fc21694d 100644
--- a/java/res/xml/key_styles_number.xml
+++ b/java/res/xml/key_styles_number.xml
@@ -41,14 +41,9 @@
latin:styleName="numberKeyStyle"
latin:keyLabelFlags="alignLeftOfCenter|hasHintLabel"
latin:parentStyle="numKeyStyle" />
- <!-- U+0030: "0" DIGIT ZERO
- U+002B: "+" PLUS SIGN -->
<key-style
latin:styleName="num0KeyStyle"
- latin:code="0x0030"
- latin:altCode="0x002B"
- latin:keyLabel="0 +"
- latin:keyActionFlags="enableLongPress"
+ latin:keyLabel="0"
latin:parentStyle="numberKeyStyle" />
<key-style
latin:styleName="num1KeyStyle"
diff --git a/java/res/xml/rows_number_normal.xml b/java/res/xml/rows_number_normal.xml
index 91b1fe989..6f9429cd8 100644
--- a/java/res/xml/rows_number_normal.xml
+++ b/java/res/xml/rows_number_normal.xml
@@ -111,13 +111,11 @@
<case
latin:mode="datetime"
>
- <!-- U+002F: "/" SOLIDUS
- U+003A: ":" COLON -->
+ <!-- U+002F: "/" SOLIDUS -->
<Key
latin:code="0x002F"
- latin:altCode="0x003A"
latin:keyLabel="/ :"
- latin:keyActionFlags="enableLongPress"
+ latin:moreKeys="!embeddedMoreKey!,:"
latin:keyStyle="numKeyStyle" />
</case>
<default>
diff --git a/java/res/xml/rows_phone.xml b/java/res/xml/rows_phone.xml
index 60296d061..630b24ea4 100644
--- a/java/res/xml/rows_phone.xml
+++ b/java/res/xml/rows_phone.xml
@@ -63,8 +63,12 @@
<Row>
<Key
latin:keyStyle="numPhoneToSymbolKeyStyle" />
+ <!-- U+0030: "0" DIGIT ZERO -->
<Key
- latin:keyStyle="num0KeyStyle" />
+ latin:keyStyle="num0KeyStyle"
+ latin:code="0x0030"
+ latin:keyLabel="0 +"
+ latin:moreKeys="!embeddedMoreKey!,+" />
<Key
latin:keyStyle="numSpaceKeyStyle" />
<Key
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index a719b4aa7..b8d04e0f5 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -109,10 +109,12 @@ public class Key {
private static final int MORE_KEYS_FLAGS_FIXED_COLUMN_ORDER = 0x80000000;
private static final int MORE_KEYS_FLAGS_HAS_LABELS = 0x40000000;
private static final int MORE_KEYS_FLAGS_NEEDS_DIVIDERS = 0x40000000;
+ private static final int MORE_KEYS_FLAGS_EMBEDDED_MORE_KEY = 0x20000000;
private static final String MORE_KEYS_AUTO_COLUMN_ORDER = "!autoColumnOrder!";
private static final String MORE_KEYS_FIXED_COLUMN_ORDER = "!fixedColumnOrder!";
private static final String MORE_KEYS_HAS_LABELS = "!hasLabels!";
private static final String MORE_KEYS_NEEDS_DIVIDERS = "!needsDividers!";
+ private static final String MORE_KEYS_EMBEDDED_MORE_KEY = "!embeddedMoreKey!";
/** Background type that represents different key background visual than normal one. */
public final int mBackgroundType;
@@ -258,6 +260,9 @@ public class Key {
if (KeySpecParser.getBooleanValue(moreKeys, MORE_KEYS_NEEDS_DIVIDERS)) {
moreKeysColumn |= MORE_KEYS_FLAGS_NEEDS_DIVIDERS;
}
+ if (KeySpecParser.getBooleanValue(moreKeys, MORE_KEYS_EMBEDDED_MORE_KEY)) {
+ moreKeysColumn |= MORE_KEYS_FLAGS_EMBEDDED_MORE_KEY;
+ }
mMoreKeysColumnAndFlags = moreKeysColumn;
final String[] additionalMoreKeys = style.getStringArray(
@@ -548,6 +553,10 @@ public class Key {
return (mMoreKeysColumnAndFlags & MORE_KEYS_FLAGS_NEEDS_DIVIDERS) != 0;
}
+ public boolean hasEmbeddedMoreKey() {
+ return (mMoreKeysColumnAndFlags & MORE_KEYS_FLAGS_EMBEDDED_MORE_KEY) != 0;
+ }
+
public Drawable getIcon(KeyboardIconsSet iconSet) {
return iconSet.getIconDrawable(mIconId);
}
diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java
index 0970fb5a0..8a2f89257 100644
--- a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java
@@ -41,6 +41,7 @@ import com.android.inputmethod.accessibility.AccessibleKeyboardViewProxy;
import com.android.inputmethod.deprecated.VoiceProxy;
import com.android.inputmethod.keyboard.PointerTracker.DrawingProxy;
import com.android.inputmethod.keyboard.PointerTracker.TimerProxy;
+import com.android.inputmethod.keyboard.internal.KeySpecParser;
import com.android.inputmethod.latin.LatinIME;
import com.android.inputmethod.latin.LatinImeLogger;
import com.android.inputmethod.latin.R;
@@ -480,13 +481,10 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
*/
protected boolean onLongPress(Key parentKey, PointerTracker tracker) {
final int primaryCode = parentKey.mCode;
- if (parentKey.mMoreKeys == null && !parentKey.altCodeWhileTyping()
- && parentKey.mAltCode != Keyboard.CODE_UNSPECIFIED) {
- // Long press on a key that has no more keys and is not altCodeWhileTyping, but altCode
- // is defined, such as the "0 +" key on the phone layout and the "/ :" key on the
- // datetime layout.
+ if (parentKey.hasEmbeddedMoreKey()) {
+ final int embeddedCode = KeySpecParser.getCode(getResources(), parentKey.mMoreKeys[0]);
tracker.onLongPressed();
- invokeCodeInput(parentKey.mAltCode);
+ invokeCodeInput(embeddedCode);
invokeReleaseKey(primaryCode);
KeyboardSwitcher.getInstance().hapticAndAudioFeedback(primaryCode);
return true;